專案---累積型快照事實表sql
ods:新增及變化 --》 每天分割槽裡面存放的是新增的與變化的資料
drop table if exists ods_coupon_use;
create external table ods_coupon_use(
`id` string COMMENT '編號',
`coupon_id` string COMMENT '優惠券ID',
`user_id` string COMMENT 'skuid',
`order_id` string COMMENT 'spuid',
`coupon_status` string COMMENT '優惠券狀態',
`get_time` string COMMENT '領取時間',
`using_time` string COMMENT '使用時間(下單)',
`used_time` string COMMENT '使用時間(支付)'
) COMMENT '優惠券領用表'
PARTITIONED BY (`dt` string)
row format delimited fields terminated by '\t'
dwd:累積型的事實表
drop table if exists dwd_fact_coupon_use;
create external table dwd_fact_coupon_use(
`id` string COMMENT '編號',
`coupon_id` string COMMENT '優惠券ID',
`user_id` string COMMENT 'userid',
`order_id` string COMMENT '訂單id',
`coupon_status` string COMMENT '優惠券狀態',
`get_time` string COMMENT '領取時間',
`using_time` string COMMENT '使用時間(下單)',
`used_time` string COMMENT '使用時間(支付)'
) COMMENT '優惠券領用事實表'
PARTITIONED BY (`dt` string)
row format delimited fields terminated by '\t' //行格式分隔符“/t”
location '/warehouse/gmall/dwd/dwd_fact_coupon_use/';
兩個表進行join
new(新增與變化) 和 old(這個事實表)
new有 old 有 ---》 需要更新
new 有 old 沒有 --》 插入到當天的分割槽
new 沒有 old 有 --》 保留
思路 :
新表有的,用新表的,新表沒有的用舊錶的 ,,更新過去了
set hive.exec.dynamic.partition.mode=nonstrict;
insert overwrite table dwd_fact_coupon_use partition(dt)
select
if(new.id is null,old.id,new.id),
if(new.coupon_id is null,old.coupon_id,new.coupon_id),
if(new.user_id is null,old.user_id,new.user_id),
if(new.order_id is null,old.order_id,new.order_id),
if(new.coupon_status is null,old.coupon_status,new.coupon_status),
if(new.get_time is null,old.get_time,new.get_time),
if(new.using_time is null,old.using_time,new.using_time),
if(new.used_time is null,old.used_time,new.used_time),
date_format(if(new.get_time is null,old.get_time,new.get_time),'yyyy-MM-dd') // 獲取到動態分割槽
from
(
select
id,
coupon_id,
user_id,
order_id,
coupon_status,
get_time,
using_time,
used_time
from dwd_fact_coupon_use
where dt in
(
select
date_format(get_time,'yyyy-MM-dd')
from ods_coupon_use
where dt='2020-10-30'
)
)old
full outer join
(
select
id,
coupon_id,
user_id,
order_id,
coupon_status,
get_time,
using_time,
used_time
from ods_coupon_use
where dt='2020-10-30'
)new
on old.id=new.id;
1.動態分割槽引數:https://blog.csdn.net/qq_16590169/article/details/103464349
2.Where語句
1.使用WHERE子句,將不滿足條件的行過濾掉
2.WHERE子句緊隨FROM子句
3.案例實操
查詢出薪水大於1000的所有員工
hive (default)> select * from emp where sal >1000;
注意:where子句中不能使用欄位別名。
3.dt是一個ods層設定的分割槽
4.老表沒有的資料用新表的,新表沒有的用老表的,老表新表都有的用新表的。
5.where in
6.full outer join ...on 全外連線
FULL OUTER JOIN 關鍵字只要左表(table1)和右表(table2)其中一個表中存在匹配,則返回行.
FULL OUTER JOIN 關鍵字結合了 LEFT JOIN 和 RIGHT JOIN 的結果。
7.DATE_FORMAT(date,format)函式
date 引數是合法的日期。format 規定日期/時間的輸出格式。
DATE_FORMAT(NOW(),'%m-%d-%Y') --mysql
相關文章
- 技術積累——C++ 呼叫 python 專案C++Python
- [專案積累]後端專案之Koa2經驗整理後端
- 【資料倉儲】全量表、快照表、增量表、拉鍊表、維度表、實體表、事實表
- SQL Server 2022 RTM 最新累積更新:Cumulative Update #13 for SQL Server 2022 RTMSQLServer
- PS積累
- 日常積累——彙編檔案編寫
- lunix 命令積累
- 日常知識積累
- 工作點滴積累
- java問題積累Java
- js積累函式JS函式
- vue 個人積累Vue
- MySQL知識-積累篇MySql
- 常用前端知識積累前端
- sql server 2005資料庫快照SQLServer資料庫
- 積又觀事型況著它過維otv
- 新的GFS累積降水變數-兩種不同的累積降水記錄變數
- 分散式事務(4)---RocketMQ實現分散式事務專案分散式MQ
- springboot實現分享型別的專案Spring Boot型別
- SQL Server 表分割槽注意事項HXSQLServer
- SQL精華總結索引型別優化SQL優化事務大表優化思維導圖❤️SQL索引型別優化
- java web dev知識積累JavaWebdev
- vue 個人積累(元件,工具)Vue元件
- js基礎知識積累JS
- 個人積累linux 日常命令Linux
- 日積月累之Logback框架框架
- ubuntu點選知識積累Ubuntu
- Python3的使用積累Python
- 深度學習程式碼積累深度學習
- 重拾C#日常積累:config配置檔案的讀寫C#
- 說說ITSM專案實戰那些事兒(三)
- 為了你能愉快地積累Python專案,我做了一份手把手的GitHub教程PythonGithub
- sql?server?累計求和實現程式碼簏攔SQLServer
- RPA專案中關於資訊配置表的注意事項
- A專案軼事之加入專案2個月
- 部署專案注意事項
- PDO防注入的一點積累
- 小程式開發點滴積累