如何在dbt常规日志中打印invocation_command(Kubeflow+Snowflake环境)
在Kubeflow组件中输出dbt的invocation_command到常规日志
方法1:用dbt自定义宏输出
在你的dbt项目里加个简单宏,就能让invocation_command出现在常规日志里,不用开debug:
- 在dbt项目的
macros/文件夹新建print_invocation.sql文件,写入:
{% macro print_invocation() %} {% do log("触发dbt的命令:" ~ invocation_command, info=True) %} {% endmacro %}
- 打开
dbt_project.yml,添加运行钩子:
on-run-start: - "{{ print_invocation() }}"
之后执行dbt run这类命令时,常规日志里就会直接打出invocation_command的完整内容,不会有一堆调试垃圾。
方法2:在Kubeflow组件脚本里提前打印
要是不想改dbt项目,直接在Kubeflow组件的执行脚本里动手:
比如组件用bash脚本的话,先把要执行的dbt命令存起来,打印完再执行:
# 定义要跑的dbt命令 DBT_CMD="dbt run --project-dir ./my-dbt-proj --profile snowflake" # 先输出到日志 echo "触发dbt的命令:$DBT_CMD" # 执行dbt $DBT_CMD
这种方式直接在组件层面搞定,步骤简单,不用动dbt的配置。
内容的提问来源于stack exchange,提问作者Ruba
相关产品推荐
相关产品推荐

