我是 BigQuery 的新手,非常感谢您的帮助。我试图保持我的案例通用,以便对其他人有用。我敢肯定这是非常基本的,我错过了一些东西......
我有 2 个数据集,“Master”和“New”。Master 包含几列,并且已经有很多行。我想将一个新数据集合并到主列表中,但是这个新数据集中的条目可能在所有列中都有值,也可能没有。此外,新列表中的值可能已经或可能不存在于主列表中。两者都有一个唯一/主键(例如 Col1) 例如:
掌握:
Col1 | Col2 | Col3 | Col4
VAL11 | VAL12 | VAL13 | VAL14
VAL21 | VAL22 | VAL23 | VAL24
VAL31 | VAL32 | VAL33 | VAL34
新的:
Col1 | Col5 | Col6
VAL11 | VAL15 | 无效的
VAL41 | VAL45 | VAL46
以下是我的问题:
1)为了合并两个数据集,我必须写什么 bigquery,具有以下要求:a)值应该合并到记录中,例如,当 master 中的前一条记录在某处有“null”时,新数据集有它的价值,那么它应该出现在那里。b) 如果存在“冲突”,则旧值应被新值覆盖
我认为这基本上只是一个完整的外连接,但 BigQuery 只支持内连接和左外连接......
2)如果有可能,使用更多嵌套的逻辑,我希望能够以更精细的方式做2b),例如“如果存在冲突,并且原始值为X,则覆盖,否则不要覆盖/保留该列的原始值(该记录的其他值将不受影响)。
3)如果可能的话,使用一些更嵌套的逻辑,我想能够说“如果 val34 和 val36 都是 TRUE,那么也将 val38 设置为 TRUE,否则如果 val37 是 X,那么将 val38 设置为X”
现在,这是 3 个不同但相关的问题,如果你能帮助我解决任何一个问题,那就太好了。顺便说一句,我正在使用 bigquery,因为数据集太大,普通数据库无法处理,而且它是一个非常方便的工具,我可以轻松地在整个团队中共享。
非常感谢您的帮助和指点!
ps 这里是 BigQuery 文档https://developers.google.com/bigquery/query-reference