数据仓库-拉链算法

数据仓库-拉链算法,如何处理开链、闭链数据

\timing on
set client_encoding='GBK';
/******程序功能说明*********************************//*****以下根据任务不同进行变量设置*****************/SELECT:'AUTO_PDMVIEW' 	AS "PDM_VIEW",:'20230710' 		AS "20230710",:'AUTO_exampleDB' 		AS "example_DATA",:'AUTO_SDATADB' 	AS "SDATA",:'AUTO_exampleVIEW' 	AS "example_VIEW",:'AUTO_ODSVIEW' 	AS "ODS_VIEW",:'AUTOVIEW' 	AS "SUM_VIEW",:'AUTOEVIEW' 	AS "CDE_VIEW"--,'examplesc_read'      AS    "example_DATA"	,:'MAX_DT' 			AS "MAX_DT",:'NULL_DT' 		AS "NULL_DT"
; 
\gset/******以下为程序主体******************************/数据示例:
Start_Dt   End_Dt
20230601  30001231
20230710  30001231 (正常无数据)
20230501  20230710 (正常无数据)DELETE FROM :example_DATA.INT_D_example_ACCT_CAP_CHANGE
WHERE Start_Dt = TO_DATE(:'20230710','YYYYMMDD')
and sys_src='exam';Start_Dt   End_Dt
20230601  30001231
20230501  20230710UPDATE :example_DATA.int_d_example_acct_cap_change
SET End_Dt = TO_DATE('30001231','YYYYMMDD')
WHERE End_Dt = TO_DATE(:'20230710','YYYYMMDD')
and sys_src='exam';Start_Dt   End_Dt
20230601  30001231
20230501  30001231CREATE TEMPORARY TABLE int_d_example_acct_cap_change_ND(LIKE :example_DATA.int_d_example_acct_cap_change INCLUDING DEFAULTS INCLUDING CONSTRAINTS)
ON COMMIT PRESERVE ROWS;INSERT INTO int_d_example_acct_cap_change_ND
(asset_acct
,securities_code,TO_DATE(:'TX_DATE','YYYYMMDD')AS  update_dt,TO_DATE(:'TX_DATE','YYYYMMDD') AS Start_Dt     ,TO_DATE('30001231','YYYYMMDD') AS End_Dt 
)
select COALESCE(TRIM(CAST(A.fundid AS bigint)), '')  asset_acct  ---资金账户
, case when trim(b.belong_exampleflag)='0' then 'E1005731000018' else 'E1013565000016' end as securities_code   ---金融机构编码
from  :ODS_VIEW.ODS_exam_FUNDINFO   A 
left join :CDE_VIEW.examplebroke_branch  B 
on (case  when  TRIM(A.orgid) = '0000' then  'ORG-999'else  COALESCE('ORG-' || TRIM(A.orgid), '')END)=trim(B.branch)WHERE A.Ods_Start_Dt <=:'20230710'AND A.Ods_End_Dt >:'20230710' 
;
-----插入原数据
CREATE TEMPORARY TABLE int_d_example_acct_cap_change_OD(LIKE :example_DATA.int_d_example_acct_cap_change INCLUDING DEFAULTS INCLUDING CONSTRAINTS)
ON COMMIT PRESERVE ROWS;
--插入新数据
CREATE TEMPORARY TABLE int_d_example_acct_cap_change_W_I(LIKE :example_DATA.int_d_example_acct_cap_change INCLUDING DEFAULTS INCLUDING CONSTRAINTS)
ON COMMIT PRESERVE ROWS;----插入更新的数据
CREATE TEMPORARY TABLE int_d_example_acct_cap_change_W_U(LIKE :example_DATA.int_d_example_acct_cap_change INCLUDING DEFAULTS INCLUDING CONSTRAINTS)
ON COMMIT PRESERVE ROWS;9号全部开链的切片数据插入数据错乱情况:
1、该闭链的开链了,这样的话该条数据取到,但是在处理的时候会被闭链,10号数据里会新增一条,开链
2、该开链的闭链了,这样的话该条数据取不到,10号数据里会新增一条,并且开链
INSERT INTO int_d_example_acct_cap_change_OD
SELECT * FROM :example_DATA.int_d_example_acct_cap_change
WHERE Start_Dt <= TO_DATE(:'20230710','YYYYMMDD')
AND   End_Dt   > TO_DATE(:'20230710','YYYYMMDD')
AND   sys_src='exam'
;全字段找出有变动、或者新增的数据,插入W_I表(比如10号的数据,不在9号的里面),如果数据有减少,则找不出来
INSERT INTO int_d_example_acct_cap_change_W_I
(
asset_acct
,securities_code)
SELECT 
asset_acct
,securities_code   
FROM int_d_example_acct_cap_change_ND
WHERE    sys_src='exam' AND (
COALESCE(asset_acct,'')
,COALESCE( securities_code,''))  NOT IN (SELECT 
COALESCE(asset_acct,'')
,COALESCE( securities_code,'')
FROM int_d_example_acct_cap_change_ODWHERE   sys_src='exam'  )
;找出在9号切片,OD(old)里,但是不在10号ods表中,ND(new)里的数据,找出有变动或者减少的数据
INSERT INTO int_d_example_acct_cap_change_W_U
(
asset_acct
,securities_code 
)
SELECT 
asset_acct
,securities_code
FROM int_d_example_acct_cap_change_OD
WHERE  sys_src='exam' AND (
COALESCE(asset_acct,'')
,COALESCE( securities_code,''))  NOT IN (SELECT 
COALESCE(asset_acct,'')
,COALESCE( securities_code,'')
FROM int_d_example_acct_cap_change_ND
WHERE   sys_src='exam')
;把变动的数据闭链,减少的数据也闭链
UPDATE :example_DATA.int_d_example_acct_cap_change
SET End_Dt = TO_DATE(:'20230710','YYYYMMDD')
WHERE (
COALESCE(asset_acct,'')
,COALESCE( securities_code,'')
) IN (
SELECT 
COALESCE(asset_acct,'')
,COALESCE( securities_code,'')
FROM int_d_example_acct_cap_change_W_U
WHERE  sys_src='exam')
AND Start_Dt <= TO_DATE(:'20230710','YYYYMMDD')
AND End_Dt > TO_DATE(:'20230710','YYYYMMDD')
AND  sys_src='exam'
;插入新增的数据或者有变动的数据(闭链日期已提前置为30001231)INSERT INTO :example_DATA.int_d_example_acct_cap_change
(asset_acct
,securities_code
)
SELECT 
asset_acct
,securities_codeFROM int_d_example_acct_cap_change_W_IWHERE  sys_src='exam'
;/**************************退出主程序****************************/

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

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

相关文章

语言模型的自洽性思维链推理技术

论文标题&#xff1a;Self-Consistency Improves Chain of Thought Reasoning in Language Models 论文链接&#xff1a;https://arxiv.org/abs/2203.11171 论文来源&#xff1a;ICLR 2023 一、概述 尽管语言模型在一系列NLP任务中展现出了显著的成功&#xff0c;但它们在推理能…

QGIS批量将OSM水系进行可视化显示

要批量将OSM水系进行可视化显示&#xff0c;可以使用QGIS软件和Python语言来实现。以下是详细步骤&#xff1a; 1. 打开QGIS软件&#xff0c;导入OSM数据&#xff0c;可以使用插件OSMDownloader下载OSM数据&#xff0c;或者使用OSM数据下载网站下载数据。 2. 在QGIS中创建新图…

进制转换详解(解释原理简单易懂)

前言&#xff1a;在网上看了许多篇关于不同进制之间如何转换的文章&#xff0c;包括很多浏览量上万的博客。大多都只是把转换的规则罗列了出来&#xff0c;例如十进制转二进制&#xff0c;可能大家都知道方法&#xff0c;“除以2反向取余数&#xff0c;直到商为0”。应用该方法…

Kubespray v2.22.1 在线部署 kubernetes v1.26.5 集群

文章目录 1. 介绍2. 预备条件3. 配置 hostname4. yum5. 下载介质5.1 git 下载5.2 下载 kubespray v2.22.1 6. 编写 inventory.ini7. 配置互信8. 安装 ansible9. 关闭防火墙10. 安装 docker11. 配置内核参数12. 启动容器 kubespray13. 部署14. 配置连接集群 1. 介绍 kubespray​…

论文阅读—2023.7.13:遥感图像语义分割空间全局上下文信息网络(主要为unet网络以及改unet)附加个人理解与代码解析

前期看的文章大部分都是深度学习原理含量多一点&#xff0c;一直在纠结怎么改模型&#xff0c;论文看的很吃力&#xff0c;看一篇忘一篇&#xff0c;总感觉摸不到方向。想到自己是遥感专业&#xff0c;所以还是回归遥感影像去谈深度学习&#xff0c;回归问题&#xff0c;再想着…

5月更新,docsify综合漏洞知识库!

项目介绍 一个知识库&#xff0c;集成了Vulhub、Peiqi、EdgeSecurity、0sec、Wooyun等开源漏洞库&#xff0c;涵盖OA、CMS、开发框架、网络设备、开发语言、操作系统、Web应用、Web服务器、应用服务器等多种漏洞。 关注【Hack分享吧】公众号&#xff0c;回复关键字【230428】获…

C#设计模式之---观察者模式

观察者模式&#xff08;Observer Pattern&#xff09; 观察者模式&#xff08;Observer Pattern&#xff09;是一种对象行为模式。它定义对象间的一种一对多的依赖关系&#xff0c;当一个对象的状态发生改变时&#xff0c;所有依赖于它的对象都得到通知并被自动更新。在观察者…

spring boot security自定义认证

前言 前置阅读 spring boot security快速使用示例 spring boot security之前后端分离配置 说明 实际场景&#xff0c;我们一般是把用户信息保存在db中&#xff08;也可能是调用三方接口&#xff09;&#xff0c;需要自定义用户信息加载或认证部分的逻辑&#xff0c;下面提供…

bug:file name too long文件名超出系统最大限制

各操作系统支持最长的文件和目录名称长度&#xff08;Linux、Win、Mac&#xff09; 今天开发需求的时候发现无法新建文件&#xff0c;提示file name too lang&#xff0c;于是翻阅和查询了一些资料&#xff0c;发现不同操作系统下文件名和目录名最长的长度不同。 操作系统文件名…

小程序主包超1.5MB分包处理流程优化方案

"subPackages": [// 分包1 {"root": "src, // 根目录"pages": [{"path": "views/business/index", // 页面路径"name": "business_index","aliasPath": "/business/index",&…

make/makefile的使用

make/makefile 文章目录 make/makefile初步认识makefile的工作流程依赖关系和依赖方法make的使用 总结 make是一个命令&#xff0c;是一个解释makefile中指令的命令工具&#xff0c;makefile是一个文件&#xff0c;当前目录下的文件&#xff0c;两者搭配使用&#xff0c;完成项…

快速上手dva

Dva 是一个基于 redux 和 redux-saga 的前端框架&#xff0c;它简化了 redux 和 redux-saga 的使用&#xff0c;并且内置了 react-router 和 fetch&#xff0c;所以也支持路由和异步操作。以下是一些基本的 Dva 使用方法&#xff1a; 快速上手 安装&#xff1a;首先&#xff…

异常参数处理:如何处理前端传递的非法参数,确保系统安全稳定

当前端将参数传递给后端时&#xff0c;考虑到各种异常情况&#xff0c;以下是对应的解决示例&#xff1a; 缺少必要的参数&#xff1a; 异常情况&#xff1a;前端未传递必要的参数&#xff0c;导致后端无法正常处理请求。 解决方案&#xff1a;在后端进行参数校验&#xff0c;如…

HarmonyOS学习路之方舟开发框架—学习ArkTS语言(基本语法 二)

自定义组件 创建自定义组件 在ArkUI中&#xff0c;UI显示的内容均为组件&#xff0c;由框架直接提供的称为系统组件&#xff0c;由开发者定义的称为自定义组件。在进行 UI 界面开发时&#xff0c;通常不是简单的将系统组件进行组合使用&#xff0c;而是需要考虑代码可复用性、…

从后验与模型推断视角深入剖析MATLAB中的变分贝叶斯蒙特卡罗(VBMC)算法:理论、代码示例与下载指南

在实践复杂的计算模型时&#xff0c;贝叶斯推断经常被用来进行参数估计和模型比较。其中&#xff0c;变分贝叶斯蒙特卡罗(VBMC)是一种高效的近似推理方法&#xff0c;能够在有限的预算下对具有潜在噪声似然评估的计算模型进行拟合和评估。这种方法并不只提供最优参数向量&#…

Python采集课堂视频教程, m3u8视频解密

前言 嗨喽&#xff0c;大家好呀~这里是爱看美女的茜茜呐 环境使用: Python 3.8 解释器 Pycharm 编辑器 模块使用&#xff1a; requests >>> pip install requests pycryptodome --> pip install pycryptodome re 第三方模块安装方法&#xff1a; win R 输…

7.14~7.15学习总结

Java的前置知识学习时间截至了&#xff0c;慌的一批~~。 看看自己学的&#xff0c;再看看要求学的&#xff0c;简直&#xff1a; 现在继续&#xff1a;IO流里面的Commons_IO的用法&#xff1a; public class Main {public static void main(String[]args) throws IOException…

【C++】多线程编程三(std::mutexstd::mutex、std::lock_guard、std::unique_lock详解)

目录 一、线程间共享数据 1.数据共享和条件竞争 2.避免恶性条件竞争 二、用互斥量来保护共享数据 1. 互斥量机制 2.mutex头文件介绍 三、C中使用互斥量mutex 1. 互斥量mutex使用 2.mutex类成员函数 ① 构造函数 ② lock() ③ unlock() ④ try_lock() 四、使用std::…

如何与ChatGPT愉快地聊天

原文链接&#xff1a;https://mp.weixin.qq.com/s/ui-O4CnT_W51_zqW4krtcQ 人工智能的发展已经走到了一个新的阶段&#xff0c;在这个阶段&#xff0c;人工智能可以像人一样与我们进行深度的文本交互。其中&#xff0c;OpenAI的ChatGPT是一个具有代表性的模型。然而&#xff0…

(02)Cartographer源码无死角解析-(80) 核心要点→local坐标系、子图坐标系、切片坐标系、地图坐标系等相转换与联系

讲解关于slam一系列文章汇总链接:史上最全slam从零开始,针对于本栏目讲解(02)Cartographer源码无死角解析-链接如下: (02)Cartographer源码无死角解析- (00)目录_最新无死角讲解:https://blog.csdn.net/weixin_43013761/article/details/127350885 文末正下方中心提供了本…