今日指数项目之ETL数据业务开发(功能实现)【八】_etl开发文档

当日成交金额 cur_trade_amt decimal(18,2) tra_stock_day_info
总股本 tot_cap decimal(18,0) pd_stock_sec_info
流通股本 nego_cap decimal(18,0) pd_stock_sec_info
信用评级 credit_level varchar(20) pd_stock_sec_info
是否已上市 if_list char(1) pd_wind_base_info
交易货币代码 trade_curr_code varchar(20) pd_wind_base_info
交易所代码 exch_code varchar(10) pd_wind_base_info
备注:ODS数据表中的trade_date字段为历史数据,如果想获取T-1日日期,可通过date_sub(current_date,1) 获取。
参考代码:
insert overwrite table maynor_quot_dw.sum_stock_close_dtl_day partition (dt=‘20200704’)
select
a.trade_date
,a.sec_code
,a.sec_abbr
,a.last_close_price
,a.cur_open_price
,a.cur_high_price
,a.cur_low_price
,a.cur_close_price
,a.cur_trade_vol
,a.cur_trade_amt
,b.tot_cap
,b.nego_cap
,b.credit_level
,c.if_list
,c.trade_curr_code
,c.exch_code
from maynor_quot_ods.tra_stock_day_info a
join maynor_quot_ods.pd_stock_sec_info b
on a.sec_code = b.sec_code
join maynor_quot_ods.pd_wind_base_info c
on a.sec_code = c.sec_code;

查询结果数据:
select * from maynor_quot_dw.sum_stock_close_dtl_day limit 5;
删除分区表数据:
alter table maynor_quot_dw.sum_stock_close_dtl_day drop partition(dt=‘20200704’);

5.4.2.深市每日证券收盘明细表
1、关联ods层深市个股交易信息和基础信息,将数据插入到日分区: 20200704分区
2、插入数据后使用 hive/beeline确认数据是否正确映射
深证个股日交易信息表(tra_stock_day_info_sz)与个股证券基本信息表(pd_stock_sec_info)和万德数据证券基础信息表(pd_wind_base_info)通过证券代码(sec_code)进行关联,组成深市每日证券收盘明细表(sum_stock_close_dtl_day_sz)。
新表字段如下:
列名 字段 类型 来源表
交易日期 trade_date date tra_stock_day_info_sz
证券代码 sec_code char(6) tra_stock_day_info_sz
证券简称 sec_abbr varchar(8) tra_stock_day_info_sz
昨日收盘价 last_close_price decimal(8,2) tra_stock_day_info_sz
当日开盘价 cur_open_price decimal(8,2) tra_stock_day_info_sz
当日收盘价 cur_high_price decimal(8,2) tra_stock_day_info_sz
当日最高价 cur_low_price decimal(8,2) tra_stock_day_info_sz
当日最低价 cur_close_price decimal(8,2) tra_stock_day_info_sz
当日成交量 cur_trade_vol decimal(18,0) tra_stock_day_info_sz
当日成交金额 cur_trade_amt decimal(18,2) tra_stock_day_info_sz
总股本 tot_cap decimal(18,0) pd_stock_sec_info
流通股本 nego_cap decimal(18,0) pd_stock_sec_info
信用评级 credit_level varchar(20) pd_stock_sec_info
是否已上市 if_list char(1) pd_wind_base_info
交易货币代码 trade_curr_code varchar(20) pd_wind_base_info
交易所代码 exch_code varchar(10) pd_wind_base_info
参考代码:
insert overwrite table maynor_quot_dw.sum_stock_close_dtl_day_sz partition (dt=‘20200704’)
select
a.trade_date
,a.sec_code
,a.sec_abbr
,a.last_close_price
,a.cur_open_price
,a.cur_high_price
,a.cur_low_price
,a.cur_close_price
,a.cur_trade_vol
,a.cur_trade_amt
,b.tot_cap
,b.nego_cap
,b.credit_level
,c.if_list
,c.trade_curr_code
,c.exch_code
from maynor_quot_ods.tra_stock_day_info_sz a
join maynor_quot_ods.pd_stock_sec_info b
on a.sec_code = b.sec_code
join maynor_quot_ods.pd_wind_base_info c
on a.sec_code = c.sec_code;

查询结果数据:
select * from maynor_quot_dw.sum_stock_close_dtl_day_sz limit 5;

5.4.3.板块个股对应基本信息表
1、关联ods层板块基本信息表、万德数据证券基础信息和个股证券基本信息,将数据插入到日分区: 20200704分区
2、插入数据后使用 hive/beeline确认数据是否正确映射
板块基本信息表(pd_sector_base_info)与万德数据证券基础信息表(pd_wind_base_info)通过证券id(sec_id)关联;再通过证券代码(sec_code)关联个股证券基本信息表(pd_stock_sec_info),按照算法描述过滤数据,最后组成板块个股对应基本信息表。(sum_sector_stock_base_info)。
过滤条件:1、行业板块代码以85开头
2、只筛选行业板块数据中板块类型(sec_type_code)为A股数据
新表字段如下:
列名 字段 类型 来源表
更新时间 etl_time timestamp
交易日期 trade_date date pd_sector_base_info
板块代码 sector_code varchar (6) pd_sector_base_info
板块名称 sector_name varchar (20) pd_sector_base_info
板块类型 sector_type char (1) pd_sector_base_info
个股代码 sec_code char (6) pd_wind_base_info
个股流通股本 nego_cap decimal(18,0) pd_stock_sec_info
证券上市地点简称 sec_abbr varchar (10) pd_sector_base_info
参考代码:
insert overwrite table maynor_quot_dw.sum_sector_stock_base_info partition(dt=‘20200719’)
select
current_timestamp,
a.trade_date ,
a.sector_code,
a.sector_name ,
a.sector_type,
b.sec_code ,
c.nego_cap ,
a.sec_abbr
from maynor_quot_ods.pd_sector_base_info a
join maynor_quot_ods.pd_wind_base_info b
on a.sec_id = b.sec_id
join maynor_quot_ods.pd_stock_sec_info c
on b.sec_code=c.sec_code
where a.sector_code like ‘85%’
and b.sec_type_code=‘A’
;

查询结果数据:
select * from maynor_quot_dw.sum_sector_stock_base_info limit 5;

5.4.4.沪市指数日收盘明细表
1、关联ods层上证指数日交易信息表和指数日流通基本信息表,将数据插入到日分区: 20200704分区
2、插入数据后使用 hive/beeline确认数据是否正确映射
上证指数日交易信息表(tra_index_day_info)与指数日流通基本信息(pd_index_sec_info)通过指数代码(index_code)进行关联,组成沪市指数日收盘明细表(sum_index_close_dtl_day)。
新表字段如下:
列名 字段 类型 来源表
交易日期 trade_date date tra_index_day_info
指数代码 index_code char(6) tra_index_day_info
指数名称 index_name varchar(20) tra_index_day_info
当日成交量 cur_trade_vol decimal(18,0) tra_index_day_info
当日成交金额 cur_trade_amt decimal(18,2) tra_index_day_info
昨日收盘价 last_close_price decimal(8,2) tra_index_day_info
当日开盘价 cur_open_price decimal(8,2) tra_index_day_info
当日最高价 cur_high_price decimal(8,2) tra_index_day_info
当日最低价 cur_low_price decimal(8,2) tra_index_day_info
当日收盘价 cur_close_price decimal(8,2) tra_index_day_info
涨跌幅 rf_range varchar(10) pd_index_sec_info
涨跌额 rf_val decimal(8,2) pd_index_sec_info
振幅 swing_range varchar(10) pd_index_sec_info
量比 volumn_ratio decimal(8,2) pd_index_sec_info
参考代码:
INSERT overwrite TABLE maynor_quot_dw.sum_index_close_dtl_day PARTITION (dt=‘20200704’)
SELECT
a.trade_date
,a.index_code
,a.index_name
,a.cur_trade_vol
,a.cur_trade_amt
,a.last_close_price
,a.cur_open_price
,a.cur_high_price
,a.cur_low_price
,a.cur_close_price
,b.rf_range
,b.rf_val
,b.swing_range
,b.volumn_ratio
FROM
maynor_quot_ods.tra_index_day_info a
INNER JOIN
maynor_quot_ods.pd_index_sec_info b
ON
a.index_code = b.index_code;

查询结果数据:
select * from maynor_quot_dw.sum_index_close_dtl_day limit 5;

5.4.5.深市指数日收盘明细表
1、关联ods层深证指数日交易信息表和指数日流通基本信息表,将数据插入到日分区: 20200704分区
2、插入数据后使用 hive/beeline确认数据是否正确映射
深证指数日交易信息表(tra_index_day_info_sz)与指数日流通基本信息(pd_index_sec_info)通过指数代码(index_code)进行关联,组成深市指数日收盘明细表(sum_index_close_dtl_day_sz)。
新表字段如下:
列名 字段 类型 来源表
交易日期 trade_date date tra_index_day_info_sz
指数代码 index_code char(6) tra_index_day_info_sz
指数名称 index_name varchar(20) tra_index_day_info_sz
当日成交量 cur_trade_vol decimal(18,0) tra_index_day_info_sz
当日成交金额 cur_trade_amt decimal(18,2) tra_index_day_info_sz
昨日收盘价 last_close_price decimal(8,2) tra_index_day_info_sz
当日开盘价 cur_open_price decimal(8,2) tra_index_day_info_sz
当日最高价 cur_high_price decimal(8,2) tra_index_day_info_sz
当日最低价 cur_low_price decimal(8,2) tra_index_day_info_sz
当日收盘价 cur_close_price decimal(8,2) tra_index_day_info_sz
涨跌幅 rf_range varchar(10) pd_index_sec_info
涨跌额 rf_val decimal(8,2) pd_index_sec_info
振幅 swing_range varchar(10) pd_index_sec_info
量比 volumn_ratio decimal(8,2) pd_index_sec_info
参考代码:
INSERT overwrite TABLE maynor_quot_dw.sum_index_close_dtl_day_sz PARTITION (dt=‘20200704’)
SELECT
a.trade_date
,a.index_code
,a.index_name
,a.cur_trade_vol
,a.cur_trade_amt
,a.last_close_price
,a.cur_open_price
,a.cur_high_price
,a.cur_low_price
,a.cur_close_price
,b.rf_range
,b.rf_val
,b.swing_range
,b.volumn_ratio
FROM
maynor_quot_ods.tra_index_day_info_sz a
INNER JOIN
maynor_quot_ods.pd_index_sec_info b
ON
a.index_code = b.index_code;

查询结果数据:
select * from maynor_quot_dw.sum_index_close_dtl_day_sz limit 5;

5.5.dw层数据到dm层
5.5.1.个股K线表
1、沪、深两市每日证券收盘明细表关联交易日历表,将数据插入到个股K线表日分区: 20200704分区
2、插入数据后使用 hive/beeline确认数据是否正确映射
沪市每日证券收盘明细表(sum_stock_close_dtl_day)、深市每日证券收盘明细表(sum_stock_close_dtl_day_sz)和交易日历表(tra_tcc_date)通过交易时间(trade_date)进行关联,组成个股K线表(app_sec_quot_stock_kline)。
过滤条件:1、上证股票代码以600和900开头,深证股票代码以00、200、300开头
2、沪、深两市每日证券收盘明细表T日分区数据
注意事项:查询表字段与数据保存字段是否一致。
新表字段如下:
列名 字段 类型 来源表
更新时间 update_time timestamp
交易时间 trade_date date 沪、深两市每日证券收盘明细表
证券代码 sec_code char(6) 沪、深两市每日证券收盘明细表
证券名称 sec_name varchar(20) 沪、深两市每日证券收盘明细表
k线类型 k_line_type char(1) 日K(1)、周K(2)、月K(3)
前收盘价 pre_close_price decimal(8,2) 沪、深两市每日证券收盘明细表
开盘价 open_price decimal(8,2) 沪、深两市每日证券收盘明细表
最高价 high_price decimal(8,2) 沪、深两市每日证券收盘明细表
最低价 low_price decimal(8,2) 沪、深两市每日证券收盘明细表
收盘价 close_price decimal(8,2) 沪、深两市每日证券收盘明细表
均价 avgprice decimal(8,2) 成交额/成交量
成交量 trade_vol decimal(18,0) 沪、深两市每日证券收盘明细表
成交金额 trade_amt decimal(18,2) 沪、深两市每日证券收盘明细表
参考代码:

–沪市
INSERT INTO TABLE maynor_quot_dm.app_sec_quot_stock_kline PARTITION (dt=‘20200901’)
SELECT
CURRENT_TIMESTAMP,
a.trade_date ,
a.sec_code ,
a.sec_abbr ,
‘1’,
a.last_close_price,
a.cur_open_price ,
a.cur_high_price ,
a.cur_low_price ,
a.cur_close_price,
CASE WHEN a.cur_trade_vol =0 THEN 0 ELSE ROUND(a.cur_trade_amt/a.cur_trade_vol,2) END AS avgprice,
a.cur_trade_vol,
a.cur_trade_amt
FROM
maynor_quot_dw.sum_stock_close_dtl_day a
JOIN maynor_quot_ods.tra_tcc_date b
ON a.trade_date = b.trade_date
WHERE
a.sec_code LIKE ‘60%’ OR a.sec_code LIKE ‘90%’
AND a.dt = ‘20200901’ ;

–深市
insert into table maynor_quot_dm.app_sec_quot_stock_kline partition (dt=‘20200901’)
select
current_timestamp,
a.trade_date ,
a.sec_code ,
a.sec_abbr ,
‘1’,
a.last_close_price,
a.cur_open_price ,
a.cur_high_price ,
a.cur_low_price ,
a.cur_close_price,
case when a.cur_trade_vol =0 then 0 else round(a.cur_trade_amt/a.cur_trade_vol,2) end as avgprice,
a.cur_trade_vol,
a.cur_trade_amt
from
maynor_quot_dw.sum_stock_close_dtl_day_sz a
join maynor_quot_ods.tra_tcc_date b
on a.trade_date = b.trade_date
where
a.sec_code like ‘00%’ or a.sec_code like ‘20%’ or a.sec_code like ‘30%’
and a.dt = ‘20200901’ ;

查询结果数据:
select * from maynor_quot_dm.app_sec_quot_stock_kline limit 5;

5.5.2.板块成分股表
1、关联板块个股对应基本信息表、个股K线表,将数据插入到日分区: 20200704分区
2、插入数据后使用 hive/beeline确认数据是否正确映射
板块个股对应基本信息表(sum_sector_stock_base_info)与个股K线表(app_sec_quot_stock_kline)通过证券代码(sec_code)进行关联,组成板块成分股表(app_sec_sector_stock)。
过滤条件:1、行业板块代码以85开头
2、个股K线表T日分区数据
3、K线类型是日K(1)
新表字段如下:
列名 字段 类型 来源表
更新时间 etl_time timestamp
交易日期 trade_date date sum_sector_stock_base_info
板块代码 sector_code varchar (6) sum_sector_stock_base_info
板块名称 sector_name varchar (20) sum_sector_stock_base_info
板块类型 sector_type char (1) sum_sector_stock_base_info
个股代码 sec_code char (6) sum_sector_stock_base_info
个股流通股本 nego_cap decimal(18,0) sum_sector_stock_base_info
前一交易日个股流通市值 pre_nego_cap decimal(18,2) 收盘价个股流通股本
前一交易日板块总流通市值 pre_sector_nego_cap decimal(18,2) 板块下个股数据汇总
SUM(收盘价
个股流通股本)
证券上市地点简称 sec_abbr varchar (10) sum_sector_stock_base_info
参考代码:
INSERT overwrite TABLE maynor_quot_dm.app_sec_sector_stock PARTITION (dt=‘20200902’)
SELECT
CURRENT_TIMESTAMP AS etl_time
,a.trade_date
,a.sector_code
,a.sector_name
,a.sector_type
,a.sec_code
,a.nego_cap
,a.nego_cape.close_price AS pre_nego_cap
,SUM(a.nego_cap
e.close_price) over(PARTITION BY a.sector_code) AS pre_sector_nego_cap
,a.sec_abbr
FROM maynor_quot_dw.sum_sector_stock_base_info a
JOIN maynor_quot_dm.app_sec_quot_stock_kline e
ON a.sec_code=e.sec_code
AND e.k_line_type=‘1’
WHERE a.sector_code LIKE ‘85%’
AND e.dt= ‘20200902’
;

查询结果数据:
select * from maynor_quot_dm.app_sec_sector_stock limit 5;

5.5.3.指数K线表
1、沪、深两市指数日收盘明细表关联交易日历表,将数据插入到指数K线表日分区: 20200704分区
2、插入数据后使用 hive/beeline确认数据是否正确映射
沪市指数日收盘明细表(sum_index_close_dtl_day)、深市指数日收盘明细表(sum_index_close_dtl_day_sz)和交易日历表(tra_tcc_date)进行关联,组成指数K线表(app_sec_quot_index_kline)。
过滤条件:1、过滤沪市指数代码以00开头,深市指数以39开头的指数行情数据;
2、沪、深两市指数日收盘明细表T日分区数据
注意事项:查询表字段与数据保存字段是否一致。
新表字段如下:
列名 字段 类型 来源表
更新时间 update_time timestamp
交易时间 trade_date date 沪、深两市指数日收盘明细表
指数代码 index_code char(6) 沪、深两市指数日收盘明细表
指数名称 index_name varchar(20) 沪、深两市指数日收盘明细表
k线类型 k_line_type char(1) 日K(1)、周K(2)、月K(3)
前收盘价 pre_close_price decimal(8,2) 沪、深两市指数日收盘明细表
开盘价 open_price decimal(8,2) 沪、深两市指数日收盘明细表
最高价 high_price decimal(8,2) 沪、深两市指数日收盘明细表
最低价 low_price decimal(8,2) 沪、深两市指数日收盘明细表
收盘价 close_price decimal(8,2) 沪、深两市指数日收盘明细表
均价 avgprice decimal(8,2) 成交额/成交量
成交量 trade_vol decimal(18,0) 沪、深两市指数日收盘明细表
成交金额 trade_amt decimal(18,2) 沪、深两市指数日收盘明细表
参考代码:
INSERT overwrite TABLE maynor_quot_dm.app_sec_quot_index_kline PARTITION (dt=‘20200704’)
SELECT
CURRENT_TIMESTAMP AS update_time
,a.trade_date AS trade_date
,a.index_code
,a.index_name
,‘1’ AS k_line_type
,a.last_close_price AS pre_close_price
,a.cur_open_price AS open_price
,a.cur_high_price AS high_price
,a.cur_low_price AS low_price
,a.cur_close_price AS close_price
,CASE WHEN a.cur_trade_vol=0 THEN 0 ELSE ROUND(a.cur_trade_amt/a.cur_trade_vol,2) END AS avgprice
,a.cur_trade_vol AS trade_vol

img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化资料的朋友,可以戳这里获取

vol,2) END AS avgprice
,a.cur_trade_vol AS trade_vol

[外链图片转存中…(img-aQsWbzRU-1714283858426)]
[外链图片转存中…(img-4jxiZuDt-1714283858427)]
[外链图片转存中…(img-2Eu4X9Dz-1714283858427)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化资料的朋友,可以戳这里获取

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值