import requests

# Use your existing access_token and instance_url from the previous step
access_token = 'YOUR_ACCESS_TOKEN'
instance_url = 'https://yourInstance.salesforce.com'
dashboard_id = 'YOUR_DASHBOARD_ID'
step_name = 'YOUR_STEP_NAME'  # e.g., 'step_1'

headers = {
    'Authorization': f'Bearer {access_token}',
    'Content-Type': 'application/json'
}

# Step 1: Get dashboard metadata to find step names
metadata_url = f"{instance_url}/services/data/v59.0/wave/dashboards/{dashboard_id}"
metadata_response = requests.get(metadata_url, headers=headers)
metadata_response.raise_for_status()
dashboard_metadata = metadata_response.json()

# Step 2: Execute a step to get data
query_url = f"{instance_url}/services/data/v59.0/wave/query"
query_payload = {
    "query": {
        "dashboardId": dashboard_id,
        "step": step_name
    }
}

query_response = requests.post(query_url, headers=headers, json=query_payload)
query_response.raise_for_status()
data = query_response.json()

# Print results
for row in data.get('results', []):
    print(row)