gpt4 book ai didi

yaml - 从 dbt yaml 文件中的 md 文件中引用表值

转载 作者:行者123 更新时间:2023-12-04 11:38:53 25 4
gpt4 key购买 nike

我有一个带有表格的 Markdown 文件,还有另一个 dbt schema.yml 文件,用于提供和生成文档。传统上,我在 schema.yml 中输入表名和列名以及列名的描述,但现在我想到我想将 md 文档中的列名引用到 yaml 文件中,而不是手动输入。
这是我的 doc.md 文件的样子
{% 文档 column_description %}


COLUMN_NAME
描述


cycle_id
客户cycle_id(今天开始 sleep 时间到第二天开始 sleep 时间)

用户身份
客户 user_id

yes_酒精
用户是否饮酒

空白酒精
用户没有回答或用户回答“否”


{% enddocs %}
而且,目前,这就是我的 schema.yml 文件的外观

version: 2

models:

- name: journal_pivot_dev
description: One for for each journal entry of within one customer cycle
columns:
- name: cycle_id
description: Customer cycleid
tests: &not_null
- not_null:
severity: warn
- name: user_id
description: customer userid
tests:
- not_null:
severity: warn
- name: yes_alcohol
description: User consumed alcohol or not
tests: &values_accepted
- accepted_values:
severity: warn
values: [0,1]
- name: blank_alcohol
description: User did not answer
tests: *values_accepted
我试过的:
version: 2

models:

- name: journal_pivot_dev
description: One for for each journal entry of within one customer cycle
columns:
- name: cycle_id
description: '{{ doc(column_description") }}'
tests: &not_null
- not_null:
severity: warn
- name: user_id
description: '{{ doc(column_description") }}'
tests:
- not_null:
severity: warn
- name: yes_alcohol
description: '{{ doc(column_description") }}'
tests: &values_accepted
- accepted_values:
severity: warn
values: [0,1]
- name: blank_alcohol
description: '{{ doc(column_description") }}'
tests: *values_accepted
但是当我这样做时,描述并不仅仅呈现给cycle_id,而是给了我md文件中的整个表格。
enter image description here
我期待这样的事情
enter image description here

最佳答案

TLDR:鉴于该功能,您目前无法尝试做的事情。
当您拨打 {{ docs('filename.md') }}现在 dbt 中的函数,正在执行的代码(参见 doc() 来自 dbtlabs 的 github)只是导入整个 Markdown 文件的编译版本(当然在确保它是有效的、非零长度的 Markdown 之后)。
有争议的是,这可以在文档本身中更好地说明:
https://docs.getdbt.com/reference/resource-properties/description#use-a-docs-block-in-a-description

让我们谈谈替代方案。
我们创建您的每个文档并尝试将它们导入单个“聚合”文档如何?
因此,使用全新的 dbt 项目 my-project让我们来看看:
新项目布局:

    | analysis
| data
| macros
| models
| docs
| agg_table.md
| table_item_1.md
| table_item_2.md
| table_item_3.md
| examples
| schema.yml
| my_first_dbt_model.sql
| my_first_dbt_model.sql
| .gitignore
| dbt_project.yml

哪里 schema.yml是这样的:

version: 2

models:
- name: my_first_dbt_model
description: '{{ doc("agg_table") }}'
columns:
- name: id
description: '{{ doc("table_item_1") }}'
tests:
- unique
- not_null
因此基于此模型进行测试,我尝试至少使用以下选项:
  • 模型引用符号如 Link to another model in a description#
  • 文档块引用符号如 Use a docs block in a description#

  • 这导致了以下方面的变化:
    哪里 agg_table.md就好像:
    {% docs agg_table %}

    ### Agg Table

    | COLUMN\_NAME | DESCRIPTION |
    | ------------------------------ | ----------------------------------------------------------------------------- |
    | table_item_1 | {{ docs("table_item_1") }} |
    | table_item_2 | {{ docs("table_item_2") }} |
    | table_item_3 | {{ docs("table_item_3") }} |
    | table_item_4 | {{ docs("table_item_4") }} |

    {% enddocs %}
    或者
    {% docs agg_table %}

    ### Agg Table

    | COLUMN\_NAME | DESCRIPTION |
    | ------------------------------ | ---------------------------------------------------------------------------------------- |
    | table_item_1 | [first_model_description](#!/model/model.my_new_project.my_first_dbt_model#description) |
    | table_item_2 | [first_model_columns](#!/model/model.my_new_project.my_first_dbt_model#columns) |
    | table_item_3 | [table_item_doc](#!/docs/docs.my_new_project.table_item_3) |
    | table_item_4 | [table_item_doc](#!/docs/docs.my_new_project.table_item_4#description) |


    {% enddocs %}
    但到目前为止,dbt 似乎完全缺少为 jinja 宏/引用预处理 Markdown 文档的步骤。这些链接只是纯 HTML,实际上并没有“编译”任何内容。
    结果示例:
    markdown links
    不过,在 github 问题上请求的好功能。

    关于yaml - 从 dbt yaml 文件中的 md 文件中引用表值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69275594/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com