Databricks笔记本如何在查询结果为空时触发Assert终止后续执行
解决Databricks笔记本查询结果为空时终止运行的方案
问题原因
你写的断言逻辑完全反向:assert的规则是当传入的条件表达式结果为False时,才会抛出AssertionError异常。你写的assert count <= 0表示「断言count小于等于0」,所以当count=0时条件成立,不会触发异常,反而当count>0时才会抛错,和你的需求完全相反。
正确实现方案
方案1:修正断言逻辑
直接调整断言的判断条件即可,异常抛出后Databricks默认会自动终止后续所有单元的执行:
df = spark.sql("select * from test.table") count = df.count() # 断言count大于0,若count=0则条件不成立,触发异常终止运行 assert count > 0, "查询结果为空,终止笔记本执行"
方案2:使用Databricks内置工具实现(更适配生产场景)
用Databricks原生的dbutils.notebook.exit方法终止运行,不会产生冗余的异常栈日志,还支持传递退出状态给上游调度任务:
df = spark.sql("select * from test.table") count = df.count() if count == 0: dbutils.notebook.exit("查询结果为空,终止后续所有单元执行")
内容的提问来源于stack exchange,提问作者SanjanaSanju
相关产品推荐
相关产品推荐

