99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線(xiàn)電話(huà):13121318867

登錄
首頁(yè)精彩閱讀數(shù)據(jù)平臺(tái)維度模型設(shè)計(jì)十個(gè)技巧
數(shù)據(jù)平臺(tái)維度模型設(shè)計(jì)十個(gè)技巧
2016-07-21
收藏

數(shù)據(jù)平臺(tái)維度模型設(shè)計(jì)十個(gè)技巧

了解過(guò)數(shù)據(jù)倉(cāng)庫(kù)歷史的人都知道Bill Inmon、 Ralph Kimball。 Bill Inmon 代表作《Building the Data WareHouse》 , Ralph Kimball代表作為 《The Data Warehouse Toolkit》、《The data Warehouse lifecycle》。兩位大師對(duì)數(shù)據(jù)模型都分別作了深入闡述,個(gè)人理解的數(shù)據(jù)模型是數(shù)據(jù)平臺(tái)的靈魂。數(shù)據(jù)模型設(shè)計(jì)好了對(duì)數(shù)據(jù)應(yīng)用、數(shù)據(jù)分析支持是非常有幫助的。尤其 kimball 提出的維度模型 ,圍繞業(yè)務(wù)模型能夠直觀(guān)的表達(dá)業(yè)務(wù)數(shù)據(jù)關(guān)系。

關(guān)于數(shù)據(jù)模型概念不多講,本文與大家分享多維數(shù)據(jù)模型設(shè)計(jì)的十個(gè)技巧。

技巧一:維度表中應(yīng)該包含最細(xì)的顆粒度。

通常在數(shù)據(jù)平臺(tái)做開(kāi)發(fā)的同學(xué),“特麼”經(jīng)常抱怨 “ 需求怎么又變了,這個(gè)需求能不能不要來(lái)回的改“,數(shù)據(jù)建設(shè)中會(huì)遇到非常不確定性需求,不可預(yù)測(cè)篩選與匯總。

尤其是在互聯(lián)網(wǎng)做數(shù)據(jù)化運(yùn)營(yíng),絕大部分需求幾個(gè)匯總類(lèi)指標(biāo)是無(wú)法滿(mǎn)足需求,很多時(shí)候會(huì)沉浸到比較明細(xì)、更深層次的細(xì)節(jié)信息。當(dāng)然匯總指標(biāo)是能夠概括一些概述數(shù)據(jù)細(xì)節(jié),但只有細(xì)節(jié)數(shù)據(jù)才能回答各種不停的業(yè)務(wù)上數(shù)據(jù)追問(wèn)。

技巧二: 圍繞業(yè)務(wù)流程來(lái)構(gòu)建維度。

數(shù)據(jù)是真實(shí)的反應(yīng)業(yè)務(wù)活動(dòng)與成果的,業(yè)務(wù)流程在不同的階段所產(chǎn)生數(shù)據(jù)項(xiàng)也是不一樣的。比如說(shuō)一個(gè)用戶(hù)從尋找App、下載、安裝、啟動(dòng)、再啟動(dòng)這個(gè)流程,用戶(hù)在淘寶購(gòu)物、尋找瀏覽物品、放入購(gòu)物車(chē)、跳轉(zhuǎn)收銀臺(tái)、支付、完成。

這兩個(gè)流程背后代表某個(gè)業(yè)務(wù)事件活動(dòng),在不同的環(huán)節(jié)產(chǎn)生的數(shù)據(jù)項(xiàng)是不同的,如果將流程不同階段的指標(biāo)沉淀下來(lái)變?yōu)榭啥攘康年P(guān)鍵指標(biāo),如果將這些關(guān)鍵指標(biāo)根據(jù)關(guān)系合并與設(shè)計(jì)到事實(shí)表中,就變?yōu)橹螛I(yè)務(wù)人員分析、探索業(yè)務(wù)的細(xì)節(jié)數(shù)據(jù)。

為了能夠從業(yè)務(wù)流程上的多維度來(lái)探索數(shù)據(jù),所涉及到的很多維度最好是業(yè)務(wù)流程來(lái)做設(shè)計(jì),比如上圖交易現(xiàn)相關(guān),從訂單的來(lái)源,所屬產(chǎn)品、到支付階段的資金來(lái)源,從業(yè)務(wù)流程上來(lái)看,還可以擴(kuò)展出更多的維度、與度量值。

在不同的業(yè)務(wù)環(huán)節(jié),業(yè)務(wù)人員都會(huì)“很任性”的需求不同指標(biāo),但是在需求中往往是與業(yè)務(wù)流程有很大關(guān)系的。

技巧三:盡量保證每張事實(shí)表與時(shí)間維度有關(guān)聯(lián)

在原則二中描述那兩個(gè)案例業(yè)務(wù)永遠(yuǎn)是與日期有關(guān)系的,不管是月、日、年、還是分、秒,財(cái)務(wù)年、自定義時(shí)間事件段等。

每個(gè)事實(shí)表至少有一個(gè)外鍵能夠與日期維度表相連,時(shí)間維度能才能反映出存量與流量,才能分析某一時(shí)刻、某一時(shí)間段的業(yè)務(wù)流程變化情況。

技巧四:同一張事實(shí)表的指標(biāo)對(duì)應(yīng)維度層級(jí)必須一致

一般的事實(shí)表有四種類(lèi)型,粒度事實(shí)、周期性快照事實(shí)、聚合快照事實(shí)、非事實(shí)事實(shí)表,不管它們的粒度類(lèi)型,事實(shí)表中的每個(gè)度量值在顆粒度上必須保持與維度的顆粒度是一致的,否則就等著崩潰吧。

例如原則二給出的案例,要分析一個(gè)用戶(hù)訂單支付業(yè)務(wù)。如果對(duì)這個(gè)業(yè)務(wù)進(jìn)行設(shè)計(jì)分析模型時(shí),把產(chǎn)品維度粒度定義為產(chǎn)品,但是在度量值金額卻是按照不同產(chǎn)品分類(lèi)做聚合的,那就有意思了。我暫時(shí)也沒(méi)回憶起類(lèi)似的場(chǎng)景會(huì)在什么情況犯錯(cuò)。

技巧五:處理好事實(shí)表維度表之間的多對(duì)多關(guān)系

在多個(gè)維度表的值可以賦給單個(gè)事實(shí)事務(wù)時(shí),事實(shí)表維度表之間通常是多對(duì)多關(guān)系,比如為了計(jì)算寫(xiě)書(shū)的作者分成,一本書(shū)可能有多個(gè)作者, 一個(gè)作者可能出版了多本書(shū),這個(gè)案例下就是多對(duì)多的關(guān)系。要考慮到可以計(jì)算出每個(gè)作者的的分成,中間可以增加一個(gè)橋接表。

綜上所述,

在這種情況下多個(gè)值的維度與事實(shí)表直連可以采用橋接表來(lái)處理。

技巧六:經(jīng)常發(fā)生變化的維度處理

在設(shè)計(jì)維度上很多時(shí)候都是扁平化處理,業(yè)務(wù)中普遍的維度關(guān)系是一對(duì)一的關(guān)系,比如例如客戶(hù)Simmy將自己的地址由原先的Addr1改為Addr2。這時(shí)我們需要將這個(gè)記錄了客戶(hù)Simmy的記錄中的有效截止日期改為現(xiàn)在,并重新添加一條有效截止日期為現(xiàn)在的和一個(gè)新的版本號(hào)且Address為Addr2的記錄。

但是也經(jīng)常存在一對(duì)多的關(guān)系,比如大家的購(gòu)物郵寄地址、個(gè)人電話(huà)號(hào)碼等在現(xiàn)實(shí)生活中有變化的處理。這種情況可能存在一對(duì)多的關(guān)系,假如一張維表存在上百萬(wàn)的維度且匯總信息經(jīng)常在變化,那得注意做緩慢變化、或快速變化處理了。

技巧七:讓維度表使用代理鍵

英文叫SurrogateKey,翻譯過(guò)來(lái)又叫代理鍵,在建模中通過(guò)一些毫無(wú)意義鍵值來(lái)代替一些業(yè)務(wù)鍵值,有利于維度統(tǒng)一整合。

技巧八:進(jìn)行一致性維度的處理

一致性維度,又叫統(tǒng)一維度。對(duì)于構(gòu)建企業(yè)級(jí)數(shù)據(jù)平臺(tái)數(shù)據(jù)模型具有關(guān)鍵的意義,通過(guò)在數(shù)據(jù)轉(zhuǎn)換處理環(huán)節(jié)一次性處理后,在構(gòu)建不同數(shù)據(jù)集市、不同數(shù)據(jù)層時(shí)可以反復(fù)被使用。

統(tǒng)一維度在構(gòu)建多維模型時(shí),可以很便捷能把多種不同類(lèi)型業(yè)務(wù)指標(biāo)進(jìn)行關(guān)聯(lián),讓使用用戶(hù)在不同業(yè)務(wù)間切換分析、還能減少維護(hù)工作。

比如數(shù)據(jù)描述經(jīng)常不一致性如,同名異義、同物異名,還有口徑多樣化、編碼不統(tǒng)一、命名不統(tǒng)一等。還能處理一些未知、不知道名字、日期待定等一些含

糊的分類(lèi)。

而然,在實(shí)施統(tǒng)一維度時(shí)最大的障礙是需要不同的業(yè)務(wù)部門(mén)、IT部門(mén)對(duì)每個(gè)維度屬性上達(dá)成一致,那就涉及到數(shù)據(jù)管理、數(shù)據(jù)治理的范疇了。比如含義相同但名稱(chēng)不同業(yè)務(wù)術(shù)語(yǔ)等。

技巧九:分析功能標(biāo)簽化標(biāo)簽以及過(guò)濾器等信息可以當(dāng)做維度來(lái)保存。

其實(shí)這也不是什么原則,個(gè)人更傾向于歸類(lèi)到技巧中。比如在構(gòu)建分析型數(shù)據(jù)產(chǎn)品時(shí),有些功能性的標(biāo)簽、查詢(xún)類(lèi)的代碼或分類(lèi)完全可以維度化。

例如某些下拉菜單中篩選標(biāo)簽以及過(guò)濾器閾值等、用戶(hù)的特定群體探索、產(chǎn)品的相關(guān)聯(lián)分析等,都可以維度化并做預(yù)處理。

這樣做的好處是速度快,把部分分析結(jié)果數(shù)據(jù)做預(yù)處理,查詢(xún)中需要聚合部分變?yōu)檫^(guò)濾查詢(xún),這樣會(huì)提高分析查詢(xún)效率的。

技巧十:大維度的退化處理

所謂的大維度,是指維度數(shù)據(jù)量特別大,比如現(xiàn)在互聯(lián)網(wǎng)的URL維度可能幾十萬(wàn)上百萬(wàn),還有客戶(hù),產(chǎn)品等等。一個(gè)大的企業(yè)客戶(hù)維度往往有上百萬(wàn)記錄,每條記錄又有上百個(gè)字段。而大的個(gè)人客戶(hù)維度則會(huì)超過(guò)千萬(wàn)條記錄,這些個(gè)人客戶(hù)維度有時(shí)也會(huì)有十多個(gè)字段,但大多數(shù)時(shí)候比較少見(jiàn)的維度也只有不多的幾個(gè)屬性。

這些維度的處理往往采用把大屬性轉(zhuǎn)為小屬性、退化處理,增加更多的不同分類(lèi)字段等特殊處理。


數(shù)據(jù)分析咨詢(xún)請(qǐng)掃描二維碼

若不方便掃碼,搜微信號(hào):CDAshujufenxi

數(shù)據(jù)分析師資訊
更多

OK
客服在線(xiàn)
立即咨詢(xún)
客服在線(xiàn)
立即咨詢(xún)
') } function initGt() { var handler = function (captchaObj) { captchaObj.appendTo('#captcha'); captchaObj.onReady(function () { $("#wait").hide(); }).onSuccess(function(){ $('.getcheckcode').removeClass('dis'); $('.getcheckcode').trigger('click'); }); window.captchaObj = captchaObj; }; $('#captcha').show(); $.ajax({ url: "/login/gtstart?t=" + (new Date()).getTime(), // 加隨機(jī)數(shù)防止緩存 type: "get", dataType: "json", success: function (data) { $('#text').hide(); $('#wait').show(); // 調(diào)用 initGeetest 進(jìn)行初始化 // 參數(shù)1:配置參數(shù) // 參數(shù)2:回調(diào),回調(diào)的第一個(gè)參數(shù)驗(yàn)證碼對(duì)象,之后可以使用它調(diào)用相應(yīng)的接口 initGeetest({ // 以下 4 個(gè)配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶(hù)后臺(tái)檢測(cè)極驗(yàn)服務(wù)器是否宕機(jī) new_captcha: data.new_captcha, // 用于宕機(jī)時(shí)表示是新驗(yàn)證碼的宕機(jī) product: "float", // 產(chǎn)品形式,包括:float,popup width: "280px", https: true // 更多配置參數(shù)說(shuō)明請(qǐng)參見(jiàn):http://docs.geetest.com/install/client/web-front/ }, handler); } }); } function codeCutdown() { if(_wait == 0){ //倒計(jì)時(shí)完成 $(".getcheckcode").removeClass('dis').html("重新獲取"); }else{ $(".getcheckcode").addClass('dis').html("重新獲取("+_wait+"s)"); _wait--; setTimeout(function () { codeCutdown(); },1000); } } function inputValidate(ele,telInput) { var oInput = ele; var inputVal = oInput.val(); var oType = ele.attr('data-type'); var oEtag = $('#etag').val(); var oErr = oInput.closest('.form_box').next('.err_txt'); var empTxt = '請(qǐng)輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請(qǐng)輸入正確的'+oInput.attr('placeholder')+'!'; var pattern; if(inputVal==""){ if(!telInput){ errFun(oErr,empTxt); } return false; }else { switch (oType){ case 'login_mobile': pattern = /^1[3456789]\d{9}$/; if(inputVal.length==11) { $.ajax({ url: '/login/checkmobile', type: "post", dataType: "json", data: { mobile: inputVal, etag: oEtag, page_ur: window.location.href, page_referer: document.referrer }, success: function (data) { } }); } break; case 'login_yzm': pattern = /^\d{6}$/; break; } if(oType=='login_mobile'){ } if(!!validateFun(pattern,inputVal)){ errFun(oErr,'') if(telInput){ $('.getcheckcode').removeClass('dis'); } }else { if(!telInput) { errFun(oErr, errTxt); }else { $('.getcheckcode').addClass('dis'); } return false; } } return true; } function errFun(obj,msg) { obj.html(msg); if(msg==''){ $('.login_submit').removeClass('dis'); }else { $('.login_submit').addClass('dis'); } } function validateFun(pat,val) { return pat.test(val); }