Отфильтровать столбцы таблицы и перейти к другой таблице, если она равна нулю

Я не очень разбираюсь в SQL, но все же хотел бы спросить этот форум.

Моя работа - обрабатывать записи с нулевыми значениями. Я имею в виду, что у нас есть естественные ключи (предположим, 4 столбца), где, если какой-либо из столбцов получает в него значения NULL, они должны быть перенаправлены в другую таблицу, чтобы об этом можно было сообщить клиенту.

AFAIK SQL дает только один выход и не может быть разделен. Есть ли способ справиться с этим в SQL / spark SQL? Мне нужно выполнить эту работу с помощью spark.

Технологический процесс:

  1. первые данные складываются и хранятся в таблице улья

  2. Мне нужно взять эти данные и проверить нулевые значения.

  3. хранить его в таблицах следующего уровня

«SQL дает только один результат»> true, но вы также можете создать одну таблицу с двумя разделами, например status=GOOD против status=BAD и вычислить псевдоколонку status в INSERT SELECT с динамическим разбиением ... Все записи будут доступны по умолчанию, но затем вы можете отфильтровать на основе status.
Samson Scharfrichter 13.09.2018 21:52
0
1
26
1

Ответы 1

Хотя вы не можете сделать это за один раз, вы можете сделать это с помощью упомянутых шагов.

После создания таблицы в Hive с помощью PySpark вы могли бы:

#Set all the imports and enable Hive support for the session
#Dataframe to hold rows where either of 4 columns is null
df=spark.sql("select * from tblName where col1 is null or col2 is null or col3 is null or col4 is null")
#Write the resulting dataframe to a Hive table
df.saveAsTable('tableName') #Use other arguments in saveAsTable as required

Спасибо, но мне нужно иметь две таблицы, одну с записями со всеми ненулевыми значениями в указанных столбцах, а другую с записями, по крайней мере, имеющими нулевое значение в указанных столбцах. в приведенном выше предложении tblName будет содержать все записи, а tableName будет содержать записи с нулевым значением ... можем ли мы сделать это в улье, сначала загрузить 100 записей в tab1, а затем запустить проверку на null, если запись нашел, вставьте его в tab2 и удалите из tab1 .. это предлагаемый подход, если записи в миллионах?

user1708054 14.09.2018 09:28

Другие вопросы по теме