繁体   English   中英

使用 bigquery 和 data studio 进行动态查询

[英]Dynamic query using bigquery and data studio

我想在 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 中,您可以为此目的使用DECLARE 子句,定义指定类型的变量:

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 

或者,您可以查看参数化查询,但正如我在评论中提到的,经典 BigQuery web UI 不支持它们。

在 Looker Studio(又名 Data Studio)中使用自定义查询时仍然不支持DECLARE ,但可以将日期范围传递到查询中,如下所示。 请注意,日期作为字符串传递,因此parse_date是必需的。

WHERE DATE(Timestamp) >= parse_date('%Y%m%d', @DS_START_DATE)

启用日期范围时还有一个预定义的参数@DS_END_DATE

更多信息

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM