欧美free性护士vide0shd,老熟女,一区二区三区,久久久久夜夜夜精品国产,久久久久久综合网天天,欧美成人护士h版

首頁綜合 正文
目錄

柚子快報(bào)邀請碼778899分享:后端 數(shù)據(jù)倉庫分享

柚子快報(bào)邀請碼778899分享:后端 數(shù)據(jù)倉庫分享

http://yzkb.51969.com/

想知道靚女征友會被多少人加好友么?

想知道公司食堂的DAU日活么?

這些我都無法告訴你,因?yàn)槲乙膊恢?/p>

不過如果你對這些問題感興趣,那么你可能會希望了解下這些數(shù)據(jù)的可能來源——數(shù)據(jù)倉庫

舉個栗子

小美:前兩天我和閨蜜們在bbs發(fā)征友貼好多人加我們微信呀,但是有人反饋說加好友的頻率太高加不上,嗚嗚嗚,哥哥你幫我看看到底有多少人加我們呀

開發(fā)小哥哥:好的!待我查找下數(shù)據(jù)!

開始開發(fā)

這個任務(wù)很簡單,我要把所有人的加好友數(shù)量都計(jì)算出來,然后再過濾下她們的id就好了

第一步:找到原始數(shù)據(jù)表

咦?怎么原始數(shù)據(jù)表這么多,需要apply_friend member等多張表,而且涉及到的表字段也很多,還有很多無效數(shù)據(jù),看來我需要增加一步清洗數(shù)據(jù)的工作

apply_friend表

idapply_nameapplied_name1諸葛鋼鐵小美2于小謙小可愛3null小美4樸一生小紅5樸一生小美6樸一生小可愛

member表

idname1諸葛鋼鐵2于小謙3小美4null5小紅6樸一生

第二步:清洗原始數(shù)據(jù)產(chǎn)出清洗數(shù)據(jù)表

SELECT?*?FROM?apply_friend?WHERE?apply_name?is?not?null

查詢結(jié)果存入數(shù)據(jù)表 clean_apply_friend

idapply_nameapplied_name1諸葛鋼鐵小美2于小謙小可愛4樸一生小紅5樸一生小美6樸一生小可愛

SELECT?*?FROM?member?WHERE?name?is?not?null

查詢結(jié)果存入數(shù)據(jù)表 clean_member

idname1諸葛鋼鐵2于小謙3小美5小紅6樸一生

第三步:進(jìn)行SQL聚合

SELECT?applied_name???????,COUNT(applied_name)?AS?cntFROM(??SELECT?clean_apply_friend.id?AS?id?????????,clean_apply_friend.apply_name?AS?apply_name????????,clean_apply_friend.applied_name?AS?applied_name??FROM?clean_apply_friend???JOIN?clean_member???ON?clean_apply_friend.applied_name?=?clean_member.name)GROUP?BY?applied_name

查詢結(jié)果存入數(shù)據(jù)表 result

applied_namecnt小美2小紅1

第四步:為了更方便的使用圖形化工具查找,我最好再加一個數(shù)據(jù)表用于出庫,可以使用BI工具

SELECT?applied_name???????,cntFROM?result

查詢結(jié)果存入數(shù)據(jù)表 final_result 表,并且配置出庫

什么是數(shù)據(jù)倉庫

如果把剛剛每一步計(jì)算出來的數(shù)據(jù)表連起來,會看到下面的結(jié)構(gòu)

如果我們給他們加上一些名詞,就會發(fā)現(xiàn)這是一個比較清晰的層級結(jié)構(gòu)

APP(Application):數(shù)據(jù)應(yīng)用層

DM(Data Mart):數(shù)據(jù)集市層

DW(Data Warehouse):數(shù)據(jù)倉庫層

ODS(Operational Data Store):數(shù)據(jù)運(yùn)營層

如果DM數(shù)據(jù)倉庫層不止2個數(shù)據(jù)表,還有更多可歸類的數(shù)據(jù)表,那么就會形成主題

這就是數(shù)據(jù)倉庫的雛形!

真實(shí)的數(shù)據(jù)倉庫

小美:小哥哥,你這個數(shù)據(jù)不太夠,我想知道我的

每日新增好友添加數(shù)量和從我使用微信以來

每日累計(jì)以前的好友添加數(shù)量,可以幫幫我么

開發(fā)小哥哥:好的!待我查找下數(shù)據(jù)!

上述小美的表達(dá)才是更接近真實(shí)的數(shù)據(jù)需求,通常數(shù)據(jù)需求會有比較常見的2大系列,分別是:

每日新增數(shù)據(jù):

11.17 加好友的數(shù)量是5個

11.18 加好友的數(shù)量是6個

每日累計(jì)數(shù)據(jù):

從創(chuàng)建微信以來到11.16加好友的數(shù)量是95個

從創(chuàng)建微信以來到11.17加好友的數(shù)量是100個

從創(chuàng)建微信以來到11.18加好友的數(shù)量是106個

可以看到數(shù)據(jù)關(guān)系 95 + 5 = 100,100 + 6 = 106

如何計(jì)算每日新增和每日累計(jì)

為了完成上述兩種統(tǒng)計(jì)數(shù)據(jù),就要求線上數(shù)據(jù)必須每日同步增量數(shù)據(jù),并根據(jù)數(shù)據(jù)日期ds字段進(jìn)行區(qū)分

apply_friend 表

dsidapply_nameapplied_name202109011諸葛鋼鐵小美202109012于小謙小可愛202109013null小美202109014樸一生小紅202109025樸一生小美202109026樸一生小可愛

可以看到前 4 條數(shù)據(jù)都是2021年9月1日出現(xiàn)的,后 2 條數(shù)據(jù)是2021年9月2日出現(xiàn)的

根據(jù)這樣的表計(jì)算出每日新增的數(shù)據(jù)很容易,用ds作為查詢條件進(jìn)行聚合即可,比如計(jì)算9月1日用戶的申請的數(shù)量

SELECT?COUNT(*)?FROM?apply_friend?WHERE?ds?=?20210902GROUP?BY?applied_name

而計(jì)算每日累計(jì)數(shù)據(jù)時,更建議清洗出一張全量數(shù)據(jù)表,并用其直接進(jìn)行計(jì)算

什么是全量數(shù)據(jù)表

所謂的全量數(shù)據(jù)表指的是每天都存儲從原始數(shù)據(jù)產(chǎn)生以來的所有數(shù)據(jù),尤其是當(dāng)存在狀態(tài)變化時,全量數(shù)據(jù)表的存在尤為重要

比如:

apply_friend 表

dsidapply_nameapplied_namestatus202109011樸一生小美申請中202109012諸葛鋼鐵小美申請中202109023諸葛鋼鐵小美已查看202109024樸一生小紅申請中202109035諸葛鋼鐵小美已拒絕

對應(yīng)的全量數(shù)據(jù)表為:

full_apply_friend 表

dsidapply_nameapplied_namestatus202109011樸一生小美申請中202109012諸葛鋼鐵小美申請中202109021樸一生小美申請中202109023諸葛鋼鐵小美已查看202109024樸一生小紅申請中202109031樸一生小美申請中202109034樸一生小紅申請中202109035諸葛鋼鐵小美已拒絕

我們可以看到,9月2日,加入了9月1日的數(shù)據(jù),9月3日又加入了1-2日的數(shù)據(jù),并且過濾掉了多余的狀態(tài)條數(shù),也就是諸葛鋼鐵和小美的申請關(guān)系

上述數(shù)據(jù)關(guān)注小美相關(guān)的會發(fā)現(xiàn),從9月1日-9月3日期間,諸葛鋼鐵申請小美好友的申請關(guān)系變化,申請中->已查看->已拒絕

如果我們統(tǒng)計(jì)9月1日小美累計(jì)處于申請中的好友申請數(shù)量,那么是2

統(tǒng)計(jì)9月2日小美累計(jì)處于申請中的好友數(shù)量,那么是1

為什么要建設(shè)數(shù)據(jù)倉庫

數(shù)據(jù)倉庫建設(shè)是為了解決很多數(shù)據(jù)計(jì)算的問題,其中包括

數(shù)據(jù)依賴關(guān)系混亂,重復(fù)計(jì)算

缺少數(shù)據(jù)計(jì)算規(guī)范

數(shù)據(jù)產(chǎn)出效率低

數(shù)據(jù)依賴關(guān)系混亂,重復(fù)計(jì)算

看上圖對比我們就可以知道,沒有數(shù)據(jù)倉庫時,數(shù)據(jù)依賴關(guān)系十分混亂,存在大量數(shù)據(jù)重復(fù)計(jì)算的問題,既浪費(fèi)計(jì)算資源,又讓后來的開發(fā)者無所適從,不知道應(yīng)該如何繼續(xù)開發(fā)

而有了數(shù)據(jù)倉庫之后,計(jì)算任務(wù)整潔有序,便于維護(hù)和開發(fā),也節(jié)省資源

缺少數(shù)據(jù)計(jì)算規(guī)范

數(shù)據(jù)開發(fā)和普通的代碼開發(fā)一樣,也應(yīng)該樹立上圖的開發(fā)規(guī)范,保證數(shù)據(jù)計(jì)算的順序性,模塊合理劃分,也能夠產(chǎn)生高質(zhì)量的數(shù)據(jù)

一個遵循了數(shù)據(jù)規(guī)范的數(shù)據(jù)倉庫圖表示例,如下圖所示

數(shù)據(jù)產(chǎn)出效率低

數(shù)據(jù)產(chǎn)出效率低,是有很多方面引起的問題,這里專門講解下如何優(yōu)化數(shù)據(jù)倉庫性能

如何優(yōu)化數(shù)據(jù)倉庫性能

數(shù)據(jù)倉庫性能可能常常面臨的是兩方面問題

計(jì)算任務(wù)性能差(一個任務(wù)計(jì)算8個小時,非常久)

計(jì)算資源消耗多(一個任務(wù)占用80%的CPU、內(nèi)存)

那么下面舉一些實(shí)際開發(fā)的樣例,來說明優(yōu)化方案

優(yōu)化1:全量數(shù)據(jù)清洗優(yōu)化

優(yōu)化方案簡介和效果:

優(yōu)化前的SQL:

優(yōu)化后的SQL:

每日增量數(shù)據(jù)+前一日全量數(shù)據(jù)=每日全量數(shù)據(jù),通過這樣的計(jì)算方式,可以避免以前的重復(fù)數(shù)據(jù)計(jì)算,增加數(shù)據(jù)清洗效率

優(yōu)化2:全量數(shù)據(jù)多維度聚合優(yōu)化

優(yōu)化方案簡介和效果:

優(yōu)化前的SQL:

優(yōu)化后的SQL:

uin是用戶微信號的唯一id標(biāo)識,因?yàn)橛脩粑⑿盘柕臄?shù)量相對有限,可以固定在十幾億左右,所以做一步中間聚合可以大大減少數(shù)據(jù)量,進(jìn)而達(dá)到減少數(shù)據(jù)計(jì)算時間的目的

優(yōu)化3:多表數(shù)據(jù)UNION優(yōu)化

優(yōu)化方案簡介和效果:

優(yōu)化前的SQL:

優(yōu)化后的SQL:

每次取出數(shù)據(jù)時都會根據(jù)ds字段取出全部分區(qū)內(nèi)容,如果分區(qū)被多次取出并且在同一個任務(wù)里面,那么比如這個分區(qū)的數(shù)量是10億,取了8次就是80億,進(jìn)而會導(dǎo)致資源占用量急速增大,導(dǎo)致集群其他任務(wù)無法正常運(yùn)行

優(yōu)化4:多維度聚合步驟拆分

優(yōu)化方案簡介和效果:

優(yōu)化前的SQL:

優(yōu)化后的SQL:

當(dāng)使用rollup進(jìn)行多維度聚合時,F(xiàn)ROM子句中包含子查詢或者join時會導(dǎo)致重復(fù)計(jì)算的現(xiàn)象,進(jìn)而降低數(shù)據(jù)產(chǎn)出效率

小結(jié)

數(shù)據(jù)倉庫是為了更高效產(chǎn)出統(tǒng)計(jì)數(shù)據(jù)的工作,如果你對小美的好友數(shù)據(jù)好奇,不妨來了解了解數(shù)據(jù)倉庫

本文由 mdnice 多平臺發(fā)布

柚子快報(bào)邀請碼778899分享:后端 數(shù)據(jù)倉庫分享

http://yzkb.51969.com/

相關(guān)鏈接

評論可見,查看隱藏內(nèi)容

本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場。

轉(zhuǎn)載請注明,如有侵權(quán),聯(lián)系刪除。

本文鏈接:http://gantiao.com.cn/post/19171055.html

發(fā)布評論

您暫未設(shè)置收款碼

請?jiān)谥黝}配置——文章設(shè)置里上傳

掃描二維碼手機(jī)訪問

文章目錄