使用下面的标准sql查询,我可以在BigQuery中返回一个包含a和b中所有字段的结构表。
SELECT a, b
FROM first_table a
JOIN second_table b
ON a.key = b.key;
生成的表架构将a
作为RECORD,b
作为RECORD,其中a.field1,a.field2,b.field1,b.field2等都具有原始类型
如果我将此表保存为a_join_b,然后在legacy_sql中查询它:
SELECT *
FROM a_join_b
;
它将展平结构并提供一个表格,其中包含名为a_field1,a_field2,...,b_field1,b_field2的字段。请注意表名和字段名之间的下划线,并且a和b可以具有相似的字段名称。
BigQuery Standard SQL是否有办法在不引用单个记录名称的情况下展平表格?我在How to convert a nested flatten into Standard SQL中查看了UNNEST,但解决方案似乎需要加入必须命名的unnested字段。
答案 0 :(得分:1)
如果a
和b
没有数组,则非常简单:
SELECT *
FROM first_table a
JOIN second_table b
USING (key)
或
SELECT a.*, b.* EXCEPT (key)
FROM first_table a
JOIN second_table b
ON a.key = b.key
如果它们确实包含数组,那么它依赖于那些数组的布局(UNNEST
仅指数组,所以我怀疑它们可能)。如果可以的话,你能澄清一下表的布局吗?
答案 1 :(得分:0)
Mikhail Berlyant在his reply中提供了已确认的解决方案,以及#34;有没有办法在BigQuery Standard SQL中添加连接的tablename?"堆栈中的问题。