Postgres的级数生成函数generate_series应用

Postgres的级数生成函数generate_series应用

引用:http://postgres.cn/docs/12/functions-srf.html

函数文档

级数生成函数

函数	参数类型	返回类型	描述
generate_series(start, stop)	int、bigint或者numeric	setof int、setof bigint或者setof numeric(与参数类型相同)	产生一系列值,从start到stop,步长为 1
generate_series(start, stop, step)	int、bigint或者numeric	setof int、setof bigint或者setof numeric(与参数类型相同)	产生一系列值,从start到stop,步长为step
generate_series(start, stop, step interval)	timestamp或timestamp with time zone	setof timestamp或setof timestamp with time zone(和参数类型相同)	产生一系列值,从start到stop,步长为step当step为正时,如果start大于stop则返回零行。相反,当step为负时,如果start小于stop则返回零行。对于NULL输入也会返回零行。step为零是一个错误。

案例

SELECT * FROM generate_series(2,4);generate_series
-----------------234
(3 rows)SELECT * FROM generate_series(5,1,-2);generate_series
-----------------531
(3 rows)SELECT * FROM generate_series(4,3);generate_series
-----------------
(0 rows)SELECT generate_series(1.1, 4, 1.3);generate_series 
-----------------1.12.43.7
(3 rows)-- 这个例子依赖于日期+整数操作符
SELECT current_date + s.a AS dates FROM generate_series(0,14,7) AS s(a);dates
------------2004-02-052004-02-122004-02-19
(3 rows)SELECT * FROM generate_series('2008-03-01 00:00'::timestamp, '2008-03-04 12:00', '10 hours');generate_series   
---------------------2008-03-01 00:00:002008-03-01 10:00:002008-03-01 20:00:002008-03-02 06:00:002008-03-02 16:00:002008-03-03 02:00:002008-03-03 12:00:002008-03-03 22:00:002008-03-04 08:00:00
(9 rows)

应用

上个月做了个大屏项目,系统涉及到很多资源各个层级维度的统计,资源存在于很多不同的数据库或者文件,最低计算粒度是按日统计前一天的数据。

跑任务每日任务和图表查询需求拆分实现。项目实现了在线配置数据源和 SQL 任务,支持动态配置更新的数据源/任务调度/任务SQL。(调度周期通过 cron 表达式定义)。

除了mysql/pg/oracle库,项目还有很多 hive 任务,背后基于 MapReduce 实现调度离线文档分析,由于 hive 任务都比较重,执行时间比较长,并发也是有限制的。

一两百个 hive 任务,为避开集中调度高峰,现打散任务调度时间,每隔5分钟执行一个新任务。

今天的主角,Postgres 的序列数据生成函数generate_series(),就可以帮到忙。

# SELECT 60 * 24 = 1440 分钟SELECT ('0 ' || (generate_series(0, 1440, 5) % 60) || ' ' || (generate_series(0, 1440, 5) / 60) || ' * * ?') AS cron0 0 0 * * ?
0 5 0 * * ?
0 10 0 * * ?
0 15 0 * * ?
……
0 55 23 * * ?
0 0 24 * * ?  # 此时间不存在,需要剔除

附录

cron 表达式用来定义定时任务的执行策略,表达式字符串由 6 个空格分为 7 个域,每一个域代表一个时间含义。

[] [] [] [] [] [] []
0 */1 * * * ?  # 每隔1分钟执行一次
0 0 22 * * ?  # 每天22点执行一次
0 0 1 1 * ?  # 每月1号凌晨1点执行一次
0 0 23 L * ?  # 每月最后一天23点执行一次
0 0 3 ? * L  # 每周周六凌晨3点实行一次
0 24,30 * * * ?  # 在24分、30分执行一次

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/170861.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

为什么Android 手机这么慢?如何提高 Android 手机的运行速度

速印机(理想、荣大等)、复印机(夏普、东芝、理光、佳能、震旦等全系列)、打印机、扫描仪、传真机、多媒体教学一体机、交互式电子白板、报警器材、监控、竞业达监考设备及其它监考设备、听力考试设备、特种安防设备维护及维修。吴…

时间序列预测:深度学习、机器学习、融合模型、创新模型实战案例(附代码+数据集+原理介绍)

本文介绍->给大家推荐一下我的时间序列预测实战专栏,本专栏平均质量分98分,而且本专栏目前免费阅读。其中涉及机器学习、深度学习、融合模型、个人创新模型、数据分析等一系列有关时间序列的内容,其中的实战案例不仅有简单的模型类似于机器…

EXIT(1)

EXTI介绍 EXTI是片上外设 NVIC是cpu内的外设 回忆起之前的GPIO和AFIO 我们是如何检测按键按下的 我们是一直用while循环读取IDR寄存器的对应位置的值 一直检测判断按键是否被按下 那么是否有第二种方式检测按键是否被按下了呢? 通过EXTI 当EXTI检测到按键的电平发生…

飞书开发学习笔记(五)-Python快速开发网页应用

飞书开发学习笔记(五)-Python快速开发网页应用 一.下载示例代码 首先进入飞书开放平台: https://open.feishu.cn/app 凭证与基础信息 页面,在 应用凭证 中获取 App ID 和 App Secret 值。 教程和示例代码位置:https://open.feishu.cn/document/home/integrating-…

Vue+OpenLayers 创建地图并显示鼠标所在经纬度

1、效果 2、创建地图 本文用的是高德地图 页面 <div class"map" id"map"></div><div id"mouse-position" class"position_coordinate"></div>初始化地图 var gaodeLayer new TileLayer({title: "高德地…

Spring Boot 中自动装配机制的原理

&#xff08;摘自mic老师面试题&#xff09; 最近一个粉丝说&#xff0c;他面试了 4 个公司&#xff0c;有三个公司问他&#xff1a;“Spring Boot 中自动装配 机制的原理” 他回答了&#xff0c;感觉没回答错误&#xff0c;但是怎么就没给 offer 呢&#xff1f; 对于这个问题…

sqli-labs关卡14(基于post提交的双引号闭合的报错注入)通关思路

文章目录 前言一、回顾上一关知识点二、靶场第十四关通关思路1、判断注入点2、爆显位3、爆数据库名4、爆数据库表5、爆数据库列6、爆数据库关键信息 总结 前言 此文章只用于学习和反思巩固sql注入知识&#xff0c;禁止用于做非法攻击。注意靶场是可以练习的平台&#xff0c;不…

“咸阳杯·美洲队中国行”国际足球邀请赛圆满举办

巴拿马1:0乌拉圭 “咸阳杯美洲队中国行”国际足球邀请赛圆满举办 11月12日下午3&#xff1a;00&#xff0c;由陕旅集团联合承办、陕体集团协办的“咸阳杯美洲队中国行”国际足球邀请赛在咸阳奥体中心开赛。两支美洲劲旅&#xff1a;巴拿马国家队与乌拉圭国青队龙争虎斗&#…

错误:FUNCTION simple_notebook.count does not exist.解决方法

0 引入问题 小王&#xff1a;你这个数据有问题啊&#xff0c;有时候还会报错 小腾&#xff1a;怎么会有问题呢&#xff0c;代码写的一点毛病也没有 小王&#xff1a;没问题怎么会报错&#xff0c;你赶紧看看&#xff0c;项目上线甲方看到了报给老板咱俩就寄了 小腾&#xff1a…

「Verilog学习笔记」4bit超前进位加法器电路

专栏前言 本专栏的内容主要是记录本人学习Verilog过程中的一些知识点&#xff0c;刷题网站用的是牛客网 分析 timescale 1ns/1nsmodule lca_4(input [3:0] A_in ,input [3:0] B_in ,input C_1 ,output wire CO ,output wire [3:0] …

Linux 程序开发流程 / 基本开发工具 / Vim / GCC工具链 / Make 工具 / Makefile 模板

编辑整理 by Staok。 本文部分内容摘自 “100ask imx6ull” 开发板的配套资料&#xff08;如 百问网的《嵌入式Linux应用开发完全手册》&#xff0c;在 百问网 imx6ull pro 开发板 页面 中的《2.1 100ASK_IMX6ULL_PRO&#xff1a;开发板资料》或《2.2 全系列Linux教程&#xf…