dbt
  • 2024-10-20使用dbt规范构建可靠的数据模型
    DBT模型规范(dbtcontracts)为建立模型提供一致性保障机制,让应用的任何模型转换产生的数据集符合预定义的模式。dbt模型规范为创建可靠数据模型提供了健壮的框架。为什么使用模型规范在dbt中,定义模型通常是selectsql语句,并从该SELECT语句推断数据集的结构。但是如果没有
  • 2024-10-18编写自定义dbt通用数据测试
    dbt默认提供了NotNull,Unique,Relationships,和AcceptedValues四个通用数据测试,这些测试被称为”schema测试“,底层这些通用测试就是类似宏的测试块。本文首先介绍内置通用测试,然后介绍如何自定义通用测试,最后还实践如何覆盖内置通用测试的功能。内置数据测试
  • 2024-10-11Dbt增量策略模型实践指南
    参考:dbtIncrementalStrategies|IndiciumEngineering(medium.com)本文讨论dbt的增量策略,介绍工作原理、以及各自优缺点。下篇讲解如何在模型中实现增量策略。使用增量模型可以仅仅处理最近的数据,减少数据处理成本和时间。当然首先要明确我们真的需要使用增量策略吗?
  • 2024-09-04监听USB设备插拔
    ///<summary>///监听USB设备插拔///</summary>publicclassUsbNotification{[DllImport("user32.dll")]publicstaticexternIntPtrRegisterDeviceNotification(IntPtrhRecipient,IntPtrNotificationFilt
  • 2024-07-26qt 连接扫码枪,检查串口插拔
    boolMainWindow::nativeEvent(constQByteArray&eventType,void*message,long*result){Q_UNUSED(result);Q_UNUSED(eventType);MSG*pMsg=reinterpret_cast<MSG*>(message);if(pMsg->message==WM_KEYUP){ushort
  • 2024-06-17cuda程序优化-3.通信简介
    硬件结构CPU<->GPU:通过PCIe进行通信GPU<->GPU:NVLink,通过Switch桥接器辅助访问其他卡的HBM多机通信:InfiniBandwithGPUDirectRDMA(简称GDRDMA),需要专用网卡卡间通信-RingAllReducenvidia文档1.初始状态卡数:N(该图为4),总数据量为K.在RingAllreduce算法
  • 2024-06-09dbt exceptions 简单说明二
    以前对于dbt提供的exceptionsnamespace方法进行了说明,实际是dbt对于exceptions细化的还是比较明确的,以前没详细说明当前包含的exceptions信息exceptions_jinja.pyCONTEXT_EXPORTS={fn.__name__:fnforfnin[warn,mis
  • 2024-06-02dbt adapter dispatch 处理简单说明
    以前是结合使用对于adapter的dispatch有过简单说明,以下结合源码分析下内部参考处理参考处理defdispatch(self,macro_name:str,macro_namespace:Optional[str]=None,packages:Optional[List[str]]=None,#eventuallyremove
  • 2024-06-01dbt dbt-audit-helper 包compare_relation_columns 处理简单说明
    dbtdbt-audit-helper包在进行compare_relation_columns处理的时候进行数据表列字段创建顺序的判断参考使用我按照test处理的,同时进行的测试异常进行存储使用{{audit_helper.compare_relation_columns(a_relation=source("dalongdemo","mytest_appv2")
  • 2024-05-18dbt Relation check_schema_exists 一个有意思的功能
    dbt内部总有一些隐藏的小细节,官方文档没有说明,但是在一些adapter实现中包含,一些是关于check_schema_exists的一些说明内部处理dbt/adapters/sql/impl.pydefcheck_schema_exists(self,database:str,schema:str)->bool:information_schema=self.Re
  • 2024-05-11dbt snapshot 处理简单说明
    dbt的snapshot实际上也是一种物化处理,支持与test,docs,稍有不同就是dbt没定义独立的block扩展,以下是一个简单说明dbt目前默认的snapshot是基于了scd2模型使用包含了配置以及snapshot定义,配置支持dbt_project项目级以及独立snapshot定义,对于snapshot是需要指定策略的
  • 2024-05-10dbt fromyaml 上下文方法简单说明
    fromyaml上下文方法可以用来加载yaml内容,属于一个工具类,比如automate-dv就使用了不少方法参考使用{%-setinfo-%}source_model:raw_staging:"raw_customer"derived_columns:SOURCE:"!1"LOAD_DATETIME:"CRM_DATA_INGESTION_TIME"E
  • 2024-05-10dbt macro 中获取relation 的几种方法
    很多时候我们是希望在自己开发的macro中引用relation这样可以获取实际模型在数据库中的信息,方便数据的写入,或者进行查询实现动态能力,尤其在进行数据质量方便的处理时候,以下简单说明下一些可选的方法参考方法直接使用api.Relation.create创建新的如果知道一些信息(database
  • 2024-05-09dbt plugin 系统简单说明
    dbt实际上提供了一个plugin架构(属于扩展与adapter的plugin机制是不一样的)只是目前官方缺少文档的说明以下是一些简单说明内部处理插件接口定义目前相对简单,只提供了核心是3个方法initialize,get_nodes,get_manifest_artifactsclassdbtPlugin:"""
  • 2024-05-08dbt on_configuration_change 简单说明
    dbton_configuration_change目前主要是在处理物化视图中,on_configuration_change包含了三类设置参考设置apply是默认参数,尝试进行更新存在的数据库对象continue允许继续运行,但是提供一个警告fail如果捕捉到变动就失败参考使用比如模型上的{{config(
  • 2024-05-03dbt show 命令处理简单说明
    dbtshow主要做以下事情内部处理编译基于sql的model,test,analysis,或者执行基于--inline的sql,当前不支持python模型在dw中执行查询在终端中预览结果备注:默认limit为5,但是可以自己调整通过--limit参数,同时dbtshow使用的一直是最新的数据以及编译模型,不会使用物化的
  • 2024-05-01dbt docs generate 简单说明
    dbtdocsgenerate核心是获取dbt项目的元数据信息(包含了project的)以及相关table的(dbt模型相关的),然后通过提供的解析页面进行显示目前是基于静态处理的(先生成,然后基于纯web的解析渲染)对于展示方法很多,可以基于dbt的docsserve命令也可以基于自己的静态webserver(nginx或
  • 2024-05-01dbt 自定义schema 简单说明
    dbt的schema我们是可以灵活进行自定义的,可以实现一个比较有意思的事情使用场景模型级别的schema自定义seed数据schema自定义不同env或者vars的schema自定义不同targetschema的自定义schema自定义核心是generate_schema_name这个macro,我们可以自己定义参考自
  • 2024-05-01dbt Relation 扩展简单说明
    dbt的Relation实际上就是包含关系数据库表,数据库,schema一些信息的描述,dbt官方提供了api.Relation.create等操作进行Relation的维护,当然系统的builtins也提供了一些基本的操作能力,内部使用上会使用dbtBaseRelation中的各类实现比如pg就自己扩展了一个,同时在自己的m
  • 2024-05-01dbt 自定义AdapterPlugin 中dependencies 简单说明
    结合dbt-redshift的对于dependencies部分的定义以及使用简单说明下参考代码Plugin:AdapterPlugin=AdapterPlugin(adapter=RedshiftAdapter,#type:ignorecredentials=RedshiftCredentials,include_path=redshift.PACKAGE_PATH,dep
  • 2024-04-30dbt dbt-audit-helper 包提供的一些方便macro
    dbt-audit-helper从字面意思是dbt的审计帮助工具,但是实际上我们也可以使用此工具做一些数据质量相关的东西dbt-audit-helper提供的macro比较数据输出包含了compare_relations,compare_queries,compare_row_counts比较列compare_column_values,cmpare_all_columns,com
  • 2024-04-27dbt seed 处理简单说明
    dbt支持基于seed的快速建模处理(比较适合测试环境使用),我们只需要提供csv格式的文件,之后执行dbtseed就会创建对应的模型,之后我们就可以在dbt模型中引用了,以下简单说明下内部实现以及处理参考使用seed文件位置一般我们会在dbt项目的seed目录中放对应的seed文件,就是
  • 2024-04-21dbt 使用adapter.dispatch 进行macro 的覆盖处理
    adapter.dispatch是一个很方便的功能,可以实现方法的重载,对于不同环境可以使用不同的macro,以下是一个简单示例macro定义appdemo.sql注意在macros目录下,当然可以修改{%macrodemo(name,age)%}#注意此处我没有指定,namespace或者package,对于package开
  • 2024-04-21dbt docs block 简单说明
    dbtdocsblock是一个jinja2bblock的扩展,以下是一个简单的说明参考使用定义{%docstable_events%} Thistablecontainsclickstreameventsfromthemarketingwebsite. TheeventsinthistablearerecordedbySnowplowandpipedintothewa
  • 2024-04-21dbt doc 函数内部处理简单说明
    dbt提供了一个方便的doc函数,可以方便的使用类似ref模式进行docsblock定义的引用引用参考处理示例version:2models:-name:eventsdescription:'{{doc("table_events")}}'columns:-name:event_iddescription: