[英]Bigquery join 2 tables with id concated from 4 columns and create a new table dynamically
我在 Bigquery 中有两个来自两个不同数据源的表,比如说 x 和 y。 我想在 os_name、tracker_name、date、country 列上加入这两个表。 为此,我正在使用 concat 函数并像这样加入:
full outer join x on concat(x.date,x.os_name,x.tracker_name, x.country) = concat(y.date,y.os_name,y.tracker_name,y.country_code)
作为查询结果,公共列也会被复制。 就像在结果中一样,有 os_name 和 os_name_1、country_code、country_code_1 等列。 我不想要那个。 最终列应如最终表架构中的示例所示。
我想返回双方的所有记录。 例如,如果表 y 中没有匹配项,则 y_install 和 y_purcase 将为 0,反之亦然。
X 表架构:
Y 表模式:
所需的最终表架构:
我将按给定的时间间隔安排查询并将结果写入目标表。
你能帮我解决这个问题吗?
关于最终表,我不明白你是想返回第一个 NON NULL 结果,还是想拥有一个数组,其中包含两个表的两个结果,以防两个表都是有效值。 在我的示例表中,您想要第 1,2 行(实际上是同一行)还是第 3 行?
行号 | x_安装 | y_install | final_table_install |
---|---|---|---|
1个 | 23 | 50 | 23 |
2个 | 无效的 | 50 | 50 |
3个 | 23 | 50 | [23,50] |
事实证明,我想使用的是 union all。 首先,我将非公共列添加到两个表中,以便两个表的模式相等。 所以我能够使用 union all 垂直合并表。 无论如何,感谢您提供帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.