Выберите столбец в Hive, если существует - PullRequest
0 голосов
/ 07 февраля 2019

Есть ли способ условно выбрать каждый столбец, только если столбец существует в Hive?

Вот мой псевдо-hql:

SELECT attr1 IF EXISTS, attr2 IF EXISTS, attr3 IF EXISTS
FROM some_table;

Если в таблице существуют attr1 & attr3, но attr2 не существует, это должно вернуть мне все строки из attr1 & attr3, не жалуясь на отсутствие attr2.Этот синтаксис НЕ работает, и Hive очень ограничивает внутренние запросы, поэтому я не хочу идти по этому пути, если в этом нет необходимости.

1 Ответ

0 голосов
/ 07 февраля 2019

Нет прямого способа сделать это с помощью одного запроса.Но вы можете выполнить любое из них ниже и разработать логику для использования полученных результатов:

1) Клиент метастазов Hive (HiveMetastoreClient.getFields) для получения полей.

2) Descтаблицу и получите описание.

После получения результатов (из любого из вышеперечисленных) переберите результат, чтобы проверить, присутствуют ли поля в вашем запросе в результате.Если это так, то выполнить весь запрос.Или пропустите те, которых нет.

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