一些大数据开发的项目,特别是基金/证券公司的项目,都经常会涉及到交易日与非交易日的概念。
如果要让你对一张交易日跑批的主表,怎么去补全非交易日的数据呢?
在遇到这种情况的时候,我们要去怎么处理?来,实战一下。
1,理财产品报价历史表(交易日有数据)
有一张理财产品报价历史(dt分区)表:db_edw.prd_fm_quot_his
字段如下:
prd_cd --(产品代码)
fm_prd_ta_cd --(产品TA代码)
nvlu --(产品净值)
fm_prd_type_cd --(产品类型代码)
dt --(时间分区)
这张表因为是在交易日跑数,所以在非交易日,是不存在数据的。
那么怎么让这张表在每一个自然日有数据呢??这个是我们要做的。
2,时间维表(自然日)
一般都会有一张时间维度的表:db_cdm.dim_date (时间维表),记录每一天的信息,比如yyyymmdd,是不是交易日,是周几,是今年的第几天,是今年的第几周,是当月的第几天,是当月的第几周,上一个交易日,下一个交易日,等等。
有一张时间维度的表:db_cdm.dim_date (时间维表)
有如下重要字段:
date_id --自然日(年月日)
trd_day_flag --交易日标志(1为交易日,0为非交易日)
last_trd_date_id --上一个交易日
dt --时间分区
3,处理为:理财产品报价历史表(自然日有数据)
处理规则:当然是让理财产品报价历史表,在非交易日那几天,按照上一个交易日的数据信息来使用。
代码如下:
注释:'${v_start_date}', '${v_end_date}' 是时间参数
理财产品报价历史表的dt(交易日),和时间维表(处理之后)的trd_date(交易日),关联会数据发散为所有自然日。
=====================================
知识点不难,但以后肯定能用上。欢迎一键三连。