【发布时间】:2020-02-23 15:20:56
【问题描述】:
我在 Big Query 中使用计划查询,它将前一天的数据附加到 Big Query 表中。当我的查询运行时,前一天的数据并不总是可用,因此,为了确保我拥有所有数据,我需要计算我的 Big Query 表中可用的最后日期。
我的第一次尝试是编写以下查询:
SELECT *
FROM sourceTable
WHERE date >= (SELECT Max(date) from destinationTable)
当我运行这个查询时,只有 date >= max(date) 被正确导出。但是,查询会处理整个 sourceTable,而不仅仅是 J - max(date)。因此,成本高于预期。
我还尝试使用“DECLARE”和“SET”(https://cloud.google.com/bigquery/docs/reference/standard-sql/scripting)声明一个变量。此解决方案工作正常,仅处理 J - max(date)。但是,BQ 将带有“DECLARE”的查询解释为脚本,因此无法使用预定查询将结果自动导出到 BQ 表中。
DECLARE maxDate date;
SET maxDate = (SELECT Max(date) from destinationTable);
SELECT *
FROM sourceTable
WHERE date >= maxDate
还有其他方法可以做我想做的事吗?或者在带有目标表的计划查询中使用“DECLARE”和“SET”声明变量的方法?
谢谢!
【问题讨论】:
标签: google-bigquery