объединение таблиц с другой схемой в BigQuery Standard SQL - PullRequest
0 голосов
/ 18 ноября 2018

Как лучше всего добавить таблицу с другой схемой?

Таблица 0 Схема

Table0 Schema

Table0 Preview

Таблица 1 Схема

Table1 Schema

Table1 Preview


это прекрасно работает

SELECT img1, NULL as img2 FROM `xxx.staging.table0` 
UNION ALL 
SELECT img1, img2 FROM `xxx.staging.table1` 

, но есть ли способ добавлять таблицы без необходимости явно объявлять каждый столбец?

, а такжеРекомендуется ли сохранять таблицу 0 как

SELECT img1, CAST(NULL as string) as img2 FROM `modemutti-8d8a6.staging.table0` 

, убедившись, что img2 является строкой:

enter image description here

и затем добавляя2 таблицы с одинаковой схемой?

SELECT * FROM `xxx.staging.table1ab` 
UNION ALL 
SELECT * FROM `xxx.staging.table1` 

1 Ответ

0 голосов
/ 19 ноября 2018

Ниже для BigQuery Standard SQL

#standardSQL
SELECT * FROM `project.dataset.table1`
UNION ALL
SELECT * FROM `project.dataset.table0`
LEFT JOIN (SELECT '', '') ON FALSE

Примечание : в (SELECT '', '') необходимо указать '' столько же, сколько дополнительных полей в таблице1, поэтому общее количество полей в обеих таблицах одинаковое

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

#standardSQL
WITH `project.dataset.table0` AS (
  SELECT 'aaa' img1 UNION ALL
  SELECT 'xxx' UNION ALL
  SELECT 'yyy' UNION ALL
  SELECT 'zzz' 
),  `project.dataset.table1` AS (
  SELECT 'bbb' img1, 'ccc' img2, 'ddd' img3 UNION ALL
  SELECT 'eee', 'fff', 'ggg'
)
SELECT * FROM `project.dataset.table1`
UNION ALL
SELECT * FROM `project.dataset.table0`
LEFT JOIN (SELECT '', '') ON FALSE

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

Row     img1    img2    img3     
1       bbb     ccc     ddd  
2       eee     fff     ggg  
3       aaa     null    null     
4       xxx     null    null     
5       yyy     null    null     
6       zzz     null    null     
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...