Ошибка SQL в Google Big Query с UNION ALL для таблиц с одинаковой схемой EDIT: изменение схемы со строки на INT - PullRequest
0 голосов
/ 16 марта 2019

У меня есть следующий запрос

 SELECT *
  FROM `January_2018`

UNION ALL

 SELECT *
  FROM `February_2018`

Я получаю следующую ошибку при втором SELECT вызове

Столбец 14 в UNION ALL имеет несовместимые типы: STRING, STRING, INT64, INT64, INT64, INT64, INT64, INT64, INT64, INT64, INT64, INT64 при [7: 3]

Имя столбца - тип_переключения с типом целого числа со значениями 0, 1 и 2.

Я пытаюсь сделать одну большую таблицу из нескольких меньших - ежемесячные таблицы с одинаковыми данными. Похоже, что одно из полей изменилось с типа данных String на тип Int после 4-го месяца и после этого остается активным Int.

Ответы [ 2 ]

2 голосов
/ 16 марта 2019

Попробуйте следующее, чтобы обе схемы таблиц совпадали:

SELECT * EXCEPT(changed_column)
  , CAST(changed_column AS STRING) AS changed_column
FROM table1
UNION ALL
SELECT * EXCEPT(changed_column)
  , CAST(changed_column AS STRING) AS changed_column
FROM table2
0 голосов
/ 18 марта 2019

Чтобы выбрать данные из разных таблиц, вы можете использовать Wildcard вместо union. Подстановочный знак выполнит ваш запрос для всех таблиц, удовлетворяющих условию. Вы можете использовать подстановочный знак ‘*’ с ​​префиксом таблицы, чтобы выбрать несколько таблиц одновременно. Ваши имена таблиц должны иметь одинаковый префикс с другим суффиксом. Бывший - Mytable_1, Mytabel_2, Mytable_3 ………

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...