Выполнение проверки и проверки таблицы Hive (может не быть дубликатом)

Мы знаем, что Hive не проверяет данные на основе полей, и ответственность за проверку вручную лежит на пользователе. Я знаю несколько основных проверок, которые мы можем выполнить для проверки данных.

  1. Подсчитайте количество записей.
  2. Количество нулей в каждом столбце
  3. Количество уникальных/различных значений в каждом столбце
  4. Статистика уровня столбца, такая как минимум, максимум и т. д., В зависимости от типа столбца / данных.
  5. используйте встроенную функцию Hive to_date и другие для проверки проверки столбцов даты.

Я уверен, что должно быть еще несколько проверок или проверок, которые мы можем выполнить для проверки данных в таблицах Hive. Любые предложения приветствуются.

3 метода стилизации элементов HTML
3 метода стилизации элементов HTML
Когда дело доходит до применения какого-либо стиля к нашему HTML, существует три подхода: встроенный, внутренний и внешний. Предпочтительным обычно...
Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Будучи разработчиком веб-приложений, легко впасть в заблуждение, считая, что приложение без JavaScript не имеет права на жизнь. Нам становится удобно...
Flatpickr: простой модуль календаря для вашего приложения на React
Flatpickr: простой модуль календаря для вашего приложения на React
Если вы ищете пакет для быстрой интеграции календаря с выбором даты в ваше приложения, то библиотека Flatpickr отлично справится с этой задачей....
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
5
0
912
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

select count(*)                                 as total_records,
       --repeat these for each column
       count(case when col1 is null then 1 end) as col1_nulls_cnt,
       count(distinct col1)                     as col1_distinct,
       min(col1)                                as col1_min,
       max(col1)                                as col1_max
from your_table;

Даты можно проверить с помощью cast(col1 as date) :

select cast(col1 as date) --returns NULL if the date is in wrong format

Вы можете вычислить NULL, созданные приведением, как в первом запросе:

count(case when cast(col1 as date) is null then 1 end) as col1_wrong_dates_cnt

Также для более сложной проверки вы можете присоединиться к требуемому диапазону дат, который может быть генерируется или сгенерированным так, и проверить, присоединилась ли дата или нет, например:

select col1,
       case when d.dt is not null then 'Ok' else 'Wrong date' end date_check 
  from your_table t
  left join date_range d on t.col1=d.d.dt

Столбцы числовых/других примитивных типов также можно проверить с помощью того же cast(), что и в этом ответе: https://stackoverflow.com/a/38143497/2700344.

Одна важная вещь, которую следует помнить о Hive: Когда вы вставляете неправильную строку формата в столбец даты/времени, Hive без каких-либо исключений автоматически преобразует ее в NULL. Это произойдет с большинством примитивных типов. Но если вы попытаетесь вставить bigint в столбец int, Hive молча урежет его, выдав какое-то другое число, которое соответствует размеру int. Принимая во внимание все это, лучше построить таблицу со всеми STRING поверх необработанных данных перед проверкой.

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