Bigquery объединяет два массива различной структуры - PullRequest
0 голосов
/ 03 июля 2018

У меня есть две таблицы

v1 ARRAY<STRUCT<a int64>>

и

v2 ARRAY<STRUCT<a int64, b int64>>

Я хочу написать запрос, который объединяет обе таблицы, используя union all, а для строк v1 вместо поля b ставятся пустые значения. Любая помощь приветствуется:)

Я использую стандартный SQL.

1 Ответ

0 голосов
/ 03 июля 2018

Ниже для BigQuery Standard SQL

#standardSQL
SELECT 
  ARRAY(SELECT AS STRUCT val.a, NULL AS b FROM UNNEST(arr1) val) arr
FROM `project.dataset.v1` 
UNION ALL 
SELECT arr2 AS arr
FROM `project.dataset.v2` 

Вы можете проверить, поиграть с выше, используя фиктивные данные, как показано ниже

#standardSQL
WITH `project.dataset.v1` AS (
  SELECT [STRUCT<a INT64>(1),STRUCT(2),STRUCT(3)] arr1
), `project.dataset.v2` AS (
  SELECT [STRUCT<a INT64, b INT64>(100, 1),STRUCT(100, 2),STRUCT(100, 3)] arr2
)
SELECT 
  ARRAY(SELECT AS STRUCT val.a, NULL AS b FROM UNNEST(arr1) val) arr
FROM `project.dataset.v1` 
UNION ALL 
SELECT arr2 AS arr
FROM `project.dataset.v2`  

с результатом как

Row arr.a   arr.b    
1   1       null     
    2       null     
    3       null     
2   100     1    
    100     2    
    100     3    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...