首页 > 其他分享 >dlt 与dbt的直接集成简单试用

dlt 与dbt的直接集成简单试用

时间:2024-02-20 09:05:07浏览次数:33  
标签:pipeline name 试用 dlt data dbt postgres

dlt 直接基于cli包装了dbt 的运行,对于希望通过dlt 进行etl 之后,还想运行dbt 的模型处理的场景就比较方便了,而且dlt 与dbt 的集成也是官方
一个很不错的特性,以下是一个简单试用

环境准备

  • docker-compose
 
version: "3"
services:
  pg:
    image: postgres:16.0
    ports:
      - "5432:5432"
    environment:
      - POSTGRES_PASSWORD=postgres
  • dlt 配置

.dlt/secrets.toml

[destination.postgres.credentials]
 
database = "postgres"
username = "postgres"
password = "postgres" # replace with your password
host = "localhost" # or the IP address location of your database
port = 5432
connect_timeout = 15
  • dlt 以及dbt 初始化

基于了venv

pip install dbt-postgres dlt[postgres]
  • dbt 基本项目结构

安装完成dbt 包之后可以通过dbt cli 提示操作

集成

  • dlt 与dbt 简单数据处理

app.py

import dlt
 
# have data? dlt likes data
data = [{'id': 1, 'name': 'John','age':111}, {'id': 2, 'name': 'Jane'}]
 
# open connection
pipeline = dlt.pipeline(
    pipeline_name="dalong",
    destination='postgres',
    dataset_name='postgres_data'
)
#  数据加载的
load_info = pipeline.run(
    data,
    write_disposition="merge",
    primary_key="id",
    table_name="users"
)
 
print(load_info)
# dlt dbt pipeline 定义
pipeline = dlt.pipeline(
    pipeline_name='dalong',
    destination='postgres',
    dataset_name='postgres_data_dbt'
)
 
venv = dlt.dbt.get_venv(pipeline)
# dbt 项目定义,主要是dbt 相关的配置
dbt = dlt.dbt.package(
    pipeline,
    "mydlt_dbt",
    venv=venv
)
# 运行
models = dbt.run_all()
 
# 完成之后输出模型信息 
for m in models:
    print(
        f"Model {m.model_name} materialized" +
        f"in {m.time}" +
        f"with status {m.status}" +
        f"and message {m.message}"
    )

dbt 简单模型 (详细的参考github)
models/users/my_first_dbt_model.sql

 
{{ config(materialized='table') }}
 
with users as (
    select * from postgres_data.users
)
 
select *
from users

运行

因为直接基于了代码,通过python 运行任务就行了

  • cli
python app.py
  • 效果

说明

以上是基于代码包含pipeline 集成的,实际上也可以不包含pipeline,参考代码

import os
 
from dlt.helpers.dbt import create_runner
 
runner = create_runner(
    None,  # use current virtual env to run dlt
    None,  # we do not need dataset name and we do not pass any credentials in environment to dlt
    working_dir=".",  # the package below will be cloned to current dir
    package_location="https://github.com/dbt-labs/jaffle_shop.git",
    package_profiles_dir=os.path.abspath("."),  # profiles.yml must be placed in this dir
    package_profile_name="duckdb_dlt_dbt_test",  # name of the profile
)
 
models = runner.run_all()

完整代码我已经push github 了可以参考

参考资料

https://dlthub.com/docs/dlt-ecosystem/transformations/dbt/
https://github.com/rongfengliang/dlt_dbt_learning/tree/main

标签:pipeline,name,试用,dlt,data,dbt,postgres
From: https://www.cnblogs.com/rongfengliang/p/18013079

相关文章

  • 从零开始的 dbt 入门教程 (dbt core 开发进阶篇)
    引在上一篇文章中,我们花了专门的篇幅介绍了dbt更多实用的命令,那么我们继续按照之前的约定来聊dbt中你可能会遇到的疑惑以及有用的概念,如果你是dbt初学者,我相信如下知识点一定会对你有极大的帮助:了解dbt_project配置文件,以及不同字符的作用了解dbt工程化,为dev以及......
  • dlt s3 集成试用
    属于一个简单试用,dlt支持destinations为filesystem,当然也支持source为filesystem,内部处理是使用了s3fs环境准备这个比较简单,推荐基于venvdltpipinstalldlt[filesystem]s3通过docker部署,同时可以需要创建demobucketversion:"3"se......
  • dlt 简单试用
    以下主要是一个简单的体验环境初始化以前也简单说明dlt实际上就是一个python包,实际使用推荐结合python的venv安装安装python-mvenvvenvpipinstall-rrequirements.txtrequirements.txt文件(主要是一些依赖)pandasstreamlitd......
  • dlt开源数据加载工具
    dlt是一个开源数据加载工具,基于python开发特点一个库 dlt就是一个python包,其他地方需要我们自己开发非黑盒系统 我们可以基于代码灵活的进行自定义开发基于乘法的玩法,而不是加法自动代码生成 包含了类似dbt的一些处理cli基于python的玩法 dlt对于数据的处理是基于......
  • extism cli 模式简单试用
    安装clicurlhttps://get.extism.org/cli|shcli模式运行官方提供了一个示例项目,可以快速体验命令PLUGIN_URL="https://github.com/extism/plugins/releases/latest/download/count_vowels.wasm"extismcall$PLUGIN_URLcount_vowels--i......
  • 软件测试学习笔记丨Web端测试——测试用例设计思路
    一、UI测试界面风格统一,与UI设计原型图一致界面文案正确提示、警告或错误说明描述准确切换窗口大小,将窗口缩小后,页面是否按比例缩小或出现滚动条,页面是否正确显示所有的图片是否都被正确装载在不同的浏览器、分辨率下图片是否能正确显示二、搜索测试如果支持模糊查询,搜索名称中......
  • 通义灵码试用
    参考:通义灵码官方 一通义灵码是什么二安装通义灵码三通义灵码的使用四问题 一通义灵码是什么看博客园的首页推荐,来尝试下这个编码助手咋回事。通义灵码是阿里出的编码助手,基于通义大模型,提供代码AI智能生成、研发智能问答。提供功能:行/函数级实时续写自然语言......
  • 软件测试/测试开发/全日制|Pytest allure如何添加测试用例步骤
    前言在编写自动化测试用例的时候经常会遇到需要编写流程性测试用例的场景,一般流程性的测试用例的测试步骤比较多,我们在测试用例中添加详细的步骤会提高测试用例的可阅读性。在allure提供给我们的众多装饰器中,就有一个非常符合我们的需求,它就是allure.step(),它可以帮助我们在测试用......
  • typespec 简单试用
    typespec是一个强大的api描述框架,以下是一个简单的试用安装typespec可以安装为全局cli命令npminstall-g@typespec/compiler使用创建项目tspinit//后续按照提示操作,可以选择http安装依赖tspinstall......
  • 使用dataspell 进行dbt 项目开发
    dataspell是jetbrains的数据开发工具,是一个很不错的数据开发ide,同时也支持对于dbt项目的开发我们可以使用类似idea的开发模式进行dbt项目开发参考效果项目结构数据管理注意需要自己配置数据源(可以使用遗留模式的jdbc,或者基于arrowflightjdbc)run/debug说明......