新增说明文档
This commit is contained in:
parent
e11302904f
commit
9226e54f79
281
README.md
Normal file
281
README.md
Normal file
@ -0,0 +1,281 @@
|
|||||||
|
# 领悦看板项目代码库
|
||||||
|
|
||||||
|
---
|
||||||
|
## 一、代码范围说明
|
||||||
|
|
||||||
|
1.**数仓``dw``**
|
||||||
|
|
||||||
|
- dim层表加工逻辑: dw/dim
|
||||||
|
- dwd层表加工逻辑: dw/dwd
|
||||||
|
- dws层表加工逻辑: dw/dws
|
||||||
|
|
||||||
|
2.**帆软报表后台逻辑``finereport``**
|
||||||
|
|
||||||
|
- 明细表加工逻辑
|
||||||
|
- 大屏关键指标加工逻辑
|
||||||
|
- 填报表目标库表及校验规则
|
||||||
|
|
||||||
|
|
||||||
|
## 二、SQL开发规范分享
|
||||||
|
|
||||||
|
### 1. 建表脚本(DDL)
|
||||||
|
|
||||||
|
**【建表语句】**
|
||||||
|
|
||||||
|
命名规则示例: **create_dwd_cost_budget_data_d.sql**
|
||||||
|
|
||||||
|
```sql
|
||||||
|
-- *****************************************
|
||||||
|
-- 开发人员: 杨坤安
|
||||||
|
-- 创建日期: 2024-07-18
|
||||||
|
-- 功 能: 费控预算金额明细表
|
||||||
|
-- *****************************************
|
||||||
|
DROP TABLE IF EXISTS dw.dwd_cost_budget_data_d;
|
||||||
|
CREATE TABLE IF NOT EXISTS dw.dwd_cost_budget_data_d (
|
||||||
|
dimaccountcode VARCHAR(255) COMMENT '预算科目编码'
|
||||||
|
,dimaccountname VARCHAR(255) COMMENT '预算科目名称'
|
||||||
|
,dimsubjectcode VARCHAR(255) COMMENT '组织机构编码'
|
||||||
|
,dimsubjectname VARCHAR(255) COMMENT '组织机构名称'
|
||||||
|
,yearname VARCHAR(50) COMMENT '年'
|
||||||
|
,totalcode VARCHAR(255) COMMENT '组织机构层级编码'
|
||||||
|
,monthname VARCHAR(50) COMMENT '月'
|
||||||
|
,buget VARCHAR(255) COMMENT '预算金额'
|
||||||
|
,occ VARCHAR(255) COMMENT '已占用金额'
|
||||||
|
,realfee VARCHAR(255) COMMENT '已使用金额'
|
||||||
|
,available VARCHAR(255) COMMENT '剩余可用金额'
|
||||||
|
,budgetfee_rate VARCHAR(50) COMMENT '预算执行率'
|
||||||
|
)COMMENT = '费控预算金额明细表'
|
||||||
|
```
|
||||||
|
|
||||||
|
**【修改表字段】**
|
||||||
|
|
||||||
|
命名规则示例: **alter_dwd_cost_budget_data_d.sql**
|
||||||
|
|
||||||
|
```sql
|
||||||
|
-- *****************************************
|
||||||
|
-- 开发人员: 杨坤安
|
||||||
|
-- 修改日期: 2024-07-18
|
||||||
|
-- 修改内容: 字段修改 monthname -> month_name
|
||||||
|
-- ... -> ...
|
||||||
|
-- *****************************************
|
||||||
|
|
||||||
|
ALTER TABLE dw.dwd_cost_budget_data_d MODIFY COLUMN monthname month_name;
|
||||||
|
```
|
||||||
|
|
||||||
|
**【字段命名规范】**
|
||||||
|
|
||||||
|
- 字段中文名翻译过来的单词来命名
|
||||||
|
|
||||||
|
- 如果翻译的单词太长,可以适当截取单词,尽量直观一点
|
||||||
|
|
||||||
|
- <font color = 'red'>不要使用拼音、关键字命名字段</font>
|
||||||
|
|
||||||
|
**【表命名规范】**
|
||||||
|
|
||||||
|
数仓层\_业务域\_主要业务数据_跑数天(D|M|Q|Y|)
|
||||||
|
|
||||||
|
如: dwd_cost_budget_data_d
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
### 2. 数据转换、加载(DML)
|
||||||
|
|
||||||
|
**【关键字大写】**
|
||||||
|
|
||||||
|
使用select、from、where等关键字时使用大写
|
||||||
|
|
||||||
|
**【层级关联表别名】**
|
||||||
|
|
||||||
|
多个表关联,最外层用T1、T2、T3等顺序命名
|
||||||
|
|
||||||
|
里面关联子表使用A、B、C、D顺序命名
|
||||||
|
|
||||||
|
子表中关联使用A1、A2、B1、B2顺序命名
|
||||||
|
|
||||||
|
**【注释】**
|
||||||
|
|
||||||
|
脚本头注释: 写明谁开发的、开发日期、改段sql主要的功能是什么
|
||||||
|
|
||||||
|
字段注释: 每个字段必写字段的中文名称,方便理解
|
||||||
|
|
||||||
|
复杂功能注释: 如果有较复杂的加工逻辑,简要注释写一下该段的加工说明
|
||||||
|
|
||||||
|
**【其他】**
|
||||||
|
|
||||||
|
字段分割符`,`放到第一列,批量修改比较容易
|
||||||
|
|
||||||
|
注释间隔、缩进怎么整齐怎么来
|
||||||
|
|
||||||
|
**【示例】**
|
||||||
|
|
||||||
|
```sql
|
||||||
|
truncate dw.dwd_cost_detail_data_d;
|
||||||
|
INSERT into dw.dwd_cost_detail_data_d
|
||||||
|
SELECT
|
||||||
|
T1.yearname AS yearname -- 年
|
||||||
|
,T1.monthname AS monthname -- 月
|
||||||
|
,T2.organ_code AS organ_code -- 片区ID
|
||||||
|
,T2.organ_name AS organ_name -- 片区名称
|
||||||
|
,T1.cost_code AS cost_code -- 成本类型编码: LC:行政成本 AC:人力成本
|
||||||
|
,T1.cost_name AS cost_name -- 成本类型名称
|
||||||
|
,T1.dimsubjectcode AS dimsubjectcode -- 组织机构编码
|
||||||
|
,T1.dimsubjectname AS dimsubjectname -- 组织机构名称
|
||||||
|
,T1.totalcode AS totalcode -- 组织机构层级编码
|
||||||
|
,T1.dimaccountcode AS dimaccountcode -- 预算科目编码
|
||||||
|
,T1.dimaccountname AS dimaccountname -- 预算科目名称
|
||||||
|
,T1.buget AS buget -- 预算金额
|
||||||
|
,T1.occ AS occ -- 已占用金额
|
||||||
|
,T1.realfee AS realfee -- 已使用金额
|
||||||
|
,T1.available AS available -- 剩余可用金额
|
||||||
|
,T1.budgetfee_rate AS budgetfee_rate -- 预算执行率
|
||||||
|
,T1.originalcurrency AS originalcurrency -- 调整金额
|
||||||
|
,T1.target_fee AS target_fee -- 目标值
|
||||||
|
,T1.actual_fee AS actual_fee -- 实际值
|
||||||
|
,ROUND((T1.target_fee - T1.actual_fee),2) AS diff_amount -- 差额
|
||||||
|
,case when T1.target_fee = 0 then '0%' else concat(ROUND((T1.actual_fee / T1.target_fee)*100,2),'%') end AS implementation_rate -- 执行率
|
||||||
|
FROM
|
||||||
|
(
|
||||||
|
SELECT
|
||||||
|
A.yearname AS yearname -- 年
|
||||||
|
,A.monthname AS monthname -- 月
|
||||||
|
,'LC' AS cost_code -- 成本类型编码: LC:行政成本 AC:人力成本
|
||||||
|
,'行政成本' AS cost_name -- 成本类型名称
|
||||||
|
,A.dimsubjectcode AS dimsubjectcode -- 组织机构编码
|
||||||
|
,A.dimsubjectname AS dimsubjectname -- 组织机构名称
|
||||||
|
,A.totalcode AS totalcode -- 组织机构层级编码
|
||||||
|
,A.dimaccountcode AS dimaccountcode -- 预算科目编码
|
||||||
|
,A.dimaccountname AS dimaccountname -- 预算科目名称
|
||||||
|
,A.buget AS buget -- 预算金额
|
||||||
|
,A.occ AS occ -- 已占用金额
|
||||||
|
,A.realfee AS realfee -- 已使用金额
|
||||||
|
,A.available AS available -- 剩余可用金额
|
||||||
|
,A.budgetfee_rate AS budgetfee_rate -- 预算执行率
|
||||||
|
,COALESCE(B.originalcurrency,0) AS originalcurrency -- 调整金额
|
||||||
|
,ROUND((A.buget - COALESCE(B.originalcurrency,0)),2) AS target_fee -- 目标值
|
||||||
|
,A.realfee AS actual_fee -- 实际值
|
||||||
|
-- ,'' AS diff_amount -- 差额
|
||||||
|
-- ,'' AS implementation_rate -- 执行率
|
||||||
|
FROM
|
||||||
|
(
|
||||||
|
SELECT
|
||||||
|
dimaccountcode -- 预算科目编码
|
||||||
|
,dimaccountname -- 预算科目名称
|
||||||
|
,dimsubjectcode -- 组织机构编码
|
||||||
|
,dimsubjectname -- 组织机构名称
|
||||||
|
,yearname -- 年
|
||||||
|
,totalcode -- 组织机构层级编码
|
||||||
|
,monthname -- 月
|
||||||
|
,buget -- 预算金额
|
||||||
|
,occ -- 已占用金额
|
||||||
|
,realfee -- 已使用金额
|
||||||
|
,available -- 剩余可用金额
|
||||||
|
,budgetfee_rate -- 预算执行率
|
||||||
|
FROM dw.dwd_cost_budget_data_d -- 预算金额明细表
|
||||||
|
WHERE dimaccountcode IN('WY0402','WY040201','WY040202','WY040203','WY040204','WY040205','WY040206','WY040207','WY040208','WY040209','WY040210','WY040211','WY040212','WY040213','WY040214','WY040215','WY040216')
|
||||||
|
)A
|
||||||
|
LEFT JOIN
|
||||||
|
(
|
||||||
|
SELECT
|
||||||
|
year -- 年
|
||||||
|
,month -- 月
|
||||||
|
,dimsubjectcode -- 调整组织机构编码
|
||||||
|
,dimaccountcode -- 调整预算科目编码
|
||||||
|
,originalcurrency -- 调整金额
|
||||||
|
FROM dw.dwd_cost_adjust_data_d -- 调整金额明细表
|
||||||
|
WHERE dimaccountcode IN('WY0402','WY040201','WY040202','WY040203','WY040204','WY040205','WY040206','WY040207','WY040208','WY040209','WY040210','WY040211','WY040212','WY040213','WY040214','WY040215','WY040216')
|
||||||
|
)B
|
||||||
|
ON A.dimaccountcode = B.dimaccountcode
|
||||||
|
AND A.dimsubjectcode = B.dimsubjectcode
|
||||||
|
AND A.yearname = B.year
|
||||||
|
AND A.monthname = B.month
|
||||||
|
UNION ALL
|
||||||
|
SELECT
|
||||||
|
A.yearname AS yearname -- 年
|
||||||
|
,A.monthname AS monthname -- 月
|
||||||
|
,'AC' AS cost_code -- 成本类型编码: LC:行政成本 AC:人力成本
|
||||||
|
,'人力成本' AS cost_name -- 成本类型名称
|
||||||
|
,A.dimsubjectcode AS dimsubjectcode -- 组织机构编码
|
||||||
|
,A.dimsubjectname AS dimsubjectname -- 组织机构名称
|
||||||
|
,A.totalcode AS totalcode -- 组织机构层级编码
|
||||||
|
,A.dimaccountcode AS dimaccountcode -- 预算科目编码
|
||||||
|
,A.dimaccountname AS dimaccountname -- 预算科目名称
|
||||||
|
,A.buget AS buget -- 预算金额
|
||||||
|
,A.occ AS occ -- 已占用金额
|
||||||
|
,A.realfee AS realfee -- 已使用金额
|
||||||
|
,A.available AS available -- 剩余可用金额
|
||||||
|
,A.budgetfee_rate AS budgetfee_rate -- 预算执行率
|
||||||
|
,COALESCE(B.originalcurrency,0) AS originalcurrency -- 调整金额
|
||||||
|
,ROUND((A.buget - COALESCE(B.originalcurrency,0)),2) AS target_fee -- 目标值
|
||||||
|
,A.realfee AS actual_fee -- 实际值
|
||||||
|
-- ,'' AS diff_amount -- 差额
|
||||||
|
-- ,'' AS implementation_rate -- 执行率
|
||||||
|
FROM
|
||||||
|
(
|
||||||
|
SELECT
|
||||||
|
dimaccountcode -- 预算科目编码
|
||||||
|
,dimaccountname -- 预算科目名称
|
||||||
|
,dimsubjectcode -- 组织机构编码
|
||||||
|
,dimsubjectname -- 组织机构名称
|
||||||
|
,yearname -- 年
|
||||||
|
,totalcode -- 组织机构层级编码
|
||||||
|
,monthname -- 月
|
||||||
|
,buget -- 预算金额
|
||||||
|
,occ -- 已占用金额
|
||||||
|
,realfee -- 已使用金额
|
||||||
|
,available -- 剩余可用金额
|
||||||
|
,budgetfee_rate -- 预算执行率
|
||||||
|
FROM dw.dwd_cost_budget_data_d -- 预算金额明细表
|
||||||
|
WHERE dimaccountcode IN('WY0401','WY040101','WY040102','WY040103','WY040104','WY040105','WY040106','WY040107','WY040108','WY040109','WY040110','WY040111','WY040112','WY040113','WY040114')
|
||||||
|
)A
|
||||||
|
LEFT JOIN
|
||||||
|
(
|
||||||
|
SELECT
|
||||||
|
year -- 年
|
||||||
|
,month -- 月
|
||||||
|
,dimsubjectcode -- 调整组织机构编码
|
||||||
|
,dimaccountcode -- 调整预算科目编码
|
||||||
|
,originalcurrency -- 调整金额
|
||||||
|
FROM dw.dwd_cost_adjust_data_d -- 调整金额明细表
|
||||||
|
WHERE dimaccountcode IN('WY0401','WY040101','WY040102','WY040103','WY040104','WY040105','WY040106','WY040107','WY040108','WY040109','WY040110','WY040111','WY040112','WY040113','WY040114')
|
||||||
|
)B
|
||||||
|
ON A.dimaccountcode = B.dimaccountcode
|
||||||
|
AND A.dimsubjectcode = B.dimsubjectcode
|
||||||
|
AND A.yearname = B.year
|
||||||
|
AND A.monthname = B.month
|
||||||
|
)T1
|
||||||
|
LEFT JOIN
|
||||||
|
(
|
||||||
|
SELECT
|
||||||
|
organ_code -- erp片区id
|
||||||
|
,organ_name -- erp片区名称
|
||||||
|
,cost_comm_id -- 费控项目id
|
||||||
|
FROM dw.dim_organ_mapping -- 片区项目映射维度表
|
||||||
|
where cost_comm_id is not null
|
||||||
|
GROUP BY
|
||||||
|
organ_code -- erp片区id
|
||||||
|
,organ_name -- erp片区名称
|
||||||
|
,cost_comm_id -- 费控项目id
|
||||||
|
)T2
|
||||||
|
ON T1.dimsubjectcode = T2.cost_comm_id
|
||||||
|
;
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
### 3. 优化SQL查询
|
||||||
|
|
||||||
|
- 避免使用``select * from xxx``,需要哪些字段,select哪些字段即可;
|
||||||
|
|
||||||
|
- 需要where过滤的的,在关联前进行过滤,避免关联后再进行过滤;
|
||||||
|
|
||||||
|
- 较为复杂的转换加工进行落表;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user