标准 SQL 查询在 BigQuery 中返回正确结果,但在 Data Studio 中不返回
Posted
技术标签:
【中文标题】标准 SQL 查询在 BigQuery 中返回正确结果,但在 Data Studio 中不返回【英文标题】:Standard SQL query returning correct results in BigQuery but not in Data Studio 【发布时间】:2020-01-13 09:43:38 【问题描述】:我需要返回一个名称列表,其中包含两个日期之间的参数。作为数据验证的一部分,我已经硬编码了两个日期。我在 BigQuery 中的 sql 查询如下:
declare DS_START_DATE FLOAT64;
declare DS_END_DATE FLOAT64;
SET DS_START_DATE = 1578390532050;
SET DS_END_DATE = 1578391211289;
SELECT DISTINCT
Name AS block_names
FROM
my_data_source
LEFT JOIN
UNNEST (holes) AS n_holes
ON
1=1
WHERE
(n_holes.LastModifiedHoleDate ) > CAST(DS_START_DATE as FLOAT64)
AND n_holes.LastModifiedHoleDate < CAST(DS_END_DATE as FLOAT64)
注意:DS_START_DATE 和 DS_END_DATE 都是 UNIX 时间。
所以基本上,我查询的是 1 月 7 日修改的结果,它只会返回一个结果。
上面的查询只返回一个结果,是正确的。
我稍微更改了查询的格式,以便我可以在从 Data Studio 连接到 BigQuery 中的表时使用它:
SELECT DISTINCT
Name AS block_names,
n_holes.LastModifiedHoleDate as LM
FROM
my_data_source
LEFT JOIN
UNNEST (holes) AS n_holes
ON
1=1
WHERE
(n_holes.LastModifiedHoleDate ) >= CAST(@DS_START_DATE as FLOAT64)
AND n_holes.LastModifiedHoleDate <= CAST(@DS_END_DATE as FLOAT64)
我已在我的 Data Studio 数据源中启用日期参数,并已完成数据源的创建。
然后,我使用上述报告数据源制作了一份测试报告。我的报告中只有一个日期范围控件和一个图表。
无论我在日期范围上选择什么范围,我都会在图表上得到两个结果,而我应该只得到一个。
我在数据洞察中使用的表格和图表通常可以选择一个日期范围维度,该维度将数据链接到日期时间选择器上选择的日期范围:
我添加到此报告中的表格没有这样的选项。我假设这是正确的,因为我们使用的数据源需要开始和结束日期?
图表中的参数选项里面什么都没有:
再次,我假设 Data Studio 不需要指定参数,因为我使用的是开始日期和结束日期。
我错过了什么,我的日期范围选择器不会影响图表中显示的数据?好像是自动链接到图表的,但是结果是错误的。
非常感谢!
【问题讨论】:
我注意到在您的 BQ 查询中您使用 > 和 = 和 嘿。感谢您指出了这一点。我更改了 DataStudio 查询以匹配 BigQuery 查询,但它仍然返回不正确的结果。 你应该在 unix 时代使用int64
。
【参考方案1】:
如果要将@DS_START_DATE 和@DS_END_DATE 与它们进行比较,则需要将它们转换为Unix 时间戳。对我来说,这成功了:
WHERE
n_holes.LastModifiedHoleDate >= UNIX_MILLIS(PARSE_TIMESTAMP('%Y%m%d', @DS_START_DATE))
AND n_holes.LastModifiedHoleDate <= UNIX_MILLIS(PARSE_TIMESTAMP('%Y%m%d', @DS_END_DATE))
我希望它也对你有用!
【讨论】:
以上是关于标准 SQL 查询在 BigQuery 中返回正确结果,但在 Data Studio 中不返回的主要内容,如果未能解决你的问题,请参考以下文章
如何在 BigQuery 标准 SQL 中查询 Bigtable 列值?