Выполнение нескольких запросов sql в hive / impala для проверки пройдено или не пройдено
Я выполняю 100 запросов (тестовых случаев) для проверки качества данных в hive/impala. Большинство запросов проверяют нулевые значения на основе некоторых условий. Я использую условную агрегацию для подсчета тривиальных тестовых случаев, как показано ниже. Я хочу добавить к этому типу проверки более сложное условие запроса. Я также хотел бы увидеть счетчики, если есть нули.
Я хочу знать, как включить более сложный запрос, а также добавить счетчик, если присутствуют нули. Ожидаемый результат ниже.
Что у меня есть на данный момент:
SELECT (CASE WHEN COUNT(*) = COUNT(car_type) THEN 'PASS' ELSE 'FAIL' END) as car_type_test,
(CASE WHEN COUNT(*) = COUNT(car_color) THEN 'PASS' ELSE 'FAIL' END) as car_color_test,
(CASE WHEN COUNT(*) = COUNT(car_sale) THEN 'PASS' ELSE 'FAIL' END) as car_sale_test
FROM car_data;
Запрос более сложного типа для добавления:
SELECT Count(*),
car_job
FROM car_data
WHERE car_job NOT IN ( "car_type", "car_license", "car_cancellation",
"car_color", "car_contract", "car_metal", "car_number" )
OR car_job IS NULL
GROUP BY car_job
Пример ожидаемого результата:
car_type_test car_color_test car_sale_test car_job_test
PASS PASS PASS FAIL
102
1 ответ
Я бы рекомендовал разместить это в одной строке вместо двух:
SELECT (CASE WHEN COUNT(*) = COUNT(car_type) THEN 'PASS'
ELSE REPLACE('FAIL ([n])', '[n]', COUNT(*) - COUNT(car_type))
END) as car_type_test,
(CASE WHEN COUNT(*) = COUNT(car_color) THEN 'PASS'
ELSE REPLACE('FAIL ([n])', '[n]', COUNT(*) - COUNT(car_color))
END) as car_color_test,
(CASE WHEN COUNT(*) = COUNT(car_sale) THEN 'PASS'
ELSE REPLACE('FAIL ([n])', '[n]', COUNT(*) - COUNT(car_sale))
END) as car_sale_test
FROM car_data;