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 中为该项目指定目标 warehousedatabaseschemarole。必须将 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.jsonrun_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