Проверка значений ниже 100 и от 1 до 5

#python #validation #pyspark #apache-spark-sql

#питон #утверждение #пыспарк #apache-spark-sql

Вопрос:

У меня есть фрейм данных, который я должен проверить с помощью PySpark. Один из столбцов может принимать только значения от 0 до 100, и у меня есть другой столбец, который принимает только значения от 1 до 5. Каков был бы правильный подход к проверке этой информации? В идеале, программа должна завершиться сбоем, если она выйдет из строя, указывая на ошибку.

Ответ №1:

Я думаю, что я бы просто отфильтровал строки, которые нарушают условия, а затем заявил, что их нет:

 df = spark.createDataFrame([  Row(a=1, b=1),  Row(a=6, b=101), ])  rows_with_issues =   df.where(~F.col('a').between(1,5) | ~F.col('b').between(0,100))  n_rows_with_issues = rows_with_issues.count() if n_rows_with_issues gt; 0:  raise Exception(  f'The {n_rows_with_issues} rows violate the data constraints. Showing five rows:n'  'n'.join([str(r) for r in rows_with_issues.take(5)])  )  

Однако такой тест является дорогостоящим для больших наборов данных, поскольку все данные должны быть обработаны.

Комментарии:

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