如何将数据洞察控件传递给 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?

将 STRUCT 的 ARRAY 传递给标准 BigQuery SQL 的用户定义函数

如何给用户控件传递参数

如何在 BigQuery 数据访问日志中记录自定义信息?

我无法将数据从 BigQuery 迁移到数据洞察