Google bigquery 键为空时Bigquery合并联接
表1Google bigquery 键为空时Bigquery合并联接,google-bigquery,Google Bigquery,表1 +---------+-----------+--------+ | user_id | email | action | +---------+-----------+--------+ | 1 | aa@aa.com | open | +---------+-----------+--------+ | 2 | null | click | +---------+-----------+--------+ | 3 | ac@a
+---------+-----------+--------+
| user_id | email | action |
+---------+-----------+--------+
| 1 | aa@aa.com | open |
+---------+-----------+--------+
| 2 | null | click |
+---------+-----------+--------+
| 3 | ac@ac.com | click |
+---------+-----------+--------+
| 4 | ad@ad.com | open |
+---------+-----------+--------+
表2
+---------+-----------+--------+
| user_id | email | event |
+---------+-----------+--------+
| 1 | aa@aa.com | sent |
+---------+-----------+--------+
| null | ac@ac.com | none |
+---------+-----------+--------+
| 2 | ab@ab.com | sent |
+---------+-----------+--------+
| 4 | ad@ad.com | sent |
+---------+-----------+--------+
我想基于t1.user\u id=t2.user\u id加入,但当密钥为空时,请在t1.email=t2.email上加入
我尝试了多种方式加入bigquery,如下所示:1.)合并时(t1.用户id,t1.电子邮件)=合并时(t2.用户id,t2.电子邮件)
2.)在t2.user_id不为null的情况下,则t1.user_id=t2.user_id else t1.email=t2.email结束
两者都不起作用。如何做到这一点?我会将这样的连接拆分为两个单独的:
第一个-按用户\u id加入
SELECT *
FROM table1 AS t1
JOIN table2 AS t2
ON t1.user_id = t2.user_id
第二-通过电子邮件加入第一次加入中丢失的ID
SELECT *
FROM (
SELECT * FROM table1
WHERE user_id NOT IN (
SELECT t1.user_id
FROM table1 AS t1
JOIN table2 AS t2
ON t1.user_id = t2.user_id
)
) t1
JOIN (
SELECT * FROM table2
WHERE user_id NOT IN (
SELECT t1.user_id
FROM table1 AS t1
JOIN table2 AS t2
ON t1.user_id = t2.user_id
)
) t2
ON t1.email = t2.email
谢谢我真的希望它能使用联合。基于链接,这似乎是可能的。但是,我想BigQuery不支持吗?per:join\u谓词:field\u from\u one\u side\u of \u the \u join=field\u from\u the \u other\u side\u of \u of \u the \u join[AND…]SQL有“IS DISTINCT”和“IS NOT DISTINCT”,但我在BigQuery中看不到这一点。