运行 多个 sql 查询和测试通过或失败 Spark Scala
Running multiple sql queries and testing for pass or fail Spark Scala
我 运行 100 个查询(测试用例)来检查 Spark Scala 中的数据质量。我正在从配置单元 table.
查询数据
空数据框是这些示例查询的预期结果:
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
如果您想知道是否有任何值是 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;
注意:这认为空 table 可以通过测试,而您的代码不会。这些可以很容易地修改以处理这种情况,但这种行为对我来说很有意义。
我 运行 100 个查询(测试用例)来检查 Spark Scala 中的数据质量。我正在从配置单元 table.
查询数据空数据框是这些示例查询的预期结果:
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
如果您想知道是否有任何值是 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;
注意:这认为空 table 可以通过测试,而您的代码不会。这些可以很容易地修改以处理这种情况,但这种行为对我来说很有意义。