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

我有两个数据结构相同但字段顺序不同的Google BigQuery表:

+- 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