SQLBucket编写您的sqletl流和ETL完整性工具。

sqlbucket的Python项目详细描述


https://travis-ci.org/socialpoint-labs/sqlbucket.svg?branch=master

SQLBucket是一个轻量级框架,用于帮助编写、编排和验证 SQL数据管道。它提供了设置变量的可能性,并引入 一些控制流使用奇妙的Jinja2库。它还实现了 非常简单的单元和集成测试框架,您可以在其中验证 以SQL检查形式显示的ETL结果。使用SQLBucket,您可以应用 编写数据管道时的TDD原则。在

它可以作为独立服务工作,也可以作为工作流的一部分 环境经理(气流、路易吉等)。在

安装

使用pip安装和更新:

pip install -U sqlbucket

SQLBucket只适用于python3.6和3.7,可能还有3.8 尚未测试。在

一个简单的例子

要开始工作,您需要用 项目u参数。该文件夹将包含您的所有sqletl。这个 创建SQLBucket对象的python文件也是一个很好的地方 实例化命令行界面,如下所示。在

^{pr2}$

以下命令将在projects文件夹中创建第一个项目。在

python my_sqlbucket.py create-project -n my_first_project

有关CLI的详细信息,请参阅its documentations。在

您的项目现在应该类似于以下结构:

projects/
    |-- my_first_project/
        |-- config.yaml
        |-- queries/
            |-- query_one.sql
            |-- query_two.sql
        |-- integrity/
            |-- integrity_one.sql

SQLBucket项目结构

SQLBucket项目由3个核心组件组成:配置、ETL 查询和完整性检查查询。在

配置

配置.yaml是您项目的核心。这是你可以定义的地方 变量,并配置sql查询的顺序 执行。有关如何配置变量的更好解释,请参阅 到usage documentation,还有variables documentation,它 还描述了环境和连接变量。在

ETL查询

查询文件夹只包含您的SQL查询。你可以把他们组织起来 您选择的文件夹结构。只要它们在查询中 文件夹中,SQLBucket将找到它们并在配置时执行它们。 请参阅how to write SQL with SQLBucket上的文档。在

Integrity查询

integrity文件夹只包含SQL查询来帮助您验证 ETL公司。你可以在你选择的文件夹中组织它们。唯一的 惯例是在字段中返回完整性(真/假)的结果 名为通过了。主要思想是完整性是由SQL本身完成的。 检查documentation on integrity以获得关于测试的更详细的解释 ETL的完整性。我们还有一组common macros可以 一开始很有帮助。在

下面是一个完整的示例,它将首先运行ETL,然后运行 完整性检查给定数据库配置。在

fromsqlbucketimportSQLBucketconnections={'db_demo':'postgresql://user:password@host:5439/database'}bucket=SQLBucket(connections=connections)project=bucket.load_project(project_name='my_first_project',connection_name='db_demo',variables={'foo':1})# to run ETLproject.run()# to run integrityproject.run_integrity()

我们建议将连接URL设置为安全性的环境变量 目的。在

模板工程

为了加快速度,可以创建一个SQLBucket template project的分叉 并在几分钟内开始构建SQL数据管道。在

贡献

有关如何对SQLBucket作出贡献的指导,请参阅contributing guidelines。在

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何将cassandra中的行数据转换为与列相关的嵌套json   java如何使用jcr XPath在jcr:content/@jcr:data中搜索?   java在使用openCV进行安卓开发时如何利用手机的广角镜头   java解析扩展了接口,结束了一个潜在的无限循环   位置服务的@Override方法中存在java Android应用程序错误   java本地线程的用途和需求是什么   具有左右子访问的java节点树遍历   java验证JsonWebToken签名   JUL日志处理程序中的java日志记录   嵌入式Java读取给定时间段的串行数据。   java有没有办法从多个URL获取多个图像?   java线程通过等待intent阻止自己发送intent   java Spring MVC解析多部分内容请求   java JPA/Hibernate静态元模型属性未填充NullPointerException   java格式错误的字符(需要引号,得到I)~正在处理   java为什么PrintWriter对象抛出FileNotFoundException?   java Neo4j未正确保存标签   java IE不加载图像