首页 > 其他分享 >dbt modules 宏简单说明

dbt modules 宏简单说明

时间:2023-08-08 23:12:45浏览次数:86  
标签:get modules module datetime context 简单 dbt

dbt modules 宏提供了让dbt 访问python 包的能力,处理上基于了jinja 的上下问处理,但是目前官方没有完整暴露此方法
核心还是因为安全问题,只提供了一些时间、正则、迭代处理的,实际使用上基于了python 模块的动态加载(getattr)

modules 宏的使用参考 

{% set now = modules.datetime.datetime.now() %}
{% set three_days_ago_iso = (now - modules.datetime.timedelta(3)).isoformat() %}

modules 上下文

  • 定义
def get_context_modules() -> Dict[str, Dict[str, Any]]:  
    return {                                             
        "pytz": get_pytz_module_context(),               
        "datetime": get_datetime_module_context(),       
        "re": get_re_module_context(),                   
        "itertools": get_itertools_module_context(),     
    }                                                    
  • 加载
def get_datetime_module_context() -> Dict[str, Any]:                       
    context_exports = ["date", "datetime", "time", "timedelta", "tzinfo"]  
 
    return {name: getattr(datetime, name) for name in context_exports}                                                                                
说明

dbt 有不少需要时间以及正则处理的就使用了此模块提供的能力

参考资料

core/dbt/context/base.py
https://docs.getdbt.com/reference/dbt-jinja-functions/modules

标签:get,modules,module,datetime,context,简单,dbt
From: https://www.cnblogs.com/rongfengliang/p/17615647.html

相关文章

  • 剑指 Offer 28. 对称的二叉树(简单)
    题目:classSolution{public:booltraversal(TreeNode*left,TreeNode*right){//递归判断左右两个**镜像**节点if(left==nullptr&&right!=nullptr)returnfalse;elseif(left!=nullptr&&right==nullptr)returnfalse;el......
  • Sequelize的简单连接和使用
    Sequelize是一个基于Node.js的ORM框架特点:1、支持多种数据库:Sequelize支持多种关系型数据库,包括MySQL、PostgreSQL、SQLite和MSSQL等,适用于需要在不同数据库间切换或者兼容多种数据库的项目。2、强大的查询功能:Sequelize具有丰富的查询功能,支持复杂的查询条件、关联查询......
  • FX110: 简单易上手!移动平均线的五大特性及应用
    移动平均线是看盘过程中,很常用的、很有重要的技术指标。我们常规采用的移动平均线周期,短期是5日、10日。中期是30日、60日。长期是120日、250日,也就是常说的半年线和年线。 移动平均线的特性:1、趋势性。移动平均线会保持与趋势一致的方向,能消除股价在运行过程中出现大的起伏。2、......
  • libhv创建简单udp控制台测试程序
    client:#include<iostream>#include"hv/UdpClient.h"#pragmacomment(lib,"hv.lib")classclient{public: client() { cli=nullptr; } ~client() { SAFE_DELETE(cli); } intsend(conststd::string&msg) { returnc......
  • Django 模型的简单应用
    每一个应用下的数据库模型类,需要在当前应用下的model.py这个文件中定义数据库模型定义规则如下:一个数据库模型类需要继承Model或者Model的子类默认会创建一个自动递增的id主键默认创建的数据库名为,应用名小写_数据库模型类小写一个数据库模型类相当于......
  • H7-TOOL的高速DAPLINK用于新版STM32CubeIDE V1.13及其以上版本的超简单实现方法(2023-0
    之前分享了一个方法,太繁琐了,H7-TOOL群的群友提供了一个方法,实现非常简单。1、使用STM32CubeMX或者自己创建一个STM32CubeIDE工程后,设置这两个地方即可: 配置调试器,设置完毕记得点击右下角的Apply2、然后修改这个cfg文件,F407IGTDebug.cfg,注意和第1步cfg是一个文件。修改......
  • python实现简单的爬虫功能
    前言Python是一种广泛应用于爬虫的高级编程语言,它提供了许多强大的库和框架,可以轻松地创建自己的爬虫程序。在本文中,我们将介绍如何使用Python实现简单的爬虫功能,并提供相关的代码实例。如何实现简单的爬虫1.导入必要的库和模块在编写Python爬虫时,我们需要使用许多库和模块,其......
  • python实现简单的爬虫功能
    前言Python是一种广泛应用于爬虫的高级编程语言,它提供了许多强大的库和框架,可以轻松地创建自己的爬虫程序。在本文中,我们将介绍如何使用Python实现简单的爬虫功能,并提供相关的代码实例。如何实现简单的爬虫1.导入必要的库和模块在编写Python爬虫时,我们需要使用许多库和模块,其中......
  • php简单MYSQL操作类
    <?php/*简单MYSQL操作类include'./mysqlDb.php';$mysql=null;try{$mysql=newdb('localhost','root','root','test');//SELECT$mysql->select('SELECT*FROMabc');//UPDATE$mys......
  • c#操作excel方式一:stream简单读写excel
    需要命名空间usingSystem.IO;界面:记得添加openFileDialog注意名字,改成跟代码里的对应写文件按钮代码:privatevoidbutton2_Click(objectsender,EventArgse){inti=0;StreamWriteraFile=null;aFile=File.CreateTex......