数仓搭建实操(传统数仓orale):DM数据集市层

embedded/2025/2/27 23:24:09/

需求 : 

根据映射表建表

个贷客户违约信息表

建表

CREATE TABLE DM.PERSON_LOAN_WY_INFO(DATE_DT       DATE,CUST_CUNT     NUMBER,CUST_FIN      NUMBER,CUST_BAD      NUMBER,CUST_FIN_PER  VARCHAR2(30),CUST_BAD_PER  VARCHAR2(30),CUST_EXC_RAT  VARCHAR2(30)
);
COMMENT ON COLUMN PERSON_LOAN_WY_INFO.DATE_DT IS '报告日期';
COMMENT ON COLUMN PERSON_LOAN_WY_INFO.CUST_CUNT IS '总客户数';
COMMENT ON COLUMN PERSON_LOAN_WY_INFO.CUST_FIN IS '好客户数';
COMMENT ON COLUMN PERSON_LOAN_WY_INFO.CUST_BAD IS '坏客户数';
COMMENT ON COLUMN PERSON_LOAN_WY_INFO.CUST_FIN_PER IS '好客户数占比';
COMMENT ON COLUMN PERSON_LOAN_WY_INFO.CUST_BAD_PER IS '坏客户数占比';
COMMENT ON COLUMN PERSON_LOAN_WY_INFO.CUST_EXC_RAT IS '逾期率';

插入数据

INSERT INTO DM.PERSON_LOAN_WY_INFO
SELECT SYSDATE AS DATE_DT,COUNT(LA.RT_ACCT_NUM) AS CUST_CUNT,SUM(CASE WHEN TO_DATE(LA.TR_SYS_DATE,'YYYYMMDD') - TO_DATE(LA.SCHE_PAY_DATE,'YYYYMMDD') <= 40 THEN  1 ELSE 0 END ) AS CUST_FIN
----(交易日期-计划还款日期)<=40天  属于好客户,SUM(CASE WHEN TO_DATE(LA.TR_SYS_DATE,'YYYYMMDD') - TO_DATE(LA.SCHE_PAY_DATE,'YYYYMMDD') <= 40 THEN  0 ELSE 1 END ) AS CUST_BAD,ROUND(SUM(CASE WHEN TO_DATE(LA.TR_SYS_DATE,'YYYYMMDD') - TO_DATE(LA.SCHE_PAY_DATE,'YYYYMMDD') <= 40 THEN  1 ELSE 0 END ) /  COUNT(LA.RT_ACCT_NUM) * 100,2) || '%' AS CUST_FIN_PER,ROUND(SUM(CASE WHEN TO_DATE(LA.TR_SYS_DATE,'YYYYMMDD') - TO_DATE(LA.SCHE_PAY_DATE,'YYYYMMDD') <= 40 THEN  0 ELSE 1 END ) /  COUNT(LA.RT_ACCT_NUM) * 100,2) || '%' AS CUST_BAD_PER,ROUND(SUM(CASE WHEN TO_DATE(LA.TR_SYS_DATE,'YYYYMMDD') > TO_DATE(LA.SCHE_PAY_DATE,'YYYYMMDD') THEN 1 ELSE 0 END) / COUNT(LA.RT_ACCT_NUM) * 100,2) ||'%' AS CUST_EXC_RATFROM DWD.LN_LNP_ACCT_AMWKPL07 LA ;

验证/查看表内数据

SELECT * FROM DM.PERSON_LOAN_WY_INFO;

不良贷款信息表

建表 

CREATE TABLE DM.BAD_LOAN_CUST(DATE_DT           DATE,ECIF_CUST_NO      VARCHAR2(20),CUSTNAME          VARCHAR2(20),CUST_TYPE         CHAR(1),RT_CUST_NUM       VARCHAR2(50),ORG_INSTN_COD     VARCHAR2(50),TR_TRAN_AMT       NUMBER,CREDCAPI          NUMBER,TCAPI             NUMBER
);
COMMENT ON COLUMN BAD_LOAN_CUST.DATE_DT IS '报告日期';
COMMENT ON COLUMN BAD_LOAN_CUST.ECIF_CUST_NO IS '客户编号';
COMMENT ON COLUMN BAD_LOAN_CUST.CUSTNAME IS '客户姓名';
COMMENT ON COLUMN BAD_LOAN_CUST.CUST_TYPE IS '客户类型';
COMMENT ON COLUMN BAD_LOAN_CUST.RT_CUST_NUM IS '贷款账号';
COMMENT ON COLUMN BAD_LOAN_CUST.ORG_INSTN_COD IS '组织机构代码';
COMMENT ON COLUMN BAD_LOAN_CUST.TR_TRAN_AMT IS '放款金额';
COMMENT ON COLUMN BAD_LOAN_CUST.CREDCAPI IS '额度金额';
COMMENT ON COLUMN BAD_LOAN_CUST.TCAPI IS '贷款金额';

插入数据

INSERT INTO DM.BAD_LOAN_CUST
WITH TEMP AS (SELECT HC.ECIF_CUST_NO,2 AS CUST_TYPEFROM DWD.CI_CIPH_HIGH_CUST_INFO HC UNION ALL SELECTLCI.ECIF_CUST_NO,1 AS CUST_TYPEFROM DWD.CI_CIPL_LOW_CUST_INFO LCI
)
SELECT  SYSDATE AS DATA_DT,LC.ECIF_CUST_NO AS ECIF_CUST_NO,LC.CUSTNAME  AS CUSTNAME,TEMP.CUST_TYPE,LC.LOANUSE AS RT_CUST_NUM,LCC.ACBANKID AS ORG_INSTN_COD,L06.TR_TRAN_AMT  AS TR_TRAN_AMT,LC.CREDCAPI AS CREDCAPI,LC.TCAPI AS TCAPI
FROM  DWD.LN_LNP_CTRT_CBAPP LC 
INNER JOIN  TEMP 
ON    LC.ECIF_CUST_NO = TEMP.ECIF_CUST_NO
INNER JOIN DWD.LN_LNP_CUST_CBCREDCUST LCC
ON    LC.ECIF_CUST_NO = LCC.ECIF_CUST_NO
INNER JOIN DWD.LN_LNP_ACCT_AMWKPL06 L06
ON LC.LOANACNO = L06.RT_CUST_NUM;

分析

需要的表

映射表里面给出的有:

LN_LNP_CTRT_CBAPP 个贷申请信息表;

LN_LNP_CUST_CBCREDCUST 个贷客户额度管理表;

LN_LNP_ACCT_AMWKPL06 个贷放款流水表;

目标表里面有客户类型 CUST_TYPE  

CI_CIPH_HIGH_CUST_INFO 高端客户信息表>>获取高端客户信息

CI_CIPL_LOW_CUST_INFO 低端客户信息表>>获取低端客户信息

用union all 把两张表的数据上下拼接>>增加伪列 1 , 2 区分客户类型>>为了简化sql, 使用CTE公共表达式(with as )

主查询把表用内连接连接起来>>获取想要的表字段


http://www.ppmy.cn/embedded/167658.html

相关文章

在 Centos7 上部署 ASP.NET 8.0 + YOLOv11 的踩坑实录

本文将详细记录我在CentOS 7上部署ASP.NET 8.0结合YOLOv11目标检测项目过程中遇到的问题及解决方案&#xff0c;旨在为有类似需求的开发者提供参考。 1. 背景 随着人工智能技术的迅猛发展&#xff0c;目标检测成为了众多应用场景中的核心技术之一。YOLO&#xff08;You Only L…

《如何利用看板工具提升学习效率?》

从零开始&#xff1a;用看板工具打造高效学习管理系统 在当今这个信息爆炸的时代&#xff0c;知识更新换代的速度快得惊人&#xff0c;无论是学生、职场人士还是终身学习者&#xff0c;都面临着如何有效管理学习过程、提升学习效率的难题。而板栗看板这款软件&#xff0c;或许…

deepseek自动化代码生成

使用流程 效果第一步&#xff1a;注册生成各种大模型的API第二步&#xff1a;注册成功后生成API第三步&#xff1a;下载vscode在vscode中下载agent&#xff0c;这里推荐使用cline 第四步&#xff1a;安装完成后&#xff0c;设置模型信息第一步选择API provider&#xff1a; Ope…

springboot013基于SpringBoot的旅游网站的设计与实现(源码+数据库+文档)

源码地址&#xff1a;基于SpringBoot的旅游网站的设计与实现 文章目录 1.项目简介2.部分数据库结构与测试用例3.系统功能结构4.包含的文件列表&#xff08;含论文&#xff09;前端运行截图后端运行截图 1.项目简介 ​ 2 Abstract 3 1.1 课题开发的背景 4 1.2 课题研究的意义 4…

Dify工具的安装和使用

AI工具的使用 1. 安装前硬件要求 名称参数操作系统Windows 11&#xff08;64位&#xff09;处理器至少2核&#xff0c;2GHz或更快硬盘空间至少60GB 硬件越好&#xff0c;性能越高&#xff0c;处理越快。 2.安装WSL和Docker &#xff08;1&#xff09;开启Hyper-V&#xff…

Vue3的ref与reactive

为什么推荐使用ref而不是reactive reactive在使用过程中存在一些局限性&#xff0c;如果不额外注意这些问题&#xff0c;可能会给开发带来一些不便。与此不同&#xff0c;ref 更像是Vue2时代的option API中的data的替代品&#xff0c;可以存放任何数据类型&#xff0c;而reacti…

AI人工智能机器学习之监督线性模型

1、概要 本篇学习AI人工智能机器监督学习框架下的线性模型&#xff0c;以LinearRegression线性回归和LogisticRegression逻辑回归为示例&#xff0c;从代码层面测试和讲述监督学习中的线性模型。 2、监督学习之线性模型 - 简介 监督学习和线性模型是的两个重要概念。 监督学…

Lumoz Chain正式上线:AI 时代的新算力破局者

新的叙事和技术突破永远是推动行业前行的核心动力。当下&#xff0c;AI Agent无疑是最炙手可热的赛道之一。 当加密世界将目光投向AI领域时&#xff0c;大多数项目仍停留在以AI为工具或应用场景的层面&#xff0c;试图通过集成AI模型或优化链上功能来吸引用户。然而&#xff0c…