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

熱線電話:13121318867

登錄
首頁精彩閱讀從數(shù)據(jù)產(chǎn)品經(jīng)理視角,聊聊數(shù)據(jù)處理
從數(shù)據(jù)產(chǎn)品經(jīng)理視角,聊聊數(shù)據(jù)處理
2018-09-10
收藏


本篇文章將以數(shù)據(jù)產(chǎn)品的角度來看數(shù)據(jù)采集后數(shù)據(jù)流的處理過程;并講解一丟丟偏技術(shù)、但與數(shù)據(jù)產(chǎn)品產(chǎn)出息息相關(guān)的數(shù)據(jù)倉庫。

一. 數(shù)據(jù)處理過程

數(shù)據(jù)產(chǎn)品經(jīng)理的工作中一大部分都是將不可估測的數(shù)據(jù)轉(zhuǎn)化為可見的報表、有結(jié)論意義的分析報告——也就是將數(shù)據(jù)從各種異構(gòu)的數(shù)據(jù)源中、匯總,最終展示為報表、儀表盤、動態(tài)數(shù)據(jù)分析查詢、結(jié)論性的分析報告等等。

1. 有哪些異構(gòu)數(shù)據(jù)源呢?

服務(wù)端、客戶端用戶行為日志用戶的歷史信息,定性信息(e.g.性別,職業(yè)的用戶畫像數(shù)據(jù)),定量信息(e.g.近30天的某個興趣傾向程度)第三方等獲取的信息,e.g.爬蟲數(shù)據(jù)、人工整理的數(shù)據(jù)等等

2. 這信息大都需要二次加工、清洗,生成結(jié)構(gòu)化的數(shù)據(jù)

臟數(shù)據(jù)的清洗、整合,e.g.延遲數(shù)據(jù)的按照發(fā)生日歸納;生成基礎(chǔ)性的表,以提高數(shù)據(jù)的易用性,e.g.用戶基礎(chǔ)數(shù)據(jù)、行為數(shù)據(jù)的基礎(chǔ)表;生成可以直接應(yīng)用于報表、分析的用戶&行為結(jié)構(gòu)化業(yè)務(wù)應(yīng)用表;

輕描淡寫的2個步驟,卻是影響報表展示、分析結(jié)論的關(guān)鍵點,也是數(shù)據(jù)產(chǎn)品經(jīng)理最需要細(xì)心處理的地方。

二. 數(shù)據(jù)倉庫(Data Warehouse)

數(shù)據(jù)處理過程往往比較模糊,但“異構(gòu)數(shù)據(jù)源->結(jié)構(gòu)化的數(shù)據(jù)表->報表/分析報告”的過程中,我們常見的各種數(shù)據(jù)庫表就是數(shù)據(jù)倉庫的實體,如常見的hive,spark,Oracle等。那在數(shù)據(jù)產(chǎn)品經(jīng)理日常數(shù)據(jù)處理中應(yīng)該注意哪些數(shù)據(jù)倉庫知識點呢?

1. 數(shù)據(jù)倉庫分層

為什么要做分層呢?

更清晰的管理、追蹤數(shù)據(jù)(清洗的數(shù)據(jù)結(jié)構(gòu)、明確的血緣關(guān)系):有助于我們?nèi)ゲ檎覕?shù)據(jù)處理的整條鏈路;通過建立通用的中間表,減少重復(fù)計算:一張通用的中間表,能夠有效提供能夠直接貢獻(xiàn)于下游業(yè)務(wù)數(shù)據(jù)表,以避免每次都從原數(shù)據(jù)中產(chǎn)出業(yè)務(wù)數(shù)據(jù)表;清晰的數(shù)據(jù)倉庫分層,將能夠有助于我們分解數(shù)據(jù)處理過程:將復(fù)雜的數(shù)據(jù)->業(yè)務(wù)應(yīng)用,拆解成多個步驟,每一層只處理單一的步驟;

數(shù)據(jù)分層具體是指?每一層應(yīng)該注意什么呢?

操作數(shù)據(jù)層(ODS,Operational Data Store):該層級的數(shù)據(jù),最接近數(shù)據(jù)源的原始面貌(內(nèi)容和粒度與原始數(shù)據(jù)一致),通常是數(shù)據(jù)源直接經(jīng)過ETL后,存儲于此。從原始數(shù)據(jù)到ODS層,不建議做復(fù)雜的數(shù)據(jù)清洗,以免破壞原始數(shù)據(jù),引起不必要的排查成本。

建議僅進(jìn)行——

將json記錄的日志,映射到各字段中;作弊數(shù)據(jù)的清洗;數(shù)據(jù)轉(zhuǎn)碼:將編碼映射成具有真實含義的值數(shù)據(jù)標(biāo)準(zhǔn)化,e.g.把所有的日期都格式化成YYYY-MM-DD的格式;異常值修復(fù),e.g.視頻播放表:(包含用戶id、視頻id、播主、播放時間等)。

如果一個表劃分為ODS層,那么一定要確認(rèn)是否將原數(shù)據(jù)的有意義字段均清洗過來。

明細(xì)數(shù)據(jù)層(DWD,Data Warehouse Detail):對ODS層做一些業(yè)務(wù)層面的數(shù)據(jù)清洗和規(guī)范化的操作,e.g.用戶播放視頻的日志級表;

如果一個表劃分為DWD層,是否清晰、明確的記錄了業(yè)務(wù)層面的明細(xì)數(shù)據(jù)?

匯總數(shù)據(jù)層(DWS, Data Warehouse Summary):依據(jù)業(yè)務(wù)需求對ODS/DWD層的數(shù)據(jù)進(jìn)行了匯總,e.g.帶有用戶畫像信息的播放視頻;

如果是DWS層的表,是否能夠有效、便利的服務(wù)于業(yè)務(wù)方向統(tǒng)計需求?

應(yīng)用數(shù)據(jù)層(ADS,Application Data Store):業(yè)務(wù)需要進(jìn)行的統(tǒng)計數(shù)據(jù)結(jié)果,e.g.各類型用戶的視頻播放統(tǒng)計。

如果是ADS層的表,是否能夠得到業(yè)務(wù)需要的統(tǒng)計數(shù)據(jù)?

維度表(DIM):存放基礎(chǔ)信息,如用戶屬性表-性別、年齡等等。

如果是DIM層的表,是否全面記錄了后續(xù)分析或統(tǒng)計需要用的各個維度?

除了固定為分層外,當(dāng)然還有臨時表(TEM)。

阿里/華為的數(shù)據(jù)倉庫數(shù)據(jù)分級:操作數(shù)據(jù)層(ODS)、明細(xì)數(shù)據(jù)層(DWD)、匯總數(shù)據(jù)層(DWS)和應(yīng)用數(shù)據(jù)層(ADS),維度表(DIM); 操作數(shù)據(jù)層、明細(xì)數(shù)據(jù)層、匯總數(shù)據(jù)層都是公共數(shù)據(jù)層。

此外,涉及表時,需要充分考慮這張表后續(xù)是哪個角色的同學(xué)使用,表是否足夠易用?是否內(nèi)容冗余?是否安全?

業(yè)務(wù)線的同學(xué)是否能夠通過幾條簡單的SQL語句,拿到數(shù)據(jù)結(jié)果?可以通過單張表格統(tǒng)計到數(shù)據(jù)還是需要多表關(guān)聯(lián)獲???單張表是不是內(nèi)容冗余,是否會影響查詢效率?多表關(guān)聯(lián)時,是否會有業(yè)務(wù)理解上的坑,e.g.多表間的字段是一對一,一對多,還是多對多,如何讓使用者清晰的理解?表中是否涉及敏感的字段,比如金額等,使用群體是否有足夠的權(quán)限獲取這些信息?

2. 元數(shù)據(jù)管理

元數(shù)據(jù)及應(yīng)用也是數(shù)據(jù)倉庫的重要組成部分,它是描述數(shù)據(jù)的數(shù)據(jù)(data about data),描述數(shù)據(jù)的屬性信息,可以幫助我們非常方便地找到他們所關(guān)心的數(shù)據(jù)。

元數(shù)據(jù)記錄了哪些信息?

數(shù)據(jù)的表結(jié)構(gòu)字段信息、分區(qū)信息、索引信息等;數(shù)據(jù)的使用&權(quán)限:空間存儲、讀寫記錄、修改記錄、權(quán)限歸屬、審核記錄等其他信息;數(shù)據(jù)的血緣關(guān)系信息:血緣信息簡單的說就是數(shù)據(jù)的上下游關(guān)系,數(shù)據(jù)從哪里來到哪里去?我們通過血緣關(guān)系,可以了解到建立起生產(chǎn)這些數(shù)據(jù)的任務(wù)之間的依賴關(guān)系,進(jìn)而輔助調(diào)度系統(tǒng)的工作調(diào)度,或者用來判斷一個失敗或錯誤的任務(wù)可能對哪些下游數(shù)據(jù)造成影響等等;而在數(shù)據(jù)排查過程中也可以幫助我們定位問題。數(shù)據(jù)的業(yè)務(wù)屬性信息:記錄這張表的業(yè)務(wù)用途,各個字段的具體統(tǒng)計口徑、業(yè)務(wù)描述、歷史變遷記錄、變遷原因等。這部分?jǐn)?shù)據(jù)多是我們手動填寫,但卻能大大提升數(shù)據(jù)使用過程中的便利性。

3. 離線數(shù)據(jù)倉庫&實時數(shù)據(jù)倉庫

此外,根據(jù)數(shù)據(jù)實時性,數(shù)據(jù)倉庫可以分為離線數(shù)據(jù)倉庫、實時數(shù)據(jù)倉庫

離線數(shù)據(jù)倉庫主要記錄t-1以上的數(shù)據(jù),以天、周、月數(shù)據(jù)計算為主;實時數(shù)據(jù)倉庫是隨著人們對實時數(shù)據(jù)展示、分析、算法的需求而出現(xiàn)的。

4. 總結(jié)

數(shù)據(jù)處理過程是數(shù)據(jù)產(chǎn)品經(jīng)理 產(chǎn)出報表、分析報告耗時最久的部分,了解數(shù)據(jù)倉庫的概念&關(guān)鍵點,有助于我們清晰、有效的處理數(shù)據(jù),提高工作效率,將更多的時間用于業(yè)務(wù)洞察。


數(shù)據(jù)分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

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

OK
客服在線
立即咨詢
客服在線
立即咨詢
') } 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)的第一個參數(shù)驗證碼對象,之后可以使用它調(diào)用相應(yīng)的接口 initGeetest({ // 以下 4 個配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺檢測極驗服務(wù)器是否宕機(jī) new_captcha: data.new_captcha, // 用于宕機(jī)時表示是新驗證碼的宕機(jī) product: "float", // 產(chǎn)品形式,包括:float,popup width: "280px", https: true // 更多配置參數(shù)說明請參見:http://docs.geetest.com/install/client/web-front/ }, handler); } }); } function codeCutdown() { if(_wait == 0){ //倒計時完成 $(".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 = '請輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請輸入正確的'+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); }