NAB*_*815 5 markdown yaml github-flavored-markdown mkdocs dbt
我有一个包含表格的 markdown 文件,还有另一个 dbt schema.yml 文件,用于提供和生成文档。传统上,我在 schema.yml 中输入表名和列名以及列名的描述,但现在我想我想将 md 文档中的列名引用到 yaml 文件中,而不是手动输入。
这就是我的doc.md文件的样子
{% docs column_description %}
| COLUMN\_NAME | DESCRIPTION |
| ------------------------------ | ------------------------------------------------------------------------- |
| cycle\_id | Customer cycle\_id(todays start sleep time to next days start sleep time) |
| user\_id | Customers user\_id |
| yes\_alcohol | User consumed alcohol or not |
| blank\_alcohol | User did not answer or user answered "No" |
{% enddocs %}
Run Code Online (Sandbox Code Playgroud)
目前,这就是我的 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: ¬_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
Run Code Online (Sandbox Code Playgroud)
我尝试过的:
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: ¬_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
Run Code Online (Sandbox Code Playgroud)
但是当我这样做时,描述不仅仅呈现为cycle_id,而是为我提供了md 文件中的整个表。
我期待这样的事情
TLDR:鉴于该功能,目前您尝试做的事情是不可能的。
当您现在在 dbt 中调用该{{ docs('filename.md') }}函数时,正在执行的代码(请参阅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
Run Code Online (Sandbox Code Playgroud)
哪里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
Run Code Online (Sandbox Code Playgroud)
因此基于这个模型进行测试,我尝试至少使用这些选项:
这导致了以下方面的变化:
哪里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 %}
Run Code Online (Sandbox Code Playgroud)
或者
{% 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 %}
Run Code Online (Sandbox Code Playgroud)
但到目前为止,dbt 似乎完全缺少为 jinja 宏/引用预处理 markdown 文档的步骤。这些链接只是纯 HTML,实际上并没有“编译”任何内容。
不过,在 github 问题上请求的好功能。
| 归档时间: |
|
| 查看次数: |
2071 次 |
| 最近记录: |