问题标签 [dbt]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
sql - 在查询中将非常大的数字转换为 NULL
我正在尝试从雪花数据库中检索数据。但是当我查询数据时,它没有说明“ Failed to cast variant value {numberLong: -8301085358432}
”。从错误中,我了解到我的 SQL 查询中的值有一个很长的数字。
这是我的查询:
以上三个量中的任何一个都可能有长号。我该如何解决这个numberLong
错误。如果值太长,有没有办法将该值转换为 NULL。
docker - 权限问题 - 无法将日志文件写入 docker-volume
我们正在DBT
使用 Docker 和docker-compose
. 在docker-compose.yml
我们的 Airflow 部署文件中,DBT 存储库作为卷附加:
运行dbt-run
通常会生成一个/logs
带有 DBT 日志的目录。但是,dbt-run
从 GCP 机器上的 docker 容器运行会抛出错误[Errno 13] Permission denied: 'logs'
。
为了测试权限,我docker exec -it <DockerContainerID> bash
从 GCP 机器的命令行运行(当 docker 容器正在运行时)进入正在运行的 docker 容器,然后运行cd /usr/local/airflow/dbt/ && touch file.txt
,并收到错误:touch: cannot touch 'file.txt': Permission denied
. 所以很明显,不能将任何文件添加到/dbt
作为卷添加到 Docker 容器中的文件夹中,这就是无法写入日志的原因。
有没有办法让我们的/dbt
卷权限写入日志?也许我们可以在其他地方(不是在 GCP 服务器上的容器中)写入 DBT 日志,这样就不需要在/dbt
容器上的卷中写入?
macros - 执行计算的 DBT 宏
我试图编写一个能够进行各种计算并返回最终结果的宏。
宏是否只接受块级代码,如 if 或 for 循环?而不是一组单独的陈述?
请在这件事上给予我帮助
谢谢
google-bigquery - 运行 dbt 时 BigQuery“超过最大重试次数”
运行 dbt 时,我们随机有一些模型失败并出现以下错误:
我尝试在线搜索,但找不到与此错误和 dbt 相关的任何内容。这可能是 dbt 内部的问题,还是与外部问题有关?有没有办法防止这种情况?
我们正在使用 GKE 集群中的工作流调度程序 (Argo) 运行面向 BigQuery 的 dbt。
谢谢!:)
dbt - 检测表以查看 CI 中的具体化变化
是否有一种简单的方法可以检测 CI 中的物化变化,以避免 dbt 运行失败并出现错误
谢谢!
dbt - 如何运行多标签选择器
我正在使用 dbt 0.18.1 并遵循有关标签的文档,但是我很想知道如何将多标签选择器作为参数运行。据此: https ://github.com/fishtown-analytics/dbt/pull/1014
混合使用标签、fqns 和父/子选择器进行选择: $ dbt run --model tag:nightly+ salesforce.*+
不幸的是,这并不是真正的“标签组合”。
我有 [mixpanel_tests, quality] 的标签,我希望运行包含两个标签(不分开)的模型。如果我跑dbt run -m tag:quality -t blabla
- 我会执行所有在标签数组中具有 QUALITY 的模型,无论它是单个参数还是多个参数,但是我希望只运行质量标记。怎么做?
- 如何指定 2 个标签或 3 个标签选择器来运行具有上述标签的模型(即 mixpanel_tests、质量 - 但仅限于定义了两个标签的模型)。或多或少是一个 AND 子句而不是一个 OR 子句。
嗯,我希望它很清楚。如何让多标签选择器只执行给定标签的组合?
docker - 将容器安装到我的部署中时,如何避免“权限被拒绝”错误?
背景
我目前正在使用 Helm(使用此图表)部署Apache Airflow 。我正在使用git-sync sidecar挂载 SQL 和 Python 文件,Airflow 需要访问这些文件才能执行脚本/文件。
什么似乎不起作用
一旦我完成了容器的部署,我的 Airflow 用户似乎无法使用文件(已由 git sidecar 挂载),并退出并出现错误(此错误发生在所有已挂载的文件上) ):
我试过的
我用于部署的 docker 容器如下所示:
在调度程序容器中运行ls -ld */
(in /opt/airflow
)我得到:
并在Web 服务器容器中运行ls -ld */
(in /opt/airflow
)我得到:
这是 dbt 文件夹的结构在我的 dags 目录中的样子:
值得一提的是,我似乎无法使用气流用户在 dbt 目录中创建文件(权限被拒绝)
在我看来,一旦安装了卷,它的所有者就会成为 root 用户。如何为 Airflow 用户提供访问已挂载的 git 存储库的能力?
如果需要,很乐意提供更多详细信息
docker - 通过 Docker Operator 在 Airflow 中运行 DBT
建立关于如何在不复制我们的 repo 的情况下在气流中运行 DBT 的问题,我目前正在运行气流并通过 git 同步 dag。我正在考虑在我的工作流程中包含 DBT 的不同选项。louis_guitton的一项建议是将 DBT 项目 Docker 化,并通过Docker Operator在 Airflow 中运行它。
我之前没有在 Airflow 或 DBT 中使用 Docker Operator 的经验。我想知道是否有人尝试过或可以提供一些关于他们结合该工作流程的经验的见解,我的主要问题是:
- DBT 作为一个整体项目应该作为一个 Docker 容器运行,还是分解?(例如:测试是否作为独立于 dbt 任务的容器运行?)
- 通过 Docker Operator 运行时,来自 DBT 的日志和 UI 是否可访问和/或仍然有用?
- 部分管道将如何运行?(例如:只想运行管道的一部分)
docker - 如何在不手动运行 dbt deps 的情况下配置 DBT 依赖项?
我是 DBT 新手,目前正在尝试构建一个 Docker 容器,我可以在其中直接运行 DBT 命令。我有一个文件,其中导出 env 变量 ( envs.sh
),如下所示:
我的packages.yml
样子:
我构建了我的 docker 文件,如下所示:
但是,当我dbt run
在 docker 容器内运行时,出现错误:
'dbt_utils' is undefined
. 当我手动运行dbt deps
时,它似乎可以解决问题并dbt run
成功。我最初安装依赖项时是否遗漏了什么?
更新:换句话说,dbt deps
在构建 Docker 镜像时运行似乎没有任何效果。所以我必须手动运行它(例如,当我执行 docker run 时)才能开始我的工作流程。当我使用 Python 图像(不是来自 fishtown-analytics 的图像)时,不会发生此问题
dbt - 自定义模式名称的宏不适用于 dbt 包
我在 dbt 包中使用自定义模式名称时遇到问题。
我使用dbt 文档中提供的宏。
我把这个宏放在我的 dbt 包中dbt package。
最后我在另一个 dbt project dbt project中使用了这个 dbt 包。
这是我的 dbt 项目中的 dbt_project.yml:
我的 dbt 包中的 dbt_project.yml :
当我尝试运行我的 dbt 项目时,它会导入 dbt 包,但不会应用应该从自定义模式名称中删除主模式前缀(在 profiles.yml 中提供)的宏 例如:我的配置文件中提供的模式.yml 是“prs”。我还有其他名为 ods 和 stg 的自定义模式。但是当 dbt 运行时,它会创建 prs、prs_ods 和 prs_stg。
当我直接在 dbt 项目中使用该宏时(而不是将其放入我在 dbt 项目中使用的 dbt 包中),该宏曾经可以正常工作
先感谢您 !