构建一个dbt 数据库适配器
脚手架新的适配器
首先,将odbc适配器模板复制到同一目录中的新文件。
更新dbt / adapters / factory.py以将新适配器包含为类型。还要将类型添加到dbt / contracts / connection.py,
并添加一个定义适配器配置文件外观的约定。
实现适配器功能
在适配器模板中,找到许多应该实现的功能,以使大多数适配器功能正常工作。最关键的是:
- get_odbc_connection_string,必须返回一个有效的ODBC连接字符串,以传递给pyodbc进行连接;
- type:应该与您在dbt / adapters / factory.py和dbt / contracts / connection.py中使用的类型匹配,以指定新的适配器;
- date_function:指定此数据库用于获取当前日期和时间的函数;
- rename:允许适配器重命名表和视图;
- quote:实现适配器的标识符引用,例如,"identifier"postgres和[identifier]sql server;
- query_for_existing:返回指定模式中现有表和视图的字典,其结构如下{"table_name": "table", "view_name": "view"};
- get_existing_schemas:返回现有架构的列表
对于其中的每一个,建议您查看其他适配器以获取示例实现。
在实现这些之后,可能会有一个适用于构建表和视图的适配器,尽管可能需要对实现进行一些进一步的修改。
实现在全局项目中定义,可以在dbt存储库中的dbt / include / global_project /中找到。
参考资料
https://github.com/fishtown-analytics/dbt/tree/development/dbt/adapters
https://docs.getdbt.com/docs/building-new-database-adapters
https://docs.getdbt.com/docs/creating-new-materializations
https://github.com/fishtown-analytics/dbt/blob/adapter/azure-dw/dbt/adapters/odbc_adapter_template.py
构建一个dbt 数据库适配器的更多相关文章
- jmeter 构建一个数据库测试计划
添加用户 第一步你想做的每一个JMeter测试计划是添加一个 线程组 元素. 的线程组 告诉JMeter的用户数量你想模拟,用户应该多长时间 发送请求,他们应该发送的请求的数量. 继续添加Thread ...
- .Net中的AOP系列之构建一个汽车租赁应用
返回<.Net中的AOP>系列学习总目录 本篇目录 开始一个新项目 没有AOP的生活 变更的代价 使用AOP重构 本系列的源码本人已托管于Coding上:点击查看. 本系列的实验环境:VS ...
- 《Entity Framework 6 Recipes》中文翻译系列 (20) -----第四章 ASP.NET MVC中使用实体框架之在MVC中构建一个CRUD示例
翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 第四章 ASP.NET MVC中使用实体框架 ASP.NET是一个免费的Web框架 ...
- 从零构建一个简单的 Python Web框架
为什么你想要自己构建一个 web 框架呢?我想,原因有以下几点: 你有一个新奇的想法,觉得将会取代其他的框架 你想要获得一些名气 你遇到的问题很独特,以至于现有的框架不太合适 你对 web 框架是如何 ...
- 怎样打造一个分布式数据库——rocksDB, raft, mvcc,本质上是为了解决跨数据中心的复制
摘自:http://www.infoq.com/cn/articles/how-to-build-a-distributed-database?utm_campaign=rightbar_v2& ...
- 抛弃EF,20分构建一个属于自己的ORM框架
Poiuyt_cyc 博客园首页新随笔联系订阅管理随笔 - 11 文章 - 0 评论 - 111 抛弃EF,20分构建一个属于自己的ORM框架 相信EF大家都不陌生了,因为数据库表跟程序实体是一一 ...
- 15一个NoSql数据库
随着因特网web2.0该网站的兴起.非关系型数据库,现在已经成为一个非常受欢迎的新领域.非关系数据库产品的发展非常迅速.而在处理传统的关系数据库web2.0现场.特别是大规模,高并发SNS类型web2 ...
- NHibernate构建一个ASP.NET MVC应用程序
NHibernate构建一个ASP.NET MVC应用程序 什么是Nhibernate? NHibernate是一个面向.NET环境的对象/关系数据库映射工具.对象/关系数据库映射(object/re ...
- 从零开始构建一个的asp.net Core 项目
最近突发奇想,想从零开始构建一个Core的MVC项目,于是开始了构建过程. 首先我们添加一个空的CORE下的MVC项目,创建完成之后我们运行一下(Ctrl +F5).我们会在页面上看到"He ...
随机推荐
- JDK1.5 新特性
1:自动装箱与拆箱 自动装箱:每当需要一种类型的对象时,这种基本类型就自动地封装到与它相同类型的包装中. 自动拆箱:每当需要一个值时,被装箱对象中的值就被自动地提取出来,没必要再去调用intValue ...
- Java中/r和/n的区别
/n换行符,效果是新换一行,光标在原有位置下一行 /r回车符,效果是光标来到下一行行首
- 3 python 基本数据类型
1.python的基本数据类型 1.字符串 不可变数据类型 2.int //整除 %取余 bit_length() print(a.bit_length()) #打印某个数字类型的二进制长度 3.bo ...
- PHP函数总结 (七)
<?php /** * 匿名函数(闭包函数): * php>=5.3 * 允许临时创建一个没有指定名称的函数,常作为回调函数参数的值 * * 闭包的另一个概念: * 在内部函数中可以使用外 ...
- bzoj1834: [ZJOI2010]network 网络扩容 费用流
bzoj1834 给定一张有向图,每条边都有一个容量C和一个扩容费用W.这里扩容费用是指将容量扩大1所需的费用. 求: 1.在不扩容的情况下,1到N的最大流: 2.将1到N的最大流增加K所需的最小扩容 ...
- HDU-5001 Walk (概率DP)
Problem Description I used to think I could be anything, but now I know that I couldn't do anything. ...
- JavaScript语言简介
Web程序不论是B/S还是C/S构架,分为客户端程序与服务器端程序两种. ASP.NET是开发服务器端程序的强大工具,但有时为了降低服务器负担与通信流量,这就需要编写能够在客户端执行的程序. 脚本语言 ...
- JS常用操作方法图表
截取字符串方法 方法名 参数 返回值 例子 String.prototype.substr() (indexStart, length) 都可为负数,length为负数时自动转为0,length不传默 ...
- idea列表
Idea列表
- RM报表 实际打印的判断
procedure TFormDZMD.RMReport1PrintReportEvent(Sender: TObject); begin // Log('RMReport1PrintReportEv ...