#python #pyspark #databricks
Вопрос:
У меня есть фитон-код в ячейке 10 баз данных в одном блокноте баз данных.
Первая ячейка содержит приведенный ниже код.
df = spark.sql(f"""select * from test.table """)
count= df.count()
Здесь , если количество равно 0, я хочу , чтобы блокнот вышел из строя, если количество больше 1, я хочу, чтобы остальные ячейки в блокноте databricks выполнялись.
Я пытаюсь использовать приведенный ниже код.
df = spark.sql(f"""select * from test.table """)
count= df.count()
assert count <= 0
Приведенный выше код не вызывает ошибки утверждения, вместо этого он просто говорит, что запрос не возвращает результатов и выполняет следующую ячейку в базе данных. Не мог бы кто-нибудь, пожалуйста, дать мне знать, чтобы вызвать исключение assert и завершить запись в блокноте без дальнейшего выполнения ячеек.
Спасибо.
Ответ №1:
У вас есть обратное утверждение. Вы утверждаете то, что вам нужно, чтобы быть правдой.
assert count > 0
(Что это там val
в первой строке? Это ошибка вырезания вставки?)
===
чтобы ответить на вопрос ниже:
if count <= 0:
raise AssertionError("must return at least one record")
Вы можете просмотреть список встроенных исключений Python, чтобы узнать, не кажется ли одно из них более подходящим для ваших обстоятельств, чем общая «ошибка утверждения».
Комментарии:
1. Обратите внимание, что полагаться на это утверждение в окончательном производственном коде-плохая практика: утверждение предназначено для тестирования и разработки. Это может быть оптимизировано в производстве: создайте реальное исключение, если оно вам нужно
2. @2e0byo Не могли бы вы, пожалуйста, дать мне знать, чтобы в этом случае возникло исключение.
3. @SanjanaSanju
assert cond[, "message"]
эквивалентноif not cond: raise AssertionError("message")
. Так что просто используйтеif
и какую-нибудь соответствующую ошибку (или пользовательскую ошибку): возможно, что-то вродеValueError
здесь