如何在Big Query中关联两张表?含全量日期匹配场景需求
解决BigQuery中保留全量日期并匹配对应数据的问题
这场景太常见啦,咱们用LEFT JOIN就能完美实现你的需求——它会保留Table B的所有日期行,同时把Table A中对应日期的total值匹配过来,没有匹配到的日期就显示NULL(如果你希望用0替代NULL也很容易调整)。
基础实现SQL
SELECT B.date, A.total FROM `你的项目名.数据集名.TableB` AS B LEFT JOIN `你的项目名.数据集名.TableA` AS A ON B.date = A.date ORDER BY B.date;
关键说明
LEFT JOIN:以Table B作为左表,强制保留它的所有行,右表(Table A)只匹配符合ON条件的记录,匹配不到的字段会填充NULL- 记得把代码里的
你的项目名.数据集名替换成你实际的BigQuery项目和数据集名称 - 如果两个表的
date字段是字符串类型,要确保格式完全一致(比如都是01-01-17这种格式);如果是DATE类型,直接匹配即可
可选:将NULL替换为0
要是你希望没有对应数据时显示0而不是NULL,用IFNULL()函数处理就行:
SELECT B.date, IFNULL(A.total, 0) AS total FROM `你的项目名.数据集名.TableB` AS B LEFT JOIN `你的项目名.数据集名.TableA` AS A ON B.date = A.date ORDER BY B.date;
内容的提问来源于stack exchange,提问作者Jason
相关产品推荐
相关产品推荐

