You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Redash如何在仪表盘层级切换数据源?无需逐个修改查询

How to Switch Data Sources at the Dashboard Level in Redash

Hey there! Great question—this is such a common pain point when you’ve got a bunch of queries pointing to structurally identical data sources, and I’ve walked through this with lots of Redash users before. Let’s break down the best ways to pull this off:

This is the most straightforward, built-in way to enable one-click data source switching across your dashboard. Here’s how to set it up:

  • Step 1: Parameterize your queries
    Open each query you want to include in the switch. Click the small gear icon next to the data source selector at the top of the query editor, then choose Use Parameter. Name the parameter something consistent (like target_datasource) and set a default value to your go-to data source.
  • Step 2: Standardize parameters across queries
    Make sure every query that needs to switch uses the exact same parameter name (e.g., target_datasource). This ensures the dashboard filter can link all of them together.
  • Step 3: Add a dashboard filter
    Enter dashboard edit mode (click Edit Dashboard in the top right). Add a Dropdown Filter, then select Connect to Parameter and pick your target_datasource parameter. Associate all relevant queries with this filter.
  • Step 4: Switch away!
    Now you can use the dropdown filter on your dashboard to instantly switch the data source for all linked queries—no more editing each one individually.

Method 2: Bulk Update via Redash API (For One-Time Adjustments)

If you don’t want to use parameterization, or need to bulk update existing queries to point to a new source, the Redash API is your friend:

  • First, grab your API key from your Redash profile settings.
  • Use a simple script (like the Python example below) to fetch your target queries and update their data source ID in bulk.
  • Example script snippet:
import requests

REDASH_INSTANCE_URL = "https://your-redash-url.com"
API_KEY = "your-personal-api-key"
OLD_DATASOURCE_ID = 3  # Replace with your current data source ID
NEW_DATASOURCE_ID = 5  # Replace with your target data source ID
QUERY_IDS_TO_UPDATE = [14, 17, 22]  # List of queries to adjust

for query_id in QUERY_IDS_TO_UPDATE:
    # Fetch the current query details
    get_query = requests.get(
        f"{REDASH_INSTANCE_URL}/api/queries/{query_id}",
        headers={"Authorization": f"Key {API_KEY}"}
    )
    query_details = get_query.json()
    
    # Update the data source ID
    query_details["data_source_id"] = NEW_DATASOURCE_ID
    
    # Push the updated query back to Redash
    update_query = requests.put(
        f"{REDASH_INSTANCE_URL}/api/queries/{query_id}",
        json=query_details,
        headers={"Authorization": f"Key {API_KEY}"}
    )
    print(f"Updated query {query_id}: Status {update_query.status_code}")
  • Pro tip: Always back up your queries before running bulk API edits—better safe than sorry!

Quick Notes

  • Double-check that all your data sources have identical table structures and field names. Mismatches will cause errors when switching.
  • If you’re on an older Redash version, the parameterized data source feature might not be available. Upgrading to the latest stable release will unlock this functionality.

内容的提问来源于stack exchange,提问作者bns

火山引擎 最新活动