【发布时间】:2023-01-14 01:35:07
【问题描述】:
我有一个 DBT 项目,一个 python 脚本将从 postgresql 中获取数据以生成输出。
然而,部分 python 脚本将需要使 DBT 运行。我还没有找到可以让我从外部脚本运行 DBT 的库,但我很确定它存在。我该怎么做呢?
ETA:正确的答案可能是下载 DBT CLI,然后使用 python 系统调用来使用它……我希望有一个库,但我会尽我所能。
【问题讨论】:
我有一个 DBT 项目,一个 python 脚本将从 postgresql 中获取数据以生成输出。
然而,部分 python 脚本将需要使 DBT 运行。我还没有找到可以让我从外部脚本运行 DBT 的库,但我很确定它存在。我该怎么做呢?
ETA:正确的答案可能是下载 DBT CLI,然后使用 python 系统调用来使用它……我希望有一个库,但我会尽我所能。
【问题讨论】:
(截至 2023 年 1 月)还没有用于 dbt 的公共 Python API。预计在 v1.5 中,它应该会在几个月内发布。
现在,最安全的选择是使用 CLI。如果您不想使用 subprocess,CLI 现在使用 Click,Click 提供了一个 runner,您可以使用它来调用 Click 命令。它通常用于测试,但我认为它也适用于您的用例。 CLI 命令是here。这看起来像:
from click.testing import CliRunner
from dbt.cli.main import run
dbt_runner = CliRunner()
dbt_runner.invoke(run, args="-s my_model")
您还可以使用 run_dbt 以他们在测试套件中的方式调用 dbt。
【讨论】: