Выполнение нескольких SQL-запросов и тестирование на прохождение или сбой Spark Scala - PullRequest
0 голосов
/ 24 октября 2019

Я выполняю 100 запросов (тестовых случаев), чтобы проверить качество данных в Spark Scala. Я запрашиваю данные из таблицы улья.

Ожидаемый результат для этих примеров запросов - пустой фрейм данных:

SELECT car_type FROM car_data WHERE car_version is null
SELECT car_color FROM car_data WHERE car_date is null
SELECT car_sale FROM car_data WHERE car_timestamp is null

Я хочу написать, если контрольный пример пройден или не выполнен на основеожидаемый результат в текстовый файл. Я хочу знать, как лучше всего это сделать.

Что у меня есть:

val test_1 = context.sql("SELECT car_type FROM car_data WHERE car_version is null")
val test_2 = context.sql("SELECT car_color FROM car_data WHERE car_date is null")
val test_3 = context.sql("SELECT car_sale FROM car_data WHERE car_timestamp is null")
test_1.head(1).isEmpty 

1 Ответ

1 голос
/ 24 октября 2019

Если вы хотите узнать, являются ли какие-либо значения NULL, вы можете использовать условное агрегирование. Я был бы склонен выполнить все тесты одним запросом:

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;

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

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