Как выбрать _TABLE_SUFFIX и т. П. Для дифференциации данных - PullRequest
0 голосов
/ 23 мая 2019

Запрос нескольких таблиц с использованием UNION ALL, и в различных таблицах нет поля, которое отличает данные от каждой таблицы, поэтому идея состоит в том, чтобы заполнить поле именем таблицы или другим идентификатором, чтобы дифференцировать данные на основеиз какой таблицы он произошел.

Выберите _TABLE_SUFFIX

ВЫБЕРИТЕ Posting_Date, Entry_No_, Document_No_, G_L_Account_No_, Global_Dimension_1_Code, Global_Dimension_2_Code, Описание, сумма из FROM * 1005_3_9_D_NDUNION ALL SELECT, Posting_Date, Entry_No_, Document_No_, G_L_Account_No_, Global_Dimension_1_Code, Global_Dimension_2_Code, описание, сумма от 2_G_L_Entry WHERE Posting_Date> '2019-03-31' AND G_L_Account_No_> '399999' UNION ALL SELECT, Posting_Date, Entry_No_, Document_No_, G_L_Account_No_, Global_Dimension_1_Code, Global_Dimension_2_Code, описание, сумма FROM 3_G_L_Entry WHERE Posting_Date> '2019-03-31' AND G_L_Account_No_> '399999' UNION ALL SELECT, Posting_Date, Entry_No_, Document_No_, G_L_Account_No_, Global_Dimension_1_Code, Global_Dimension_2_Code, описание, сумма FROM 4_G_L_Entry ГДЕ Posting_Date> '2019-03-31' И G_L_Account_No_> '399999' UNION ALL ВЫБРАТЬ Posting_Date, Entry_No_, Document_No_, G_L_Account_No_, Global_Dimension_1_Code, Global_Dimension_2_Code, Описание, Сумма ОТ 5_G_L_Entry ГДЕ Posting_Date> '2019-03-31' И G_L_Account_No_> '399999' UNION ALL ВЫБРАТЬ Posting_Date, Entry_No_, Document_No_, Document_Node_Go__I_0_I_G_I_NO__D______0Posting_Date> '2019-03-31' AND G_L_Account_No_> '399999' UNION ALL SELECT Posting_Date, Entry_No_, Document_No_, G_L_Account_No_, Global_Dimension_1_Code, Global_Dimension_2_Code_201_________>'399999' ORDER BY Entry_No_ ASC

Выбирает имя таблицы из каждой запрашиваемой таблицы или другой метод для дифференциации данных ...

1 Ответ

2 голосов
/ 23 мая 2019

_table_suffix будет работать только при наличии расширения *:

SELECT _table_suffix suffix, COUNT(*) c
FROM `fh-bigquery.stackoverflow_archive_questions.q*`
GROUP BY 1 
ORDER BY 1 DESC 

enter image description here

Но при выполнении UNION вам нужно вручную «пометить» каждую таблицу:

SELECT table, COUNT(*) c
FROM (
  SELECT *, '201703' table
  FROM `fh-bigquery.stackoverflow_archive_questions.q201703` 
  UNION ALL
  SELECT *, '201706' table
  FROM `fh-bigquery.stackoverflow_archive_questions.q201706` 
  UNION ALL
  SELECT *, '201709' table
  FROM `fh-bigquery.stackoverflow_archive_questions.q201709` 
)
GROUP BY 1 
ORDER BY 1 DESC 

enter image description here

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