dbt Projects on Snowflake 的限制、要求与注意事项¶
在使用 dbt Projects on Snowflake 之前,请先阅读要求、注意事项和限制:
dbt 项目配置的限制、要求与注意事项¶
以下要求、注意事项和限制适用于 dbt Projects on Snowflake 支持的 dbt 项目配置:
仅支持 dbt Core 项目,不支持 dbt Cloud 项目。将现有的 dbt Core 项目迁移到 Snowflake 时,该项目必须与 支持的 dbt Core 版本 兼容。
Snowflake 工作区中的每个 dbt 项目文件夹都必须包含一个
profiles.yml文件,该文件在 Snowflake 中为该项目指定目标warehouse、database、schema和role。必须将type设置为snowflake。dbt 需要一个account和:code:user,但这些可以留空或是任意字符串,因为 dbt 项目在 Snowflake 中的当前账户和用户上下文下运行。工作区中的 dbt 项目的文件夹结构中不能包含超过 20,000 个文件。此限制包括 dbt 项目目录和子目录中的所有文件,包括
target/dbt_packages/logs目录,当从工作区中运行 dbt 项目时,日志文件会保存在这些目录中。环境变量(例如,
{{ env_var ('MY_ENV_VAR') }})在运行 dbt 项目对象时不受支持。或者,使用项目变量(例如,--vars)。有关更多信息,请参阅 项目变量 (https://docs.getdbt.com/docs/build/project-variables).Serverless Task 不能用于执行 dbt 项目对象。当您创建执行 EXECUTE DBT PROJECT 命令的任务时,必须指定一个用户管理的仓库。
不支持针对同一个 dbt 项目对象同时运行多个 EXECUTE DBT PROJECT 命令,即使使用模型选择器(例如,
EXECUTE DBT PROJECT foo ARGS='--select model1'和EXECUTE DBT PROJECT foo ARGS='--select model2')也是如此。这样做可能会导致意外的内部错误消息。请针对给定的 dbt 项目对象,每次仅运行一个 EXECUTE DBT PROJECT 命令。如果您需要并行运行多个命令,请为每个并发命令创建单独的 dbt 项目对象。支持并鼓励在 dbt 中使用线程配置(例如,
threads: 8)。并发限制仅适用于在同一个 dbt 项目对象上同时运行多个 EXECUTE DBT PROJECT 调用的场景。
存储过程的限制、要求与注意事项¶
当您使用存储过程来调用 EXECUTE DBT PROJECT 时,使用调用方权限存储过程。有关更多信息,请参阅 CREATE PROCEDURE 和 创建存储过程。
遥测、日志记录与追踪的限制、要求与注意事项¶
以下要求、注意事项和限制适用于 Snowflake 上针对 dbt 的遥测、日志记录和跟踪:
dbt Projects on Snowflake 的工作区不能动态流式传输标准输出,并且标准输出只能在命令完成时查看。
查看日志和跟踪需要在 dbt 项目对象上设置 LOG_LEVEL 和 TRACE_LEVEL。有关更多信息,请参阅 Snowflake 上 dbt 项目的访问控制 和 监控 dbt Projects on Snowflake。
默认情况下,Snowflake 会在默认 SNOWFLAKE TELEMETRY.EVENTS 表中收集遥测数据。如果您有设置为账户事件表的自定义事件表,则会在那里收集遥测数据。如果您使用 Enterprise Edition 账户,则可以创建事件表来收集遥测数据,并将其与在其中部署 dbt 项目对象的数据库关联。有关更多信息,请参阅 事件表概述。
查询历史记录 DAG 的限制¶
查询历史记录 DAG 需要 manifest.json 和 run_results.json 工件来渲染可视化。如果 dbt 项目对象执行在 run_results.json 生成之前失败,Query Details 中的 DAG 选项卡会显示“No data available”。
阻止 run_results.json 生成的快速失败执行的常见原因包括:
权限不足,无法执行 dbt 项目对象。
无效的项目配置(例如,缺少
dbt_project.yml文件或文件格式错误)。缺少依赖项,尚未使用
dbt deps安装。
要解决此问题,请查看 Query Details 选项卡的 dbt Output 部分,了解错误消息、修复底层问题、重新部署 dbt 项目对象,然后重新执行。有关监控 dbt 项目对象执行的更多信息,请参阅 查看查询历史记录 DAG。