全量表:記錄每天的所有的最新?tīng)顟B(tài)的數(shù)據(jù),
增量表:記錄每天的新增數(shù)據(jù),增量數(shù)據(jù)是上次導(dǎo)出之后的新數(shù)據(jù)。
快照表:按日分區(qū),記錄截止數(shù)據(jù)日期的全量數(shù)據(jù)
切片表:切片表根據(jù)基礎(chǔ)表,往往只反映某一個(gè)維度的相應(yīng)數(shù)據(jù)。其表結(jié)構(gòu)與基礎(chǔ)表結(jié)構(gòu)相同,但數(shù)據(jù)往往只有某一維度,或者某一個(gè)事實(shí)條件的數(shù)據(jù)? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?拉鏈表:記錄每條信息的生命周期,當(dāng)一條記錄的生命周期結(jié)束,就會(huì)重新開(kāi)始一條新的記錄,并把當(dāng)前日期放入生效開(kāi)始日期。如果當(dāng)前信息至今有效,則在生效結(jié)束日期中填入一個(gè)極大值(如9999-99-99) ,一般在數(shù)倉(cāng)中通過(guò)增加start_date,end_date兩列來(lái)表示。
拉鏈表適合于數(shù)據(jù)會(huì)發(fā)生變化,但是大部分是不變的。
使用拉鏈表的方式:通過(guò)生效開(kāi)始日期<= 某個(gè)日期 且 生效結(jié)束日期>=某個(gè)日期,能夠得到某個(gè)時(shí)間點(diǎn)的數(shù)據(jù)全量切片。
拉鏈表的形成過(guò)程,比如下圖
?
如何制作拉鏈表?
1)新建和初始化拉鏈表dwd_order_info_his(首次獨(dú)立執(zhí)行)
drop table if exists dwd_order_info_his;
create external table dwd_order_info_his(
? ? `id` string COMMENT '訂單編號(hào)',
? ? `total_amount` decimal(10,2) COMMENT '訂單金額',
? ? `order_status` string COMMENT '訂單狀態(tài)',
? ? `user_id` string COMMENT '用戶(hù)id' ,
? ? `payment_way` string COMMENT '支付方式',
? ? `out_trade_no` string COMMENT '支付流水號(hào)',
? ? `create_time` string COMMENT '創(chuàng)建時(shí)間',
? ? `operate_time` string COMMENT '操作時(shí)間',
? ? `start_date` ?string COMMENT '有效開(kāi)始日期',
? ? `end_date` ?string COMMENT '有效結(jié)束日期'
) COMMENT '訂單拉鏈表'
stored as parquet
location '/warehouse/gmall/dwd/dwd_order_info_his/'
tblproperties ("parquet.compression"="snappy");
?
insert overwrite table dwd_order_info_his
select
? ? id,
? ? total_amount,
? ? order_status,
? ? user_id,
? ? payment_way,
? ? out_trade_no,
? ? create_time,
? ? operate_time,
? ? '2019-01-01',
? ? '9999-99-99'
from ods_order_info oi
where oi.dt='2019-01-01';
2)獲取當(dāng)日變動(dòng)數(shù)據(jù):包括新增和修改(每日?qǐng)?zhí)行)
//當(dāng)天的訂單變化表dwd_order_info數(shù)據(jù)獲?。?/p>
INSERT overwrite TABLE dwd_order_info PARTITION (day = '2019-01-02')
SELECT orderid,status
FROM orders
WHERE (createtime = '2019-01-02' ?and modifiedtime = '2019-01-02') OR modifiedtime = '2019-01-02';
3)合并變動(dòng)數(shù)據(jù)和舊拉鏈表數(shù)據(jù)(有更新的信息需要修改生效結(jié)束日期,無(wú)更新的信息生效結(jié)束日期不變)之后插入到臨時(shí)表中
比如下圖:
4)用臨時(shí)表覆蓋舊拉鏈表?文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-639704.html
insert overwrite table dwd_order_info_his?
select * from dwd_order_info_his_tmp;
?文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-639704.html
到了這里,關(guān)于hive 全量表、增量表、快照表、切片表和拉鏈表的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!