我对这个问题有一个几乎相同的场景:
如何选择BigQuery表中最新的分区?
还有一个额外的并发症。我需要在 Data Studio 中显示结果。
设置
我有一系列以不同时间间隔出现的数据集,我需要获取最新的分区。因为它们之间的时间段不一致,所以我不能只获取最后一天并使用它。
我可以使用 BigQuery 脚本成功地通过动态查询修剪查询,但是当我将此查询移至 Data Studio 时,查询无法正确加载。
该表加载到数据源部分:
但当我实际尝试在报告中使用它时:
Data Studio cannot connect to your data set.
Failed to fetch data from the underlying data set
Error ID: e6546a97
有没有办法让 Data Studio 通过修剪正确显示此内容?
查询示例
DECLARE max_date DATE;
SET max_date = (SELECT DATE(MAX(_partitiontime)) FROM `dataset.table`);
SELECT *
FROM `dataset.table`
WHERE DATE(_partitiontime ) = max_date
解决方法:
一种可能性是使用日期参数并进行如下查询:
SELECT *
FROM `dataset.table`
WHERE DATE(_PARTITION_TIME)>= PARSE_DATE("%Y%m%d", @DS_START_DATE)
这并不完全是答案,但是使用默认为“昨天到今天”数据的日期范围,您可以有效地将表修剪为仅最近的分区。如果您提到的数据不规则,用户仍然可以手动扩展日期范围,直到找到数据。
同时,您还可以将以下自定义查询添加到数据源:
SELECT
MAX(SAFE.PARSE_DATE('%Y%m%d',partition_id)) AS latest_available_partition
FROM `dataset.INFORMATION_SCHEMA.PARTITIONS`
WHERE TABLE_NAME = "table"
并将其显示到表格中以向用户提供信息。
事实上,这种解决方法意味着您相信您的最终用户不会对日期范围进行过多的调整。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)