我在BigQuery中有每日表,(table_name_yyyymmdd)。如何编写一个总能查询滚动12个月数据的视图?
答案 0 :(得分:2)
举个例子:
将以下查询保存为视图(让我们将其命名为 - view_test - 我假设它与表格在同一数据集中)
#standardSQL
SELECT PARSE_DATE('%Y%m%d', _TABLE_SUFFIX) as table, COUNT(1) as rows_count
FROM `yourProject.yourDataset.table_name_*`
WHERE _TABLE_SUFFIX
BETWEEN FORMAT_DATE('%Y%m%d', DATE_SUB(CURRENT_DATE(), INTERVAL 13 DAY) )
AND FORMAT_DATE('%Y%m%d', DATE_SUB(CURRENT_DATE(), INTERVAL 1 DAY) )
GROUP BY 1
现在您可以使用它,例如:
#standardSQL
SELECT *
FROM `yourProject.yourDataset.view_test`
所以,这个观点引用了过去12整天的情况 你可以将DAY改为MONTH,改为12个月
希望你有个主意
如果需要,可以轻松地将其“翻译”为Legacy SQL(确保调用该视图的视图和查询使用相同的SQL版本/方言)
注意:只要有可能,Google就会建议migrate to Standard SQL!
答案 1 :(得分:1)
你可以使用根据doc(https://cloud.google.com/bigquery/docs/reference/legacy-sql#table-date-range)的函数TABLE_DATE_RANGE:
查询跨越日期范围的多个每日表。
如下所示:
SELECT *FROM TABLE_DATE_RANGE(data_set_name.table_name,
TIMESTAMP('2016-01-01'),
TIMESTAMP('2016-12-31'))
由于目前没有以编程方式对视图进行参数化的选项,因此您需要通过其他工具/代码生成查询/视图