全局配置
关于全局配置¶
全局配置使您能够微调dbt在您的计算机上 如何 运行,无论是您的个人笔记本电脑、远程运行的编排工具,还是(在某些情况下)dbt Cloud。通常,它们不同于大多数项目配置和资源配置,后者告诉dbt运行 什么。
全局配置控制日志的可视化输出、dbt解析项目的方式,以及当dbt发现版本不匹配或模型失败时该怎么办。这些配置是“全局”的,因为它们可用于所有dbt命令,并且可以为在同一台机器或同一环境中运行的所有项目设置。
从v1.0开始,您可以在三个地方设置全局配置。当这三个都设置好时,命令行标记优先,然后是环境变量和最后的yaml配置(通常是profiles.yml)。
命令行标记¶
命令行(CLI)标记紧跟在dbt之后,位于子命令之前。设置后,命令行票房将覆盖环境变量和配置文件配置。
使用此非布尔配置结构,将<THIS-CONFIG>替换为您正在启用或禁用的配置,将<SETTING>替换为配置的新设置,并将<SUBCOMMAND>替换为此配置应用的命令:
非布尔类型配置示例:
要打开布尔类型配置,您将使用--<THIS-CONFIG>命令行标记和--no-<THIS-ONFIG>命令行标记来关闭布尔配置,将<THIS-CONNIG>替换为您正在启用或禁用的配置,并将<SUBCOMMAND>替换为此配置应用的命令。
布尔类型配置结构示例
布尔类型配置示例:
环境变量¶
环境变量包含一个DBT_ 前缀
Yaml配置¶
对于大多数全局配置,您可以在profiles.yml的config:块中设置“用户配置文件”配置。这种配置样式为使用此配置文件目录的所有项目设置默认值,通常是在本地计算机上运行的所有项目。
例外:一些全局配置实际上是在dbt_project.yml中设置的,而不是profiles.yml,因为它们控制着dbt将日志和工件放置在哪里。这些文件路径总是相对于dbt_project.yml的位置。有关更多详细信息,请参阅下面的“日志和目标路径”。
缓存所选资源的数据库对象¶
谨慎实验配置标记
这应该被视为一个 不确定性的 标记,因为它是实验性的,可能会发生变化。我们保留对此配置标记进行突破性更改的权利。
在运行开始时,dbt缓存关于所有模式(schema)中所有对象的元数据,在这些模式中它可能会具体化资源(如模型)。默认情况下,dbt缓存与项目相关的所有模式。启用此配置后,dbt将仅缓存与当前运行所选资源相关的架构。当运行大型项目的一个子集时,这可以显著提高速度。
例如,为了提高速度和性能,同时专注于开发Salesforce模型,这些模型被具体化为自己的专用模式,您可以选择这些模型并加上cache-selected-only标记:
前面的例子使您能够开始使用salesforce模型,dbt将只缓存这些模型,而不是整个项目。
将配置写入到 profile.yml:
检查版本兼容性¶
建议项目设置dbt版本要求,特别是如果它们使用更新的功能,或者这些功能可能会在dbt Core的未来版本中中断。默认情况下,如果使用不兼容的dbt版本运行项目,则dbt将引发错误。
您可以使用VERSION_CHECK配置来禁用此检查并抑制错误消息:
$ dbt --no-version-check run
Running with dbt=1.0.0
Found 13 models, 2 tests, 1 archives, 0 analyses, 204 macros, 2 operations....
调试日志级别¶
DEBUG配置将dbt的调试日志进行标准输出。这样除了显示logs/dbt.log文件之外还可以在终端显示调试级别日志信息的效果。这个输出会很冗长。
--debug标记可以简写成 -d.
实验解析器¶
使用USE_EXPERIMENTAL_PARSER配置,您可以选择最新和最棒的静态解析器实验版本,该版本仍在进行采样以获得100%的正确性。有关更多详细信息,请参阅解析文档。
快速失败¶
将-x或--fail-fast标记提供给dbt-run,以使dbt在单个资源在失败时立即退出。如果第一个模型失败时其他模型正在进行中,那么dbt将终止这些仍在运行的模型的连接。
例如,您可以选择四个模型运行,但如果第一个模型发生故障,则该故障将阻止其他模型运行:
$ dbt -x run --threads 1
Running with dbt=1.0.0
Found 4 models, 1 test, 1 snapshot, 2 analyses, 143 macros, 0 operations, 1 seed file, 0 sources
14:47:39 | Concurrency: 1 threads (target='dev')
14:47:39 |
14:47:39 | 1 of 4 START table model test_schema.model_1........... [RUN]
14:47:40 | 1 of 4 ERROR creating table model test_schema.model_1.. [ERROR in 0.06s]
14:47:40 | 2 of 4 START view model test_schema.model_2............ [RUN]
14:47:40 | CANCEL query model.debug.model_2....................... [CANCEL]
14:47:40 | 2 of 4 ERROR creating view model test_schema.model_2... [ERROR in 0.05s]
Database Error in model model_1 (models/model_1.sql)
  division by zero
  compiled SQL at target/run/debug/models/model_1.sql
Encountered an error:
FailFast Error in model model_1 (models/model_1.sql)
  Failing early due to test failure or runtime error
日志格式¶
LOG_FORMAT配置指定应如何格式化dbt的日志。如果此配置的值为json,则dbt将以logs/dbt.log中则更详细。
$ dbt --log-format json run
{"code": "A001", "data": {"v": "=1.0.0"}, "invocation_id": "1193e449-4b7a-4eb1-8e8e-047a8b3b7973", "level": "info", "log_version": 1, "msg": "Running with dbt=1.0.0", "node_info": {}, "pid": 35098, "thread_name": "MainThread", "ts": "2021-12-03T10:46:59.928217Z", "type": "log_line"}
部分解析¶
PARTIAL_PARSE配置可以在项目中打开或关闭部分解析。有关更多详细信息,请参阅解析文档。
打印宽度¶
默认情况下,dbt将打印出填充到80个字符宽的行。您可以通过在profiles.yml文件中添加以下内容来更改此设置:
日志和目标路径¶
默认情况下,dbt会将日志写入名为logs/的目录,并将所有其他工件写入名为target/的目录。这两个目录都在与dbt_project.yml文件的同一目录中,即运行dbt的根目录。
与其他全局配置一样,可以使用CLI标记(--target path,--log path)或环境变量(DBT_target_path,DBT_log_path)来覆盖环境或调用的这些值。
与本页中记录的其他全局配置(可以在profiles.yml中设置)不同,项目路径是在dbt_project.yml中配置的。这是因为profiles.yml和dbt_project.yml通常位于计算机上不同的文件系统中,并且日志和工件路径总是相对于dbt_program.yml的位置定义的。
发送匿名使用统计信息¶
我们希望构建尽可能好的dbt版本,其中至关重要的一部分是了解用户如何使用dbt。为此,我们在dbt中添加了一些简单的事件跟踪(使用Snowplow)。我们不跟踪凭证、原始模型内容或模型名称(我们认为这些是私人的,坦率地说,与我们无关)。
在调用dbt和运行模型时会生成使用情况统计信息。这些事件包含基本的平台信息(OS+python版本)和元数据,例如调用是否成功、花费了多长时间、表示原始模型内容的匿名哈希密钥以及运行的节点数。您可以在[tracking.py]中查看所有事件定义(https://github.com/dbt-labs/dbt-core/blob/HEAD/core/dbt/tracking.py).
默认情况下,此选项处于启用状态,您可以随时选择退出事件跟踪,方法是将以下内容添加到profiles.yml文件中:
您也可以使用DO_NOT_TRACK环境变量来启用或禁用发送匿名数据。有关更多信息,请参阅环境变量。
DO_NOT_TRACK=1 等同于 DBT_SEND_ANONYMOUS_USAGE_STATS=False
DO_NOT_TRACK=0 等同于 DBT_SEND_ANONYMOUS_USAGE_STATS=True
静态解析器¶
STATIC_PARSER配置可以启用或禁用静态解析器的使用。有关更多详细信息,请参阅解析文档。
严格¶
从V1.0开始,-S 或 --strict标记已被弃用
在输出中抑制非错误日志¶
默认情况下,dbt在标准输出中输出所有日志。您可以使用QUIET配置在标准输出中只显示错误日志。日志仍将包括传递给print()宏的任何内容的输出。例如,您可以取消显示除错误日志以外的所有日志,以便更容易地查找和调试jinja错误。
支持-q 或 --quiet 标记, dbt run 只显示错误日志并取消显示非错误日志.
禁止标准输出中包含print()信息¶
默认情况下,dbt在标准输出中包含print()消息。您可以使用NO_PRINT配置来防止这些消息显示在标准输出中。
支持--no-print 标记, dbt run 禁止在标准输出中包含 print() 信息.
使用颜色¶
默认情况下,dbt会对它在终端中打印的输出进行着色。您可以通过在profiles.yml文件中添加以下内容来关闭此功能:
警告转为错误¶
打开WARN_ERROR配置会将dbt警告转换为错误。任何时候dbt通常都会发出警告,以代替升级到一个致命错误。比如--select不选择资源、弃用、没有关联模型的配置、无效的测试配置,或配置为返回警告的测试。
将任何和警告转换为错误可能非常适合您的需求,但可能有一些警告您根本不关心,有些警告您非常关心。
WARN_ERROR_OPTIONS配置使您能够更精确地控制哪些类型的警告被视为错误。可以通过include和exclude参数指定应被视为错误的警告。警告名称可以在[dbt-core's types.py文件]中找到(https://github.com/dbt-labs/dbt-core/blob/main/core/dbt/events/types.py).
include参数可以设置为all或*以将所有警告视为异常,也可以设置为特定警告名称列表以将其视为异常。当include设置为all或*时,可选的exclude参数可以设置为排除将特定警告视为异常的情况。
WARN_ERROR和WARN_ERROR_OPTIONS互斥
WARN_ERROR和WARN_ERROR_OPTIONS是互斥的.即使在多个位置指定配置(例如env-var+CLI标记),也只能指定一个,否则会出现使用错误。
编写JSON工件¶
WRITE_JSON配置确定dbt是否将JSON工件(例如manifest.JSON、run_results.JSON)写入target/目录。JSON序列化可能很慢,关闭此标记 可能 加快dbt的运行。或者,如果您想执行dbt操作并避免覆盖上一个运行步骤中的工件,则可以禁用此配置。