Google bigquery 如何对表中的嵌套字段重新排序?
我有两个数据结构相同但字段顺序不同的Google BigQuery表:Google bigquery 如何对表中的嵌套字段重新排序?,google-bigquery,Google Bigquery,我有两个数据结构相同但字段顺序不同的Google BigQuery表: +- table1: record | +- FIELD: record (repeated) | | |- FIELD.blue: string | | |- FIELD.yellow: integer +- table2: record | +- FIELD: record (repeated) | | |- FI
+- table1: record
| +- FIELD: record (repeated)
| | |- FIELD.blue: string
| | |- FIELD.yellow: integer
+- table2: record
| +- FIELD: record (repeated)
| | |- FIELD.yellow: integer
| | |- FIELD.blue: string
我需要连接两个表:
select * from `table1`
union all
select * from `table2`
但我得到了以下错误:
Column 5 in UNION ALL has incompatible types
是否有方法重新排列嵌套字段,以便合并两个表,或者是否有其他方法执行此操作?这是我能做的最好的方法-在查询时使用
REPLACE
在一个表中重新生成嵌套对象:
WITH ta AS (SELECT 'x' id
, [STRUCT('a' AS a, 3 AS b)] st) ,
tb AS (SELECT 'y' id
, [STRUCT(1 AS b, 'b' AS a)] st)
SELECT *
FROM ta
UNION ALL
SELECT * REPLACE ((SELECT ARRAY_AGG(STRUCT(a,b)) FROM UNNEST(st)) AS st)
FROM tb
这是我所能做的最好的方法-在查询时使用
REPLACE
在一个表中重新生成嵌套对象:
WITH ta AS (SELECT 'x' id
, [STRUCT('a' AS a, 3 AS b)] st) ,
tb AS (SELECT 'y' id
, [STRUCT(1 AS b, 'b' AS a)] st)
SELECT *
FROM ta
UNION ALL
SELECT * REPLACE ((SELECT ARRAY_AGG(STRUCT(a,b)) FROM UNNEST(st)) AS st)
FROM tb