在 BigQuery 中加入自身
Posted
技术标签:
【中文标题】在 BigQuery 中加入自身【英文标题】:Joining onto itself in BigQuery 【发布时间】:2020-11-23 12:53:24 【问题描述】:我的这段代码可以在 mysql 中运行,但无法在 BigQuery 中运行。
select *
from table1
left join table1 as table2
on table1.user_id = table2.user_id
and table1.date = table2.date - interval '1 day'
我可能在这里遗漏了一些基本的东西,但无法弄清楚。
【问题讨论】:
您是否收到错误消息?为什么引用 1 天? 是的,我在 BigQuery 中收到一条错误消息。语法错误:[10:58] 出现意外的关键字 INTERVAL 好的,请发表 语法错误:在 [10:58] 出现意外的关键字 INTERVAL BigQuery 似乎不支持 INTERVAL。尝试用 DATEADD() 替换。 【参考方案1】:使用DATE_SUB() function
select *
from table1
left join table1 as table2
on table1.user_id = table2.user_id
and table1.date = DATE_SUB(table2.date, interval 1 day);
PS。 INTERVAL
用户手册中未找到数据类型/说明符。 BigQuery - DATATYPES.
【讨论】:
【参考方案2】:BigQuery 标准 SQL 现在支持 DATE arithmetic operators。
所以(假设 table1.date
和 table2.date
是日期类型)你可以像这样简单
select *
from table1
left join table1 as table2
on table1.user_id = table2.user_id
and table1.date = table2.date - 1
【讨论】:
以上是关于在 BigQuery 中加入自身的主要内容,如果未能解决你的问题,请参考以下文章