Как изменить порядок вложенных полей в таблице? - PullRequest
0 голосов
/ 04 ноября 2019

У меня есть две таблицы 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

Есть ли способ переупорядочить вложенные поля, чтобы я мог объединить обе таблицы, или есть другой способ выполнить эту операцию?

1 Ответ

2 голосов
/ 04 ноября 2019

Это лучшее, что я мог сделать - использовать 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...