使用 bigquery 和 Data Studio 进行动态查询

Posted

技术标签:

【中文标题】使用 bigquery 和 Data Studio 进行动态查询【英文标题】:Dynamic query using bigquery and data studio 【发布时间】:2020-07-08 02:18:49 【问题描述】:

我想在 Data Studio 中提取每个日期范围的数据,而无需一直更改我的 BigQuery 中的日期范围选择器。但是,不确定是否有可能这样做。我这样做的原因是为了确保查询的数据只有 30 天,因为稍后它会使用这 30 天的数据进行某种细分。

然后我发现Data Studio可以使用dynamic_date,但是这种方式永远不会产生任何数据表(数据表将用于从中进行其他查询)。是否可以在 BigQuery 中使用 dynamic_date 代替?比如使用查询中未定义的日期范围从 BigQuery 中检索数据。

在我看来,代码应该是这样的:

SELECT
   ID, 
   FROM `table`
   WHERE DATE(Timestamp) between $DS_START_DATE and  $DS_START_DATE + INTERVAL 30 DAY)

WHERE DATE(Timestamp) >= @DS_START_DATE

【问题讨论】:

您在寻找 Bigquery parameterized 查询吗?但是,目前经典 BigQuery 网页界面不支持它们。 【参考方案1】:

我相信在纯 Bigquery 中,您可以为此目的使用 DECLARE clause,定义指定类型的变量:

declare DS_START_DATE date default "2020-03-03";
declare DS_END_DATE date default "2020-03-04";

WITH sample AS (
  SELECT '10001' AS id,  cast('2020-03-01' AS timestamp) as date_id UNION ALL
  SELECT '10002', cast('2020-03-02' AS timestamp) UNION ALL
  SELECT '10003', cast('2020-03-03' AS timestamp) UNION ALL
  SELECT '10004', cast('2020-03-04' AS timestamp) UNION ALL
  SELECT '10005', cast('2020-03-05' AS timestamp) UNION ALL
  SELECT '10006', cast('2020-03-06' AS timestamp)
)
select id, date_id from sample

where date(date_id) between DS_START_DATE and DS_END_DATE 

或者,您可以查看parameterized queries,但正如我在评论中提到的,经典 BigQuery 网络用户界面不支持它们。

【讨论】:

是的。目前不支持。

以上是关于使用 bigquery 和 Data Studio 进行动态查询的主要内容,如果未能解决你的问题,请参考以下文章

使用来自 Bigquery 的新数据更新 Data Studio

使用 Data Studio 修剪 BigQuery 分区

Google Data Studio (BigQuery) - 创建过滤器以按最新时间选择

Google Data Studio (BigQuery) 从 1 到 01

使用 Data Studio 查询 BigQuery 时如何避免错误?

如何从 BigQuery 下拉列表中绘制多个日期到 Google Data Studio