当前位置: 首页 > news >正文

数据治理-Doris-别名函数和存储过程

目的

记录使用Doris进行数据治理过程中的经验技巧

别名函数

数据治理-SQL生产过程中,需要将大量常用到的数据加工逻辑简化为单个函数,以精简SQL语句,提升可读性和可维护性。
Doris中创建函数的方法有两种:
1、UDF方式:使用Java/Python等语言编写代码,打包后注册到Doris
2、别名函数方式:组合已有的函数,创建别名函数

UDF方式较别名函数性能低、灵活度高、开发成本略高。因此需要自定义函数时,应优先考虑别名函数,别名函数无法满足需求时,再考虑UDF

示例

1、as_mac()函数使用场景:将原始层非标准的MAC地址标准化,读者可参考后自行按需实现掩码函数、IP地址标准化函数等
2、ratio()函数使用场景:专题层指标加工时,需要计算百分比的场景(分母可能是0,此时要返回一个默认值)

-- 创建别名函数 as_mac(String), 用于将小写、带-连接符、带:连接符的mac统一转换为大写无分隔符的格式。该函数用于ODS层数据治理createglobalaliasfunctionas_mac(String)withparameter(foo)asUPPER(REGEXP_REPLACE(foo,'-|:',''));-- 创建别名函数 ratio, 用于实现除法,当分母等于0,结果为默认值;否则结果=分子/分母。该函数常用于指标计算createglobalaliasfunctionratio(Float,Float,Float)withparameter(fen_zi,fen_mu,mo_ren_zhi)asif(fen_mu=0,mo_ren_zhi,fen_zi/fen_mu);-- 使用别名函数selectas_mac('1d-a6-2e-8B-35-4B');selectratio(10,20,100);

存储过程

在Doris 3.0版本中,存储过程还是不成熟的功能,未出现在官方文档中,这里只是做下探索记录,以备不时之需

-- 删除存储过程dropproceduregetDictItemName;-- 创建存储过程createproceduregetDictItemName(INdict_type_code string,-- 输入参数:字典类型代码INdict_item_code string-- 输出参数:字典项代码)beginselectzdxmcfrompublic.std_dict_itemwherezdlxdm=dict_type_codeandzdxdm=dict_item_code;end;-- 调用存储过程,返回字典项名称 如:男性callgetDictItemName('A00036','02');
http://www.jsqmd.com/news/525427/

相关文章:

  • 2026兴化戴窑正规新西兰松木加工品牌推荐榜:板材代加工厂、江苏兔宝宝全屋定制授权工厂、江苏千年舟全屋定制授权工厂选择指南 - 优质品牌商家
  • 从零入门 Servlet:JavaWeb 核心组件的实操与理解
  • FireRedASR Pro与智能体(Agent)协作:打造能听会说的AI助手
  • USB3.0测试避坑指南:如何用RIGOL示波器搞定信号完整性与眼图分析
  • 复古C语言代码现代化改造实战——以哈夫曼编码算法为例
  • 用C#在Windows上玩转BLE:一个完整的数据收发项目实战(含避坑指南)
  • 炸了!马斯克两度力挺,中国大模型登顶全球前五,2026落地爆发期必看
  • 彻底淘汰文档驱动开发:我们团队如何用 OptiByte 将 IoT 协议联调效率提升80%
  • 安息香市场洞察:预计到2032年,收入规模将接近7.05亿元
  • 70:黑客论坛语义搜索:暗网情报引擎与向量数据库
  • 财务Agent商业案例库:2026范式革命下的“数字员工”进化论,实在Agent如何通过ISSUT技术重塑企业价值?
  • vLLM部署ERNIE-4.5-0.3B-PT性能调优:KV Cache优化/注意力头剪枝/LoRA适配技巧
  • 通义千问1.5-1.8B-Chat-GPTQ-Int4 WebUI快速上手:Anaconda虚拟环境创建与依赖管理
  • 使用扣子(Coze)开发幼儿园图书馆借阅台账系统
  • Python 集成视频录制(Selenium):让 UI 自动化问题无处隐藏
  • PETRV2-BEV训练效果展示:BEV空间中traffic_cone密集场景下的高精度分割
  • 告别手动复制粘贴:影刀RPA内置包 + Xpath + MySQL 打造你的第一个数据自动化流水线
  • 用STM32F103C8T6和LCD屏做个桌面小闹钟(附Keil5工程源码)
  • 怎么用 Modbus 让两个设备互相通信**,包含硬件接线、协议原理、读写步骤,以及 C# 实操示例。
  • 避坑指南:X-AnyLabeling多边形转掩码时常见的5个JSON格式错误及解决方法
  • AgentCPM深度研报助手:利用GitHub Actions实现自动化测试与部署
  • 亚洲美女-造相Z-Turbo可部署方案:单卡3090/4090即可运行的轻量文生图服务
  • 社交媒体自动化营销趋势分析:未来3年怎么玩(2026-2029)
  • 效率系列(九) macOS 前端开发环境优化与个性化配置指南
  • 用Substance Painter制作写实金属锈蚀效果:从智能材质到粒子笔刷的完整流程
  • 从PyInstaller到NSIS:一个全栈项目打包避坑指南当Vue遇上FastAPI,如何优雅地打包成Windows安装程序
  • Cogito-V1-Preview-Llama-3B智能体(Agent)框架开发:自主任务规划与执行
  • HFSS与CST天线仿真设计
  • 超声波测距进阶:如何优化HC-SR04的精度与稳定性(附Arduino代码)
  • 探索高效自动化测试新工具:FlaUI