在Apache DolphinScheduler 海豚调度器(本文简称:小海豚) 官网中,我们看到其自定义时间的参数是这样介绍的

1.支持代码中自定义变量名,声明方式:${变量名}。可以是引用 "系统参数" 或指定 "常量"。

2.我们定义这种基准变量为 [...] 格式的,[yyyyMMddHHmmss] 是可以任意分解组合的,比如:$[yyyyMMdd], $[HHmmss], $[yyyy-MM-dd] 等

3.也可以使用以下格式:

* 后 N 年:$[add_months(yyyyMMdd,12*N)]
* 前 N 年:$[add_months(yyyyMMdd,-12*N)]

* 后 N 月:$[add_months(yyyyMMdd,N)]
* 前 N 月:$[add_months(yyyyMMdd,-N)]
* 后 N 周:$[yyyyMMdd+7*N]
* 前 N 周:$[yyyyMMdd-7*N]
* 后 N 天:$[yyyyMMdd+N]
* 前 N 天:$[yyyyMMdd-N]
* 后 N 小时:$[HHmmss+N/24]
* 前 N 小时:$[HHmmss-N/24]
* 后 N 分钟:$[HHmmss+N/24/60]
* 前 N 分钟:$[HHmmss-N/24/60]

以上是可以满足大部分时间需求,但有些我们会受到常规java逻辑思维影响,导致不能很好的使用这些自定时间。

比如:$[yyyyMM-1],首先我们会受到java思维的影响,认为yyyyMM-1就是当上一个月的年月时间。实际上,$[yyyyMM-1]表示的是昨天的年月。

一般小海豚自定义时间格式有两种:

1.调用函数add_months()函数的:这种是用来加减月份的。

这种有两个参数,第一个是返回时间的格式(如yyyyMM,202012),第二个加减多少个月(如,输入-2,则代表前2个月的时间)

2.直接+-数字的:这种用来加减天数的。

这种直接输入数字的,不管你输入的时间格式是yyyyMM或者是HHHHmmss都无所谓,这个数字只代表加减多少天(比如-2,就代表两天前的时间)

他的自定义时间规律是这样的:先进行加减月/日计算,再将其转化为指定格式输出

就拿上述的$[yyyyMM-1]来说,它是先对当前时间进行减去一天,然后再转换为yyyyMM的格式输出。打个比方:今天是2020年03月02日,那么他会“2020年03月02日”减去一天,就得到“2020年03月01日”这个数据,接着再转化为yyyyMM输出,输出202003。

我们java传统意义上的yyyyMM-1是指当前月份的上个月。比如,今天是2020年03月02日,yyyyMM-1之后会输出202002,这是java编程中的思维,跟小海豚的思维还是有点不一致。

小海豚自定义时间参数中遇到的问题:

我在大数据批处理中,有时候会碰到一些每天更新的月表数据(比如有张统计累计会员人数的月表,用于统计当月的累计会员人数,每天都在更新并同步到BI可视化系统中)(其实更应该叫日表,但需求就是统计周期为月,但每天要更新数据)

小海豚会在今天的凌晨拉取昨天的数据进行计算,将昨天的数据同步到可视化系统中。

一开始我是按照正常的写法,让数仓将$[yyyyMM] (当月)的数据同步到BI可视化系统中并每天更新。一开始是没问题的,都会同步当月的数据,毕竟今天是2020年03月02日获取的就是202003(2020年03月)

但到了月初的第一天,就会出现问题。

比如2020年03月31日,$[yyyyMM]输出202003,会将2020年03月的数据同步到可视化系统(此时小海豚还是抽取昨天2020年03月30日的数据进行累加计算出数据),此时同步是没问题的。

到了2020年04月01日,小海豚会抽取昨天(2020年03月31日)的数据进行累加,按道理更新的应该是昨天3月份的数据,但是!!!$[yyyyMM]输出的是202004,而此时4月份没有数据,因此没有更新!!!

到了2020年04月02日,小海豚抽取昨天(2020年04月01日)的数据进行4月份累加,$[yyyyMM]输出的是202004 ,更新4月份数据。

此时从数仓同步到可视化系统的3月份数据就会少了31日,导致明明数仓数据正确,可是到了可视化系统时就不准了。此时不理解的人就会在骂小海豚有bug,可你输入的指令$[yyyyMM]获取的是今天的月份,你的业务要求你更新昨天的月份。

正确做法是将$[yyyyMM]替换成$[yyyyMM-1],$[yyyyMM-1]代表昨天的年月,跟我们数仓抽取昨天的数据进行计算业务吻合。

Apache DolphinScheduler 海豚调度器自定义时间参数相关推荐

  1. Dolphinscheduler/海豚调度器的安装

    Dolphinscheduler的安装 一.预安装 1.1 安装节点规划 1.2 软件下载 二.安装 2.1 创建dolphinscheduler用户 2.2 安装Java 2.3 安装Zookeep ...

  2. 海豚调度器(dolphinscheduler)再次使用,添加钉钉预警

    1,首先我们部署是海豚调度器 1.3.8 版本,由于页面只有邮件预警,所以在了解源码的同时,需要添加钉钉预警 2,说明,这一块是同事搞的,不是我搞的,新版本的dolphinscheduler已经有了钉 ...

  3. DolphinScheduler海豚调度教程

    DolphinScheduler 教程 (一)入门指南 简介 关于Dolphin Apache DolphinScheduler是一个分布式易扩展的可视化DAG工作流任务调度开源系统.解决数据研发ET ...

  4. 海豚调度器初次使用 .......

    一,部署部分省略,官网有详细的教程,顺着步骤做就好了. 二,先说说调用spark运行wordcount案例流程 1,编写代码 package com.sjb.exampleimport org.apa ...

  5. dolphinscheduler海豚调度升级代码改造-UpgradeDolphinScheduler

    dolphinscheduler数据升级代码改造 背景 升级代码改造 测试 准备工作 执行upgrade-dolphinscheduler.sh脚本 日志报错 修改代码再次验证 日志不报错 查看页面验 ...

  6. dolphinscheduler海豚调度是什么?

    Apache DolphinScheduler是一个分布式和可扩展的开源工作流协调平台,具有强大的DAG可视化界面,下面如扩展插件,服务边界说明等几个方面介绍一下如何使用DolphinSchedule ...

  7. springmvc拦截器对请求参数解密_springMvc使用拦截器自定义处理参数

    前言: 这两天开发遇到一个需求,那就是在后台接收到请求后,能不能自定义添加参数呢? 我们知道request中是能获取到前端获取的参数的,但是在后端不能再往parameter中添加参数了,虽然可以使用r ...

  8. 如何在CDH5.16.2中部署海豚调度器Apache Dolphin Scheduler 1.2.0

    Apache Dolphin Scheduler 组件介绍 分布式易扩展的可视化DAG工作流任务调度系统.致力于解决数据处理流程中错综复杂的依赖关系,使调度系统在数据处理流程中开箱即用. 官网 : h ...

  9. Apache DolphinScheduler——开源大数据调度器神器

    目 录 1. 简 介 1.1 概 念 1.2 优缺点 1.3 哪些人适合DolphinScheduler(纯属个人观点) 1.4 社区 2. 集群模式安装详解(比官网还细,个人手把手实践避坑) 2.1 ...

最新文章

  1. Vivado 随笔(6) Timing Summary 相关讨论(一)
  2. 开机后需要手动打开mysql_mysql解压版一键配置
  3. 收到贺卡和礼物的处理方法
  4. 华东交通大学2017年ACM双基程序设计大赛题解
  5. Docker删除镜像
  6. 全国计算机等级考试题库二级C操作题100套(第49套)
  7. 看完这篇文章,会让你对电容的作用更明白!
  8. 财付通 android api,财付通API接口文档.doc
  9. 判定两个点是否在一条直线的同一侧_计算几何01-判定两条线段是否相交
  10. SpringCloud工作笔记070---SpringCloud中使用Redis存储List类型数据
  11. 再谈table组件:固定表头和表列
  12. 1-csv文件,解决数字不全或者数组+e的显示的问题
  13. php读取excel最佳方案,用PHP读取excel(转)
  14. 谷歌地图 街景 api_Google使街景在地图中更加突出
  15. matlab 电力电子仿真电路,基于Matlab的电力电子电路仿真方法
  16. Kubernetes Events介绍(中)
  17. Task watchdog got triggered错误
  18. 360漏洞修复出现网管版 将探路企业级市场?
  19. 2018最新微信小程序经典案例开发视频教程合集
  20. Python 安装wheel.whl文件

热门文章

  1. 分享一个360加固脱壳模拟器
  2. 做开发你遇到最无理的需求是什么?
  3. Python学习培训方法
  4. markdown在前端的简单使用
  5. mysql源码包多大_MySQL源码包安装
  6. 《毒液·致命守护着》
  7. 当年我们一起追过的Java,Java SE 个人笔记
  8. 阿里旗下的咸鱼是什么盈利模式?很多人真的不知道!
  9. MCU芯片设计和软件开发
  10. MBR生活污水处理设备常见参数的具体作用