首页 > 其他分享 >dbt docs block 简单说明

dbt docs block 简单说明

时间:2024-04-21 09:13:41浏览次数:20  
标签:node name docs dbt events block

dbt docs block 是一个jinja2 bblock 的扩展,以下是一个简单的说明

参考使用

  • 定义
{% docs table_events %}
 
This table contains clickstream events from the marketing website.
 
The events in this table are recorded by Snowplow and piped into the warehouse on an hourly basis. The following pages of the marketing site are tracked:
 - /
 - /about
 - /team
 - /contact-us
 
{% enddocs %}
  • 使用

通过类似ref 模式引用

version: 2
models:
  - name: events
    description: '{{ doc("table_events") }}'
    columns:
      - name: event_id
        description: This is a unique identifier for the event
        tests:
            - unique
            - not_null

参考处理

  • DocumentationExtension 扩展

处理上与MaterializationExtension 类似

class DocumentationExtension(jinja2.ext.Extension):
    tags = ["docs"]
 
    def parse(self, parser):
        node = jinja2.nodes.Macro(lineno=next(parser.stream).lineno)
        docs_name = parser.parse_assign_target(name_only=True).name
 
        node.args = []
        node.defaults = []
        node.name = get_docs_macro_name(docs_name)
        node.body = parser.parse_statements(("name:enddocs",), drop_needle=True)
        return node
  • get_docs_macro_name

工具类进行docs macro 的前缀

def get_dbt_docs_name(name):
    if name is None:
        raise dbt.exceptions.DbtInternalError("Got None for a doc name!")
    # 前缀 dbt_docs__
    return f"{DOCS_PREFIX}{name}"

说明

dbt docs block 的处理实际上就是一个标准jinja2 block 扩展,只是方便使用

参考资料

https://docs.getdbt.com/docs/collaborate/documentation
https://docs.getdbt.com/reference/project-configs/docs-paths
https://docs.getdbt.com/reference/dbt-jinja-functions/doc

标签:node,name,docs,dbt,events,block
From: https://www.cnblogs.com/rongfengliang/p/18118292

相关文章

  • dbt doc 函数内部处理简单说明
    dbt提供了一个方便的doc函数,可以方便的使用类似ref模式进行docsblock定义的引用引用参考处理示例version:2models:-name:eventsdescription:'{{doc("table_events")}}'columns:-name:event_iddescription:......
  • dbt asset-paths 简单说明
    dbt的asset-paths是一个比较有意思的配置,可以用来增强我们的文档信息,比如存放一些图片在资源描述中引用资源生成的文档中可以进行显示,提示文档的信息参考配置dbt_project.ymlasset-paths:["assets"]使用假如assets包含一些描述图片信息models/ap......
  • dbt docs block 的一些技巧
    dbt的docs实际上自定义上还是很强大的,可以灵活的docsblock解析,同时docs定义也可以类似model那样进行引用,当然也包含了一些内部固定模式可以灵活的进行文档的自定义一些内置自定义玩法自定义文档路径类似dbt其他资源一样docs也是支持自定义的,否则默认会搜索model-path......
  • dbt flags 变量简单说明
    通过flags可以使用dbtcli的一些参数,比较常用的是对于增量物化处理的场景参考使用{%ifflags.FULL_REFRESH%}droptable...{%else%}--no-op{%endif%}说明支持的参数都在flags中可以看看,一些dbtadapter的实现都会使用到此变量参考......
  • dbt-checkpoint 确保dbt 项目质量的pre-commit hooks 工具
    dbt-checkpoint实际上属于pre-commithooksplugin实现了不少hooks可以用来提升dbt项目的模型质量内部处理上实际是对于dbt的元数据进行解析,当然dbt-checkpoint也提供了不少其他扩展目前包含的hooks只大概说明下,详细的后边介绍下,目前涉及了,model,source,script,macro,modifier......
  • dbt-checkpoint 源码结构简单说明
    前边说过dbt-checkpoint是基于dbt的元数据解析,然后集合规则进行check,属于一个pre-commit插件,以下简单说明下内部实现配置核心是.pre-commit-hooks.yaml文件,一个标准的pre-commit定义内容核心是id,name,entry,language,entry实际上就是一个pythonentry_points的console_......
  • Chrome跨域问题:查看图片报错has been blocked by CORS policy: The request client is
    Chrome跨域问题:hasbeenblockedbyCORSpolicy:Therequestclientisnotasecurecontextandtheresourceisinmore-privateaddressspaceprivate已被CORS策略阻止:请求客户端不是安全上下文,资源位于更私有的地址空间私有问题原因:公网资源(访问者)访问私网资源......
  • windmill Airplane&Superblocks&Retool&Prefect&Airflow 可选工具
    现在调度工具是越来越多了,而且集成的能力也越来越强大了windmill是一个很不错的workflow调度平台功能很强大特性可扩展的执行runtime,支持跨语言代码执行强大的调度器,支持基于低代码以及yaml模式通过appbuilder使用低代码或者js框架开发面向数据的dashboards智能依赖以......
  • mc模组制作 4.方块与blockbench
    点击再点“b”就可以创建方块啦对于方块模型……如果是正正方方的那种,就选Normal,但如果要做一些不规则的,那就要用到了。(下载:https://github.com/JannisX11/blockbench/releases/download/v4.9.4/Blockbench_4.9.4.exe)打开以后点“创建新模型”新手只用填“文件名”就行......
  • lightdash 与dbt集成的玩法简单说明
    lightdash是依赖dbt进行建模的bi工具,以下说明下lightdash是如何集成dbt的简单操作流程如下,主要是安装cli,预处理表,然后创建项目内部处理简单说明packages/cli/src/index.ts代码位置,主要是通过自定义一些dbt的meta信息,然后通过包装的dbtrun命令执行模型的创建(此处lig......