Загрузка данных в пустую таблицу Impala с данными учетной записи, разделенными по коду региона - PullRequest
0 голосов
/ 01 апреля 2020

Я пытаюсь скопировать данные из таблицы с именем account в пустую таблицу с именем account_by_area_code. У меня есть следующие поля в account_by_area_code: acct_num INT, first_name STRING, last_name STRING, phone_number STRING. Таблица разбита по areacode (первые 3 цифры phone_number.

Мне нужно использовать инструкцию SELECT, чтобы извлечь код области в команду INSERT INTO TABLE, чтобы скопировать указанные столбцы в новую таблицу, динамически разбивая по коду региона.

Это моя последняя попытка:

impala-shell -q "INSERT INTO TABLE accounts_by_areacode (acct_num, first_name, last_name, phone_number, areacode) PARTITION (areacode) SELECT STRLEFT (phone_number,3) AS areacode FROM accounts;"

При этом генерируется ОШИБКА: AnalysisException: Перестановка столбцов и предложение PARTITION содержат больше столбцов (5), чем предложение SELECT / VALUES и PARTITION. предложение return (1). Я не уверен, что у меня даже правильный синтаксис basi c, поэтому любая помощь будет великолепна, поскольку я новичок в Impala.

1 Ответ

0 голосов
/ 13 апреля 2020

Impala создает разделы динамически на основе данных. Поэтому не уверен, почему вы хотите создать пустую таблицу с разделами, потому что она будет создана автоматически при вставке новых данных.
Тем не менее, я думаю, что вы можете создать пустую таблицу с разделами, как эта-
impala-shell -q "INSERT INTO TABLE accounts_by_areacode (acct_num) PARTITION (areacode) SELECT CAST(NULL as STRING), STRLEFT (phone_number,3) AS areacode FROM accounts;"

...