dbt create table branch 问题

属于社区有人的一个提问,实际上dremio 支持对于nessie source 特定branch 的 table 的创建,而且源码也有信息,只是官方文档缺少说明

branch创建表参考测试

  • 一个简单sql
CREATE table dbtv4.myappv5 AT  BRANCH prod as select * from pg.public.sensor 
  • 内部解析处理
<CREATE> { pos = getPos(); }
<TABLE>
[ <IF> <NOT> <EXISTS> { ifNotExists = true; } ]
tblName = CompoundIdentifier()
[ fieldList = TableElementListWithMasking() ]
[ sqlTableVersionSpec = WriteableAtVersionSpec() ]
(
    (
        <STRIPED> {
            partitionDistributionStrategy = PartitionDistributionStrategy.STRIPED;
        }
    |
 
....
WriteableAtVersionSpec
 
SqlTableVersionSpec WriteableAtVersionSpec() :
{
    SqlParserPos pos;
    SqlIdentifier simpleId;
    TableVersionType tableVersionType = TableVersionType.NOT_SPECIFIED;
    SqlNode specifier = SqlLiteral.createCharString("NOT_SPECIFIED",SqlParserPos.ZERO);
}
{
    <AT> { pos = getPos(); }
     (
     <BRANCH> simpleId = SimpleIdentifier()
     {
      tableVersionType = TableVersionType.BRANCH;
      specifier = SqlLiteral.createCharString(simpleId.toString(), simpleId.getParserPosition());
     }
     |
     (<REF> | <REFERENCE>) simpleId = SimpleIdentifier()
     {
      tableVersionType = TableVersionType.REFERENCE;
      specifier = SqlLiteral.createCharString(simpleId.toString(), simpleId.getParserPosition());
      }
     )
     {
       return new SqlTableVersionSpec(pos, tableVersionType, specifier, null);
     }
}

dbt dremio 支持的解决方法

因为默认是基于create_table_as 这个macro 处理的,如果不支持就需要自己扩展了,方法很多,一种是修改官方的dbt dremio adapter ,还有就是开发自己的dbt pacakge 重写一个dremio__create_table_as 的macro 支持branch, 之后可以结合dispatch 能力使用自己开发的

说明

以上是一个简单说明,后边可以实现一个示例,方便使用,核心是使用好dbt 提供的能力进行扩展

参考资料

https://docs.getdbt.com/reference/dbt-jinja-functions/dispatch
https://docs.dremio.com/current/reference/sql/commands/apache-iceberg-tables/apache-iceberg-create

posted on   荣锋亮  阅读(16)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
历史上的今天:
2022-07-20 graylog 源码结构&构建简单说明
2020-07-20 openresty + gor+minio 集成
2019-07-20 jaeger使用yugabyte作为后端存储的尝试以及几个问题

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示