Динамический запрос BigQuery для вставки при выборе SQL - PullRequest
0 голосов
/ 01 октября 2018

file.ini: -


Цитата

TAB1: table1
TAB2: table2
KEYS:
    col1: 'SKey'
NONKEYS:
    col2: 'SCode'
    col3: 'SName'
    col4: 'SState

file_data.csv: -


Цитата SKey, SCode, SName, SState, EDate, CFlag 123, ABC, Acme Supply Co, CA, 01/01/00, N 124, ABC, Acme Supply Co, IL, 22/12/04, N 125, ABC,Acme Supply Co, CA, 01/01/00, N 126, ABC, Acme Supply Co, IL, 22/12/04, N 127, ABC, Acme Supply Co, CA, 01/01/00, N 128, ABC, Acme Supply Co, IL, 22/12/04, N 129, ABC, Acme Supply Co, CA, 01/01/00, N 130, ABC, Acme Supply Co, IL, 22/12/04, N 131,ABC, Acme Supply Co, CA, 01/01/00, N 132, ABC, Acme Supply Co, IL, 22/12/04, N

BQ Таблица: -


Blockquote SKey SCode SName SEmail SPhone SState EDate Подтверждение 123, ABC, Acme Supply Co, CA, 01/01/00, N Проблема:

Двухшаговое задание для выполнения,Прочитайте файл file_data.csv и вставьте его в table2.В файле file.ini указывается, сколько столбцов присутствует в файле file_data.csv и какие из них KEY или NONKEY.Создайте запрос так, чтобы сравнить столбец SKey в таблице1 и таблице2 и вставить в таблицу1, где столбец SKey в таблице1 = столбец SKey в таблице2, а остальные данные столбца в таблице2 отличаются от таблицы1.

Единственный основной улов - количество столбцов, используемых в запросе выбора, может варьироваться в зависимости от файла INI, элементов списка KEYS и NONKEYS.Запрос должен быть динамическим и содержать KEYS и NONKEYS, как и многие из присутствующих в file.ini.Каждый раз, когда новые file.ini и file_data.csv содержат изменяющиеся столбцы и соответствующие им ключи KEYS и NONKEYS.

Я пытаюсь использовать следующую логику: - для каждой строки в таблице2 сравнивайте каждый столбец в таблицах table1 и 2 и где угодноSKey соответствует (то же самое), а другие данные не совпадают (col3 / 4/5 и т. Д.), Т.е. отличаются, затем вставьте эти столбцы из table2 в table1.Но возникают проблемы с построением всего динамического запроса.

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