我在BigQuery中创建了一个汇总表,其中包含每天的汇总数据(例如,20151127)。我想要做的是看一看我拥有的最后一个汇总数据,并将其作为搜索新数据的起点。例如,如果我拥有的最后一个日期是2015-11-27,我想在其上添加一天,然后搜索从2015-11-28到今天的GA数据。
我希望通过提供select来使用table_date_range函数来实现这一点。例如:
select
*
from
FROM
TABLE_DATE_RANGE(
[id::projectId.ga_sessions_]
,(
select
date_add(
timestamp(max(session_date))
, 1
, 'DAY'
)
from
[id::projectId.daily_pageview_data]
)
,CURRENT_TIMESTAMP()
)我不能让这个select语句与BigQuery一起工作。有没有人知道这样查询的方法?我之所以尝试这样做,是因为我想每天刷新我的汇总表,但我不想每次运行脚本时都必须重新查询所有数据。
发布于 2015-12-01 08:09:42
您将需要一个奢华的表- calendar_dates,其中只包含日期,如下所示
2015-11-24
2015-11-25
2015-11-26
2015-11-27
2015-11-28
2015-11-29
2015-11-30
2015-12-01
2015-12-02
2015-12-03
2015-12-04 Than,asked完成了您所要求的操作
SELECT
*
FROM (
TABLE_QUERY(YourDataset,
'table_id IN (
SELECT
"ga_sessions_" + REPLACE(DATE(DATE_ADD(TIMESTAMP(DAY), 1, 'DAY')), '-', '')
FROM temp.calendar_dates AS days
CROSS JOIN (
SELECT MAX(session_date) max_date
FROM YourDataset.daily_pageview_data
) max_avail_day
WHERE DAY BETWEEN max_date AND CURRENT_DATE()
)'
)
)要创建奢华的表格- calendar_dates -您可以使用下面的脚本,并设置:var_start和:var_end以反映您的需求。如果出于某种原因你不想要额外的表格-你可以在上面的表格中嵌入下面的代码来代替temp.calendar_dates引用
SELECT DATE(DATE_ADD(TIMESTAMP(:var_start), pos - 1, "DAY")) as day
FROM (
SELECT ROW_NUMBER() OVER() AS pos, *
FROM (FLATTEN((
SELECT SPLIT(RPAD('', 1 + DATEDIFF(TIMESTAMP(:var_end), TIMESTAMP(:var_start)), '.'),'') AS h
FROM (SELECT NULL)),h
)))https://stackoverflow.com/questions/34001971
复制相似问题