如何将数据洞察控件传递给 BigQuery 自定义查询
Posted
技术标签:
【中文标题】如何将数据洞察控件传递给 BigQuery 自定义查询【英文标题】:How to pass Data Studio Controls to BigQuery custom query 【发布时间】:2020-09-22 00:27:21 【问题描述】:我有 Data Studio 报表,其中有日期和任务控件。
我正在使用自定义 BigQuery,并且已经通过 date between @DS_START_DATE and @DS_END_DATE
设置了日期控制,但我还需要在自定义查询中设置任务。
注意:我不能使用像 Task = @Task 这样的参数,因为 Task 是一个控件,而添加参数(@Task)是完全不同的事情。
更新:该任务不是一级过滤器。不知何故,我需要它在子查询中传递它。我可以通过@DS_START_DATE 和@DS_END_DATE 在子查询中传递日期,但不能对 Task 执行相同操作。
提前致谢:)
【问题讨论】:
【参考方案1】:除非有特定要求,否则您的设置应该可以正常工作。我假设Task
是您数据中的一个字段。当报表查看器从 Task
过滤器控件中选择一个或多个值时,Data Studio 将使用适当的过滤器子句将查询发送到 BigQuery。您可以通过在 BigQuery 中查看结算项目的查询历史记录来确认这一点。
编辑(因为OP有特殊要求添加参数):
-
在您的数据源中创建一个
task
参数。 (how to) 这可以是文本或单选。如果是单选,则必须手动定义值。 确保报告编辑者可以修改此参数。
在您的查询中,添加到WHERE
子句:
WHERE task = @task
在报告中添加适当的控件并将其链接到task
参数。
This post 在创建参数化自定义查询部分中有一个类似的示例。
【讨论】:
是的,您是正确的,但需要在子查询中传递 Task。该任务不是一级过滤器。不知何故,我需要它在子查询中传递它。我可以通过@DS_START_DATE and @DS_END_DATE
在子查询中传递日期,但不能对 Task 执行相同操作。谢谢:)
我尝试了你建议的方式,你的第三步对我不起作用。你能详细说明一下吗?我必须在子查询中传递 task 。我创建了一个自定义参数任务并添加了 task=@task 但它不适用于任务控制。
在第 1 步中,请确保该参数可以被报表编辑器修改。然后对于第 3 步,请参阅此 url 上的“使用控件从报表查看器获取输入”:support.google.com/datastudio/answer/9002005?hl=en
谢谢,@MinhaZ。您的解决方案适用于单选,但不适用于多选。我写了Task IN (ARRAY_TO_STRING(@task, ',', 'NULL'))
,但它不起作用。以上是关于如何将数据洞察控件传递给 BigQuery 自定义查询的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 BigQuery 连接器将自定义查询从谷歌数据工作室传递到 BigQuery?
如何通过 BigQuery 连接将 use_legacy_sql=False 传递给 Airflow DAG 中的 SqlSensor?