dbt BaseAdapter简单说明
BaseAdapter是dbt 所有adapter 的父类,dbt 内部默认实现了有一个SQLAdapter 的实现,现有的一些扩展基本实现SQLAdapter 就可以了
比如dremio 的dbt adapter 就是直接扩展的SQLAdapter
BaseAdapter 提供的能力
- 简单说明
adapter 必须实现一些方法以及macro,一些方法可以被安全的通过空实现覆盖(比如数据库不支持的场景),同时可以通过pass 标记
同时添加docstring 说明,对于macro 的实现,应该按照${adapter_type}__${macro_name}
格式(在include 目录中,这个官方文档也有说明),为了调用adapter 中的macro,可以通过jinja 的操作语法
必须实现的方法
- exception_handler
- date_function
- list_schemas
- drop_relation
- truncate_relation
- rename_relation
- get_columns_in_relation
- get_column_schema_from_query
- expand_column_types
- list_relations_without_caching
- is_cancelable
- create_schema
- drop_schema
- quote
- convert_text_type
- convert_number_type
- convert_boolean_type
- convert_datetime_type
- convert_date_type
- convert_time_type
- standardize_grants_dict
macro
- get_catalog
类图
SQLAdapter 实现简单说明
- 简单说明
BaseAdapter 属于一个基础类,SQLAdapter 是一个方便adapter 实现的包装,简化了adapter的开发,我们不用像BaseAdapter 那样实现很多
方法才能实现一个adapter,需要实现的方法为date_function
macro 包含get_catalog
,list_relations_without_caching
,get_columns_in_relation
类图
说明
以上是一个简单说明,实际上BaseAdapter 还包含了连接管理以及sql 执行,支持已经包装好了,我们使用起来比较简单,了解adapter 基类有助于理解adapter 的开发,同时结合这些去看官方文档以及dremio 的实现也就比较方便了
参考资料
dbt/adapters/sql/impl.py (adapter 包)
dbt/adapters/base/impl.py (adapter 包)
dbt/adapters/base/meta.py (元类)
https://docs.getdbt.com/guides/adapter-creation?step=1
https://github.com/dremio/dbt-dremio
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
2023-04-12 gotenberg+ chromiumly + pdf.js 进行office 文档转换以及预览处理
2021-04-12 cube.js playground 使用的一些问题
2020-04-12 easy-rules yaml 组合模式rule 配置
2020-04-12 easy-rules 组合rule说明
2020-04-12 easy-rules mvel yaml 格式规则配置&&试用二——rule 数据返回结果
2020-04-12 easy-rules mvel yaml 格式规则配置&&试用
2019-04-12 Introducing Outflux: a smart way out of InfluxDB