效果分析的關(guān)鍵是「指標(biāo)能算出來」
不要覺得標(biāo)題奇怪哦,要知道企業(yè)在數(shù)據(jù)驅(qū)動(dòng)發(fā)展進(jìn)程中必然會(huì)遇到指標(biāo)算不出來的情況,而且隨著企業(yè)規(guī)模的不斷擴(kuò)大,這一問題會(huì)持續(xù)伴隨。本篇文章就從指標(biāo)平臺(tái)的角度來聊聊怎么解決指標(biāo)算不出來的問題,快來看看吧。
看到題目會(huì)不會(huì)有一些奇怪?這算什么關(guān)鍵……
經(jīng)歷過才知道,這是一個(gè)不起眼但卻極為重要的部分,企業(yè)在數(shù)據(jù)驅(qū)動(dòng)發(fā)展進(jìn)程中必然會(huì)遇到指標(biāo)算不出來的情況,而且隨著企業(yè)規(guī)模的不斷擴(kuò)大,這一問題會(huì)持續(xù)伴隨。“指標(biāo)能算出來” 涵蓋了兩個(gè)方面:有值、準(zhǔn)確,這中間不僅包括數(shù)據(jù)治理的問題,還包括指標(biāo)管理和平臺(tái)應(yīng)用等諸多問題,我們細(xì)數(shù)常見的問題如下:
- 沒有看數(shù)據(jù)的地方
- 能看到數(shù)據(jù),但數(shù)據(jù)不準(zhǔn)
- 驗(yàn)證數(shù)據(jù)準(zhǔn)確,但不知道數(shù)據(jù)對(duì)應(yīng)的口徑是什么
- 同一指標(biāo)不同平臺(tái)看到的數(shù)據(jù)不一致
- 協(xié)調(diào)多個(gè)平臺(tái)好不容易數(shù)據(jù)準(zhǔn)確一致,新起個(gè)項(xiàng)目,所有事情重新來一遍
從產(chǎn)品的角度看,這些問題最主要的原因是沒有一個(gè)統(tǒng)一且完整的指標(biāo)平臺(tái),今天我們從指標(biāo)平臺(tái)的角度聊聊上面問題的解法。指標(biāo)平臺(tái)不同于報(bào)表平臺(tái),其關(guān)鍵在于與投放平臺(tái)耦合,自動(dòng)呈現(xiàn)各策略數(shù)據(jù)??梢苑譃樗膫€(gè)環(huán)節(jié):
圖1
每個(gè)環(huán)節(jié)都極為重要,本文我們重點(diǎn)聚焦前兩個(gè)環(huán)節(jié)——“數(shù)據(jù)底座”部分,因?yàn)橹挥兄笜?biāo)算出來,數(shù)據(jù)才有用武之地,數(shù)據(jù)驅(qū)動(dòng)才有落地的可能。
一、簡單說說指標(biāo)
無論指標(biāo)平臺(tái)多么復(fù)雜,最終都會(huì)以指標(biāo)的形態(tài)對(duì)外呈現(xiàn),因此我們先梳理一下指標(biāo)的邏輯,看如下需求描述:“企業(yè)運(yùn)營人員投放一些經(jīng)營策略,策略運(yùn)行一段時(shí)間后需要分析效果,于是設(shè)計(jì)一些指標(biāo),并聯(lián)系數(shù)據(jù)人員給出數(shù)據(jù)需求……”。從這一描述可以看出,指標(biāo)與各個(gè)業(yè)務(wù)場景緊密耦合,隨業(yè)務(wù)場景的變化指標(biāo)形態(tài)也千變?nèi)f化,列幾個(gè)指標(biāo)感受一下:
- “頁面點(diǎn)擊UV”
- “成單筆數(shù)”
- “頁面瀏覽時(shí)長”
- “成單金額”
- “XX區(qū)域客戶總賬戶余額”
- “XX活動(dòng)達(dá)標(biāo)率”
- “理財(cái)客戶持倉金額年日均凈增”
這其中既有與動(dòng)作相關(guān)的事件類指標(biāo),也有與結(jié)果屬性相關(guān)的狀態(tài)類指標(biāo),我們把指標(biāo)做一下拆分:
圖2
公式中四個(gè)元素的組合即為指標(biāo),通過這一公式我們重新描述一下上面的指標(biāo):
表1
業(yè)務(wù)場景的梳理是為了讓我們能更完整體系的看清指標(biāo)的本質(zhì),從而抽象出共性,形成指標(biāo)的底層邏輯,共性抽象的越完整,功能模塊的適用性越強(qiáng)。在上面公式的基礎(chǔ)上我們進(jìn)一步細(xì)化指標(biāo)邏輯:
圖3
上述過程協(xié)助我們充分理解指標(biāo)邏輯、梳理指標(biāo)應(yīng)用場景和算法。那么,這些指標(biāo)具體該如何通過平臺(tái)落地呢?指標(biāo)又如何定義和分類呢?我們再細(xì)細(xì)往下拆解……
二、指標(biāo)平臺(tái)邏輯
平臺(tái)的構(gòu)建是指標(biāo)有效加工和計(jì)算的基礎(chǔ),因此,在詳細(xì)介紹指標(biāo)之前,我們先梳理一下指標(biāo)平臺(tái)的整體框架:
圖4
指標(biāo)平臺(tái)整體的結(jié)構(gòu)可以分為如上五個(gè)模塊:指標(biāo)庫、數(shù)據(jù)報(bào)告、計(jì)算引擎、底表模型、數(shù)據(jù)庫(更多細(xì)致組件在這個(gè)圖中暫不描述,可以依據(jù)各企業(yè)場景做調(diào)整)。這五個(gè)模塊與上面的四個(gè)環(huán)節(jié)相對(duì)應(yīng),本文我們從數(shù)據(jù)報(bào)告說起,聊一聊底表模型和指標(biāo)庫的能力和特性:
1. 數(shù)據(jù)報(bào)告
數(shù)據(jù)報(bào)告是平臺(tái)與業(yè)務(wù)人員交流的聚焦點(diǎn),各種應(yīng)用場景都體現(xiàn)在上面,結(jié)合不同業(yè)務(wù)場景,在數(shù)據(jù)報(bào)告中需要呈現(xiàn)的內(nèi)容如下:
- 常用指標(biāo)類型:事件類、當(dāng)前值類狀態(tài)指標(biāo)、動(dòng)態(tài)期初期末凈增、固定期初期末凈增、匯總值類、累加類六種類型。
- 常用數(shù)據(jù)表達(dá)方式:數(shù)據(jù)表格、趨勢圖(柱狀圖)、餅圖三類。
- 數(shù)據(jù)分析四件套:客群選框、時(shí)間選框、指標(biāo)選框、效果歸因。
- 報(bào)告元數(shù)據(jù):策略投放數(shù)據(jù)、信息變更記錄、分析結(jié)論。
報(bào)告中指標(biāo)數(shù)據(jù)主要分為趨勢數(shù)據(jù)和整體數(shù)據(jù),圖形樣式有如下兩種表達(dá)方式:
圖5
不同角色的人在平臺(tái)上看數(shù)據(jù)的視角也不相同:
- 企劃/財(cái)務(wù):聚焦不同時(shí)間段的投產(chǎn)比,因此會(huì)對(duì)固定期初期末凈增值、趨勢圖有較強(qiáng)依賴
- 業(yè)務(wù)運(yùn)營:聚焦上線策略的效果以及對(duì)自身經(jīng)營任務(wù)的達(dá)成情況,因此對(duì)數(shù)據(jù)分析模塊、動(dòng)態(tài)期初期末凈增類指標(biāo)需求較高
- 平臺(tái)產(chǎn)品:聚焦不同頁面、渠道入口、廣告位整體效果,如果有問題,可以追溯到具體策略,這一角色對(duì)事件類指標(biāo)、固定期初期末凈增、匯總值有較多需求
- 高層領(lǐng)導(dǎo)及財(cái)報(bào)審計(jì)等:會(huì)更關(guān)注當(dāng)前業(yè)績規(guī)模,因此會(huì)對(duì)當(dāng)前值狀態(tài)類指標(biāo)、固定期初期末凈增指標(biāo)有較高關(guān)注
通過上面的描述,數(shù)據(jù)報(bào)告的支持模塊至少應(yīng)該涵蓋:指標(biāo)定義庫、圖表編輯器、歸因功能模塊和報(bào)告編輯看板,將這四塊功能有效串聯(lián),實(shí)現(xiàn)數(shù)據(jù)的有效呈現(xiàn):
圖6
2. 指標(biāo)庫
指標(biāo)是指標(biāo)平臺(tái)的靈魂,指標(biāo)庫將指標(biāo)配置的邏輯結(jié)構(gòu)化,在指標(biāo)平臺(tái)中起到承上啟下的作用,不僅能為上層平臺(tái)提供分析所需的各種指標(biāo),更能通過指標(biāo)計(jì)算評(píng)估數(shù)據(jù)治理的效果。
指標(biāo)庫的功能主要有:定義指標(biāo)、組裝SQL、將SQL下壓到計(jì)算引擎、對(duì)外輸出口徑、對(duì)外輸出計(jì)算結(jié)果。指標(biāo)庫中輸出的指標(biāo)包含:指標(biāo)名稱、指標(biāo)ID、指標(biāo)口徑和指標(biāo)計(jì)算結(jié)果四個(gè)元素,指標(biāo)能在不同平臺(tái)之間流轉(zhuǎn),確保各個(gè)平臺(tái)之間指標(biāo)口徑一致且顯性。
另外,添加指標(biāo)的屬性信息(例如:所屬業(yè)務(wù)線、標(biāo)簽信息、所屬經(jīng)營任務(wù)等)則可以構(gòu)建出指標(biāo)標(biāo)簽體系,有效增加指標(biāo)的擴(kuò)展性且能協(xié)助業(yè)務(wù)線完成整體經(jīng)營體系設(shè)計(jì)。
指標(biāo)配置的結(jié)構(gòu)化必然對(duì)底表數(shù)據(jù)結(jié)構(gòu)有要求,因此我們在指標(biāo)庫中設(shè)計(jì)三個(gè)環(huán)節(jié)來規(guī)范底層數(shù)據(jù)結(jié)構(gòu),即:數(shù)據(jù)表管理、事件管理、指標(biāo)設(shè)計(jì),下文做一下詳細(xì)介紹:
(1)數(shù)據(jù)表管理
數(shù)據(jù)表管理起到兩個(gè)作用:一個(gè)是對(duì)能進(jìn)入平臺(tái)的表進(jìn)行約束,另一個(gè)是進(jìn)行表模型維護(hù)。從數(shù)據(jù)整體角度講,這一功能是底層數(shù)倉的元數(shù)據(jù)管理模塊,通過這一模塊可以梳理出數(shù)倉中表的邏輯關(guān)系,數(shù)據(jù)表管理模塊中主要維護(hù)的表模型有:單表模型、星狀模型;
單表模型是最直觀的建指標(biāo)方式,用戶只需要選擇表對(duì)應(yīng)事件,確定算子,選擇這一表中的字段作為過濾規(guī)則,以此來確定指標(biāo)口徑,平臺(tái)會(huì)依據(jù)這一口徑拼裝SQL,直接下壓到計(jì)算引擎中計(jì)算,計(jì)算結(jié)果會(huì)返回到上層應(yīng)用平臺(tái)。
星狀模型是在單表的基礎(chǔ)上進(jìn)行了一層擴(kuò)展,在一個(gè)事實(shí)表的基礎(chǔ)上關(guān)聯(lián)多張維表,計(jì)算過程中能夠通過維表篩選出更復(fù)雜/更完整的規(guī)則。星狀模型如下:
表2
在指標(biāo)庫表管理模塊中需要將事實(shí)表與維表建立關(guān)聯(lián)關(guān)系(以某一主鍵建立left join、right join、inner join等多種連接方式),關(guān)聯(lián)關(guān)系建立后在指標(biāo)設(shè)計(jì)的過濾規(guī)則中可以選到維表中的字段。
此處做一下備注:
- 由于雪花模型自身復(fù)雜性,設(shè)計(jì)成本較高,且雪花模型可以拆解成星狀模型來應(yīng)用,因此平臺(tái)設(shè)計(jì)過程中暫時(shí)不考慮。
- 星狀模型的引入會(huì)增加指標(biāo)設(shè)計(jì)的復(fù)雜度,例如:維表中字段發(fā)生變化(千元戶從0變成1);事實(shí)表跨日計(jì)算時(shí)是否需要關(guān)聯(lián)最新維表;維表一般是全量表事實(shí)表多是增量表,兩者之間有何關(guān)聯(lián)規(guī)則等,由于本文是進(jìn)行主流程梳理,細(xì)節(jié)不做過多描述)。
這一模塊的頁面形態(tài)如下:
圖7
數(shù)據(jù)顯示邏輯有三種:
- 平臺(tái)獨(dú)立一個(gè)數(shù)據(jù)庫:用到的表可以直接導(dǎo)入到這一庫中,庫中存在的表直接呈現(xiàn)在表管理頁面中,這一方式在數(shù)據(jù)導(dǎo)入過程中需要在單表層面上做好清洗:確定主鍵、確定時(shí)間字段,數(shù)據(jù)導(dǎo)入庫中后,再通過頁面進(jìn)行。
- 平臺(tái)直接構(gòu)建在統(tǒng)一數(shù)倉上:取數(shù)倉上的元數(shù)據(jù)信息統(tǒng)一呈現(xiàn)在這一頁面模塊,在頁面上進(jìn)行表分層分級(jí)管理,然后確定主鍵和時(shí)間字段,并關(guān)聯(lián)其他維表,形成對(duì)應(yīng)數(shù)據(jù)模型。
- 平臺(tái)獨(dú)立數(shù)據(jù)庫,同時(shí)對(duì)接元數(shù)據(jù)平臺(tái):在頁面上選擇表元數(shù)據(jù)后,后臺(tái)自動(dòng)調(diào)起導(dǎo)數(shù)邏輯,表數(shù)據(jù)導(dǎo)入到平臺(tái)數(shù)據(jù)庫中,在平臺(tái)頁面上做分層分級(jí)管理,這一邏輯對(duì)頁面形態(tài)有些調(diào)整,頁面添加“表新增”功能,點(diǎn)擊后可以錄入表信息,如下:
圖8
完成表分層分級(jí)維護(hù)后,需要對(duì)表中內(nèi)容進(jìn)行規(guī)范和指定,例如:事件表可以指定事件,狀態(tài)表可以指定統(tǒng)計(jì)時(shí)間等。
點(diǎn)擊“狀態(tài)”中的“屬性”按鈕,可以對(duì)表中字段進(jìn)行維護(hù):
圖9
點(diǎn)擊“數(shù)值類型”下拉按鈕可以選擇“int/list/float/datetime/string”等類型,不同的類型在指標(biāo)計(jì)算過程中要求不同,list類型不能進(jìn)行“字典”上傳,其他類型可以通過上傳csv文件來維護(hù)字段內(nèi)容。
(2)事件/時(shí)間管理
事件管理作為指標(biāo)庫的必須字段不僅涵蓋事件類指標(biāo)一種類型,狀態(tài)類指標(biāo)/匯總類指標(biāo)也需要在這里做時(shí)間指定,兩者指定的邏輯略有不同:
- 事件類指標(biāo)模式:生產(chǎn)上直接流轉(zhuǎn)下來的事件數(shù)據(jù)往往是單事件模型,即一條記錄中只有一個(gè)動(dòng)作、一個(gè)動(dòng)作發(fā)生時(shí)間,但是在實(shí)際應(yīng)用過程中,出于使用方便會(huì)以客戶為主鍵,將多個(gè)事件整合到一張表中,形成多事件模型,在構(gòu)建事件時(shí)能基于場景需要靈活指定事件時(shí)間。
- 狀態(tài)/匯總時(shí)間類指標(biāo)模式:多為用戶屬性信息,即一條記錄中只有dt時(shí)間字段,沒有用來表示用戶動(dòng)作發(fā)生的時(shí)間字段,因此在構(gòu)建事件時(shí)將dt作為時(shí)間字段構(gòu)建偽事件。
指定的事件會(huì)存儲(chǔ)在事件管理模塊,其頁面樣式如下:
圖10
在這里呈現(xiàn)的事件都能在指標(biāo)設(shè)計(jì)過程中選得到。
(3)指標(biāo)設(shè)計(jì)
經(jīng)過前兩個(gè)步驟的梳理,指標(biāo)定義模塊可以正常使用,這一模塊的對(duì)應(yīng)界面如下:
圖11
上面的指標(biāo)設(shè)計(jì)頁面中,我們可以看到指標(biāo)的完整結(jié)構(gòu):事件名+算子+過濾規(guī)則(思考與上面指標(biāo)表達(dá)式的區(qū)別),這一結(jié)構(gòu)依賴于底層表模型,在頁面上通過選擇事件名、過濾規(guī)則來確定計(jì)算范圍,通過不同算子來確定計(jì)算方式。
通過如上邏輯,我們可以組裝出大部分指標(biāo)樣式,包括點(diǎn)擊、成單、余額等。
三、指標(biāo)分類和加工
介紹完指標(biāo)庫的整體結(jié)構(gòu),我們有了指標(biāo)加工流水線,接下來詳細(xì)介紹一下指標(biāo)的分類和加工過程。
從流程角度我們梳理出指標(biāo)對(duì)應(yīng)的關(guān)系鏈如下:
圖12
可以看到指標(biāo)的基本形態(tài)有事件類指標(biāo)和狀態(tài)類指標(biāo),結(jié)合計(jì)算場景形成了凈增類指標(biāo)和累加類指標(biāo),共形成四種指標(biāo)類型,我們逐一介紹:
1. 事件類型指標(biāo)設(shè)計(jì)模型
事件類指標(biāo)是指與客戶動(dòng)作發(fā)生相關(guān)的指標(biāo),例如:點(diǎn)擊率、成單率,每個(gè)動(dòng)作都會(huì)攜帶一個(gè)對(duì)應(yīng)的時(shí)間,其數(shù)據(jù)結(jié)構(gòu)主要為:
表3
這一類型的指標(biāo)多為增量表(二次加工的多事件模型存在全量表),每天記錄當(dāng)天發(fā)生的行為,統(tǒng)計(jì)過程中需要用到的算子有count()、sum()、count(distinct……)三種類型,跨日期統(tǒng)計(jì)頻次較高,每日趨勢圖、整體數(shù)據(jù)、不同時(shí)間段邏輯較容易梳理:
事件類增量表的表結(jié)構(gòu)基本如下:
表4
指標(biāo)的設(shè)計(jì)樣式為:
圖13
在頁面上填充“事件名、算子、過濾規(guī)則”、完善指標(biāo)計(jì)算所需要的口徑、同時(shí)在指標(biāo)組合位置組裝出指標(biāo)的計(jì)算邏輯,即可完成指標(biāo)定義過程。
在事件類指標(biāo)的邏輯中,我們可以看出,上面三個(gè)模塊的邏輯關(guān)系為:
圖14
指標(biāo)定義好后,我們該如何計(jì)算呢?
從表結(jié)構(gòu)中可以明確有兩種計(jì)算方式:增量表計(jì)算、全量表計(jì)算。
這兩種計(jì)算的差異主要體現(xiàn)在統(tǒng)計(jì)范圍的選擇上:增量表計(jì)算需要跨多日匯總,而全量表計(jì)算只需要計(jì)算最新DT。
結(jié)合上面的邏輯關(guān)系我們可以得出如下兩個(gè)邏輯:
其一:指標(biāo)計(jì)算引用的如果是增量表:則統(tǒng)計(jì)范圍以事件發(fā)生時(shí)間為標(biāo)準(zhǔn),例如:統(tǒng)計(jì)10月3日~10月7日的點(diǎn)擊UV,只需要按照事件發(fā)生時(shí)間進(jìn)行數(shù)據(jù)圈選,如果是離線數(shù)據(jù),則需要根據(jù)事件發(fā)生時(shí)間確定出對(duì)應(yīng)的dt范圍(事件日期==dt日期),然后在這一范圍內(nèi)進(jìn)行相應(yīng)指標(biāo)計(jì)算。
SQL中對(duì)應(yīng)的where條件描述如下:
- 整體數(shù)據(jù)為:“dt=between 事件開始日期 and 事件結(jié)束日期”
- 每日數(shù)據(jù)為:“dt=between 事件開始日期 and 事件結(jié)束日期 group by dt”
其二:指標(biāo)計(jì)算引用的如果是全量表:則統(tǒng)計(jì)范圍首先會(huì)選出最新dt,然后在最新dt數(shù)據(jù)表中基于事件發(fā)生時(shí)間圈選數(shù)據(jù)范圍(事件日期包含在最新dt中),然后再計(jì)算對(duì)應(yīng)指標(biāo)。
SQL中對(duì)應(yīng)的where條件描述如下:
- 整體數(shù)據(jù)為:“dt=max(dt)以及事件時(shí)間=between 事件開始時(shí)間 and 事件結(jié)束時(shí)間”
- 每日數(shù)據(jù)為:“dt=max(dt)以及事件時(shí)間=between 事件開始時(shí)間 and 事件結(jié)束時(shí)間 group by 事件日期”
結(jié)合指標(biāo)設(shè)計(jì)過程中的過濾條件,我們就可以拼裝出完整的SQL邏輯,將邏輯下壓到計(jì)算引擎中即可得到對(duì)應(yīng)的數(shù)據(jù)。
2. 狀態(tài)類型指標(biāo)設(shè)計(jì)模型
狀態(tài)類指標(biāo)通常用來描述用戶最新的信息,分為余額類和屬性類。
這一類指標(biāo)有如下幾個(gè)特點(diǎn):
- 數(shù)據(jù)多存儲(chǔ)在全量表中,每個(gè)dt記錄全量用戶的最新狀態(tài)
- 表中通常沒有用來記錄動(dòng)作的時(shí)間字段
- 數(shù)據(jù)存儲(chǔ)以單表模型為主,表中信息定時(shí)刷新
例如:
表5
這一類指標(biāo)的頁面配置邏輯為:
圖15
將狀態(tài)類明細(xì)表導(dǎo)入到平臺(tái)數(shù)據(jù)庫中,“表管理”頁面中看到這一表信息后,將dt作為事件時(shí)間定義事件名稱(事件日期==dt日期),這一事件對(duì)應(yīng)的時(shí)間用來計(jì)算趨勢圖。
SQL中對(duì)應(yīng)where條件描述如下:
- 整體數(shù)據(jù)為:“dt=max(事件日期)”
- 每日數(shù)據(jù)為:“dt=between 事件開始日期 and 事件結(jié)束日期 group by dt”
圖16
此處定義的事件是以dt為時(shí)間創(chuàng)建,因此事件與表之間的對(duì)應(yīng)關(guān)系為1:1。
定義好的事件可以直接用在指標(biāo)定義環(huán)節(jié):
圖17
此時(shí),指標(biāo)的對(duì)應(yīng)關(guān)系變?yōu)椋?/p>
圖18
狀態(tài)類指標(biāo)中有兩類小眾的數(shù)據(jù)結(jié)構(gòu):
其一:為增量表狀態(tài)指標(biāo),配置過程中與全量表狀態(tài)指標(biāo)類似,計(jì)算過程中存在一定差異。
SQL中對(duì)應(yīng)where條件描述如下:
- 整體數(shù)據(jù)為:“dt= between 事件開始日期 and 事件結(jié)束日期”
- 每日數(shù)據(jù)為:“dt=between 事件開始日期 and 事件結(jié)束日期 group by dt”
其二:為月日均類指標(biāo),配置過程基于全量表完成,計(jì)算過程中跨多個(gè)dt,對(duì)應(yīng)算子優(yōu)化較為便捷。
SQL中對(duì)應(yīng)描述如下:
- 整體數(shù)據(jù)為:“select sum(多dt對(duì)應(yīng)字段)/count(多dt數(shù)量) …… where dt= between 事件開始日期 and 事件結(jié)束日期”
- 每日數(shù)據(jù)相對(duì)較為復(fù)雜,需要記錄兩個(gè)時(shí)間:其一是取均值時(shí)間段,其二是數(shù)據(jù)觀察時(shí)間段,具體邏輯在下文中有專門描述
3. 凈增類型指標(biāo)設(shè)計(jì)模型
上面我們描述兩類最常見的指標(biāo):狀態(tài)類、事件類,這兩類指標(biāo)是平臺(tái)應(yīng)用中最常見的兩類指標(biāo),邏輯處理相對(duì)簡單,我們再回過頭來看一下這個(gè)指標(biāo)表達(dá)式:
圖19
凈增類指標(biāo)在前兩類指標(biāo)的基礎(chǔ)上深化了“時(shí)間”元素的應(yīng)用場景:出現(xiàn)了“期末-期初”的邏輯。
梳理凈增類指標(biāo)的邏輯我們可以得出如下幾種類型:
表6
這四種類型在指標(biāo)設(shè)計(jì)上不需要對(duì)頁面有太多調(diào)整,最直接的方式為優(yōu)化算子,我們逐一做一下拆解:
(1)事件類固定期初期末凈增
這一類指標(biāo)有兩個(gè)特點(diǎn):
- 固定期初期末是從整體的角度衡量團(tuán)隊(duì)或部門的綜合效果
- 事件類指標(biāo)是通過圈選某個(gè)時(shí)間段,計(jì)算期間總量
最常見的指標(biāo)為:活躍類的同環(huán)比指標(biāo);
最常用的部門為:企劃/財(cái)務(wù)團(tuán)隊(duì),用來定期衡量運(yùn)營/業(yè)務(wù)團(tuán)隊(duì)的經(jīng)營效果,運(yùn)營/業(yè)務(wù)團(tuán)隊(duì)也會(huì)使用這一指標(biāo)來衡量其整體經(jīng)營效果;
最常見的統(tǒng)計(jì)時(shí)間為:期初是去年同月、今年1月份、上個(gè)月,期末是當(dāng)月。
在這一邏輯下,表管理及事件管理模塊沒有變動(dòng),依然保持事件類表模型,在指標(biāo)設(shè)計(jì)模塊中最直接的調(diào)整方式為算子優(yōu)化:
圖20
選擇凈增類指標(biāo)時(shí),指標(biāo)設(shè)計(jì)中默認(rèn)呈現(xiàn)出A、B兩個(gè)指標(biāo)。
“統(tǒng)計(jì)時(shí)間從……到……,按……求和”這一算子可以作為凈增類求和指標(biāo)的計(jì)算邏輯,主要為了解決如下計(jì)算邏輯:
圖21
- 點(diǎn)擊算子的1號(hào)位置:彈出簡化版的時(shí)間選框,選擇期初的開始-結(jié)束時(shí)間
- 點(diǎn)擊算子的2號(hào)位置:彈出簡化版的時(shí)間選框,選擇期末的開始-結(jié)束時(shí)間
- 點(diǎn)擊算子的3號(hào)位置:求和算子是對(duì)數(shù)值型字段進(jìn)行求和計(jì)算,點(diǎn)擊彈出事件對(duì)應(yīng)表中數(shù)值型字段(數(shù)值型字段可以在表管理界面中維護(hù)和修改)
- 凈增類指標(biāo)即為上面的方式計(jì)算兩個(gè)值,然后計(jì)算差值,作為凈增量
同類型的算子有另外兩個(gè):
- “統(tǒng)計(jì)時(shí)間從……到……,按……計(jì)數(shù)”
- “統(tǒng)計(jì)時(shí)間從……到……,按……去重計(jì)數(shù)”
指標(biāo)設(shè)計(jì)中對(duì)應(yīng)的SQL樣式及指標(biāo)組合公式為:
整體數(shù)據(jù)為:
- A:Select sum(3號(hào)位字段) …… where dt>=1號(hào)位中開始時(shí)間 and dt<=1號(hào)位中結(jié)束時(shí)間
- B:Select sum(3號(hào)位字段) …… where dt>=2號(hào)位中開始時(shí)間 and dt<=2號(hào)位中結(jié)束時(shí)間
- 計(jì)算凈增:ins_data = B-A
每日數(shù)據(jù)是針對(duì)期初期末浮動(dòng)的指標(biāo)類型,日期增加一天,對(duì)應(yīng)數(shù)值刷新一次,如果是期初期末固定的指標(biāo),對(duì)應(yīng)的計(jì)算是一個(gè)值,對(duì)應(yīng)不呈現(xiàn)每日數(shù)據(jù),趨勢圖也不做數(shù)據(jù)呈現(xiàn)。
(2)事件類浮動(dòng)期初期末凈增
這一指標(biāo)類型包含兩種細(xì)分類型,對(duì)應(yīng)的圖形表達(dá)為:
圖22
對(duì)于細(xì)分類型1:
使用的算子可以做對(duì)應(yīng)調(diào)整為:
- “統(tǒng)計(jì)時(shí)間從…<1>…向后統(tǒng)計(jì)…<2>…日,按…<3>…求和”
- 在1號(hào)位選擇開始統(tǒng)計(jì)的日期,作為期初比較值
- 在2號(hào)位選擇從開始日期向后統(tǒng)計(jì)N日,拼接出統(tǒng)計(jì)時(shí)間段t+N,后續(xù)隨時(shí)間向后滑動(dòng)
- 在3號(hào)位選擇時(shí)間段中需要統(tǒng)計(jì)的字段,該字段為int和float類型
細(xì)分類型1中的配套算子為:
- “統(tǒng)計(jì)時(shí)間從…<1>…向后統(tǒng)計(jì)…<2>…日,按…<3>…計(jì)數(shù)”
- “統(tǒng)計(jì)時(shí)間從…<1>…向后統(tǒng)計(jì)…<2>…日,按…<3>…去重計(jì)數(shù)”
指標(biāo)設(shè)計(jì)中對(duì)應(yīng)的SQL樣式及指標(biāo)組合公式為:
- A最新值SQL為:select sum(3號(hào)位字段) …… where dt >= 期初1號(hào)位日期 and dt <= 期初1號(hào)位日期+2號(hào)位數(shù)值
- B最新值SQL為:select sum(3號(hào)位字段) …… where dt >= 期末1號(hào)位日期 and dt <= 期末1號(hào)位日期+2號(hào)位數(shù)值
- 最新值凈增為:B-A
- A每日值SQL為:select sum(3號(hào)位字段) …… where dt >= 期初1號(hào)位日期 and dt <= 期初1號(hào)位日期+2號(hào)位數(shù)值 group by 1號(hào)位日期
- B每日值SQL為:select sum(3號(hào)位字段) …… where dt >= 期末1號(hào)位日期 and dt <= 期末1號(hào)位日期+2號(hào)位數(shù)值 group by 1號(hào)位日期
- 每日值凈增為:B-A
對(duì)于細(xì)分類型2:
使用場景有一些變動(dòng),例如:在某一策略中統(tǒng)計(jì)某個(gè)人點(diǎn)擊后7天的成單情況,由于策略中人數(shù)不固定,因此統(tǒng)計(jì)t+N的數(shù)量不固定,無法使用細(xì)分類型1中的算子計(jì)算,因此新增幾個(gè)算子如下:
“基于事件向后統(tǒng)計(jì)…<1>…日,按…<2>…事件…<3>…求和”。
這一算子的統(tǒng)計(jì)邏輯為:
- 在事件類型指標(biāo)設(shè)計(jì)過程中,首先會(huì)選擇一個(gè)事件,在這一事件的基礎(chǔ)上向后統(tǒng)計(jì)N日,按照2號(hào)位的字段求和
- 2號(hào)位字段對(duì)應(yīng)也是一個(gè)事件,如果事件發(fā)生時(shí)間在1號(hào)位約束時(shí)間范圍內(nèi),則按照3號(hào)位字段計(jì)算,如果不在則不做計(jì)算
細(xì)分類型2中的配套算子為:
- “基于事件向后統(tǒng)計(jì)…<1>…日,按…<2>…事件…<3>…計(jì)數(shù)”
- “基于事件向后統(tǒng)計(jì)…<1>…日,按…<2>…事件…<3>…去重計(jì)數(shù)”
由于這一邏輯較為復(fù)雜,因此我們梳理事件對(duì)應(yīng)的表結(jié)構(gòu)為:
表7
指標(biāo)設(shè)計(jì)中對(duì)應(yīng)的SQL樣式及指標(biāo)組合公式為:
- A最新值SQL為:select sum(case when 成單時(shí)間 >= click時(shí)間 and 成單時(shí)間 <= 統(tǒng)計(jì)結(jié)束時(shí)間 then 成單金額 else 0 end) …… where dt >= 期初1號(hào)位事件最新發(fā)生日期 and dt <= 期初1號(hào)位事件最新發(fā)生日期+2號(hào)位數(shù)值
- B最新值SQL為:select sum(case when 成單時(shí)間 >= click時(shí)間 and 成單時(shí)間 <= 統(tǒng)計(jì)結(jié)束時(shí)間 then 成單金額 else 0 end) …… where dt >= 期末1號(hào)位事件最新發(fā)生日期 and dt <= 期末1號(hào)位事件最新發(fā)生日期+2號(hào)位數(shù)值
- 最新值凈增為:B-A
- A每日值SQL為:select sum(case when 成單時(shí)間 >= click時(shí)間 and 成單時(shí)間 <= 統(tǒng)計(jì)結(jié)束時(shí)間 then 成單金額 else 0 end) …… where dt >= 期初1號(hào)位事件發(fā)生日期 and dt <= 期初1號(hào)位事件發(fā)生日期+2號(hào)位數(shù)值 group by 1號(hào)位事件發(fā)生日期
- B每日值SQL為:select sum(case when 成單時(shí)間 >= click時(shí)間 and 成單時(shí)間 <= 統(tǒng)計(jì)結(jié)束時(shí)間 then 成單金額 else 0 end) …… where dt >= 期末1號(hào)位事件發(fā)生日期 and dt <= 期末1號(hào)位事件發(fā)生日期+2號(hào)位數(shù)值 group by 1號(hào)位事件發(fā)生日期
- 每日值凈增為:B-A
如上兩種場景是在事件類表的場景下進(jìn)行計(jì)算,如果整個(gè)表中沒有事件發(fā)生時(shí)間,只有dt字段,則不適合用上面算子計(jì)算。
(3)狀態(tài)類固定期初期末凈增
這一類型的指標(biāo)也包含兩種細(xì)分類型,對(duì)應(yīng)的圖形表達(dá)為:
圖23
細(xì)分類型1主要是獲取期初和期末兩個(gè)dt,其計(jì)算特點(diǎn)為:
- 固定選擇兩個(gè)dt,作為計(jì)算的數(shù)據(jù)基礎(chǔ)
- 兩個(gè)dt各自求和,然后做凈增計(jì)算
對(duì)應(yīng)的算子有:
- “基于時(shí)間…<1>…,按…<2>…求和”
- 在1號(hào)位置選擇需要計(jì)算的時(shí)間,后續(xù)所有的計(jì)算都是在這個(gè)dt的基礎(chǔ)上進(jìn)行
- 在2號(hào)位置選擇參與計(jì)算的字段,算子針對(duì)這一字段求和
指標(biāo)設(shè)計(jì)中對(duì)應(yīng)的SQL樣式及指標(biāo)組合公式為:
- A期初值SQL為:select sum(2號(hào)位字段) …… where dt = 1號(hào)位時(shí)間
- B期末最新值SQL為:select sum(2號(hào)位字段) …… where dt = 1號(hào)位時(shí)間
- 對(duì)應(yīng)的凈增值為:B-A
在固定期初類指標(biāo)中,每日凈增的計(jì)算只需要依照加掛策略的開始時(shí)間,然后每天計(jì)算凈增值,得到每日提升值。
配套算子有如下兩個(gè):
- “基于時(shí)間…<1>…,按…<2>…計(jì)數(shù)”
- “基于時(shí)間…<1>…,按…<2>…去重計(jì)數(shù)”
細(xì)分類型2主要是在狀態(tài)類指標(biāo)中跨dt計(jì)算,由于每個(gè)dt中都存儲(chǔ)了全量的數(shù)據(jù),因此跨dt計(jì)算能進(jìn)行求均值、最值等。
時(shí)間段指標(biāo)統(tǒng)計(jì)也存在兩個(gè)思路:滑動(dòng)N日、按照自然月。
滑動(dòng)N日:期初是個(gè)相對(duì)固定的值,期末數(shù)據(jù)每日向后滑動(dòng),每日計(jì)算過去30日均值;
日期滑動(dòng)需要有一個(gè)相對(duì)變量,即當(dāng)下日期的時(shí)間表示為{yyyyMMdd},滑動(dòng)邏輯統(tǒng)一用這一字段做加減計(jì)算,例如:過去30日滑動(dòng)為“{yyyyMMdd-30d}-{yyyyMMdd}”,對(duì)應(yīng)算子為:
- “統(tǒng)計(jì)時(shí)間從…<1>…到…<2>…,按…<3>…單日求和取均值”
- “統(tǒng)計(jì)時(shí)間從…<1>…到…<2>…,按…<3>…單日求和取最大值”
- “統(tǒng)計(jì)時(shí)間從…<1>…到…<2>…,按…<3>…單日求和取最小值”
- “統(tǒng)計(jì)時(shí)間從…<1>…到…<2>…,按…<3>…單日計(jì)數(shù)取均值”
- “統(tǒng)計(jì)時(shí)間從…<1>…到…<2>…,按…<3>…單日計(jì)數(shù)取最大值”
- “統(tǒng)計(jì)時(shí)間從…<1>…到…<2>…,按…<3>…單日計(jì)數(shù)取最小值”
- “統(tǒng)計(jì)時(shí)間從…<1>…到…<2>…,按…<3>…單日去重計(jì)數(shù)取均值”
- “統(tǒng)計(jì)時(shí)間從…<1>…到…<2>…,按…<3>…單日去重計(jì)數(shù)取最大值”
- “統(tǒng)計(jì)時(shí)間從…<1>…到…<2>…,按…<3>…單日去重計(jì)數(shù)取最小值”
這一計(jì)算方式每天都有一次計(jì)算,對(duì)應(yīng)趨勢圖為每日數(shù)值。
按照自然月:則需要對(duì)上面算子中時(shí)間值進(jìn)行特殊處理,能夠選到每月月初時(shí)間{yyyyMMdd -start M}。
(4)狀態(tài)類浮動(dòng)期初期末凈增:
浮動(dòng)期初期末對(duì)應(yīng)的指標(biāo)類型與上文固定期初期末指標(biāo)類型相似,不同點(diǎn)在于期初期末的時(shí)間是可以變動(dòng)的,此時(shí)只需要在算子中靈活應(yīng)用“{yyyyMMdd -start M}”、“{yyyyMMdd -Nd}”、“向后N日”三個(gè)時(shí)間變量即可,上面三個(gè)場景完整覆蓋的情況下,這一場景也可以得到保障,此處不做贅述。
4. 累加類型指標(biāo)設(shè)計(jì)模型
上文我們詳細(xì)描述了凈增類指標(biāo)的各個(gè)場景,復(fù)雜度相對(duì)較高,不過也正因?yàn)檫@樣的復(fù)雜度才能幫助我們更有效的提升算子的適配能力。
在這一環(huán)節(jié)中,我們介紹最后一種類型的指標(biāo),即:累加型指標(biāo)。
這一指標(biāo)的特點(diǎn)是每天的數(shù)據(jù)都來自于昨天數(shù)據(jù)與今天新增數(shù)據(jù),逐日累加,在每個(gè)最新的dt中包含全量數(shù)據(jù)。
累加類指標(biāo)的適用范圍較小,其最直接的價(jià)值在于減少性能壓力,每次計(jì)算都使用最新dt中的數(shù)據(jù),這一類型的計(jì)算主要有兩種處理方式:
- 在數(shù)據(jù)庫中直接處理成累全量表,然后在指標(biāo)設(shè)計(jì)過程中采用狀態(tài)類指標(biāo)方式計(jì)算。
- 在數(shù)據(jù)庫中存儲(chǔ)最原始的兩類表:增量表、全量表,然后在指標(biāo)設(shè)計(jì)的算子中增加類全量類型的算子。
此處我們重點(diǎn)介紹一下第二種方式:
圖24
累加邏輯按照數(shù)值類型可以有如下幾種:訂單金額類(求和/求均值)、0-1與或類(與或計(jì)算)、客戶量類(計(jì)數(shù)/去重計(jì)數(shù))等。
按照一定的邏輯將數(shù)值匯總到最新dt中,后續(xù)的統(tǒng)計(jì)全按照最新dt計(jì)算,整體邏輯相對(duì)簡單,不過數(shù)據(jù)處理起來需要有一些前置工作,以“基于…<1>…按日累加求和”算子為例:
第一步:數(shù)據(jù)累加:
表8
第二步:按照最新dt計(jì)算指標(biāo):
- 對(duì)應(yīng)的SQL為:select sum(1號(hào)位字段) …… where dt = 最新日期
- 每日數(shù)據(jù)則為:select sum(1號(hào)位字段) …… where dt >= 策略生效日期 group by dt
除累加求和外,相關(guān)算子還有:
- “基于…<1>…按日累加求均值”
- “基于…<1>…按日累加求最大值”
- “基于…<1>…按日累加求最小值”
- “基于…<1>…按月累加求均值”
- “基于…<1>…按月累加求最大值”
- “基于…<1>…按日累加求最小值”
……
四、后記
文章寫到這里算是告一段落,在這篇文章中我們梳理了指標(biāo)的加工流水線——指標(biāo)庫,并在流水線的基礎(chǔ)上梳理指標(biāo)的分類和加工過程。兩條鏈路相互協(xié)同下,指標(biāo)計(jì)算結(jié)果可以快速輸出,同時(shí)輸出指標(biāo)的口徑和屬主,數(shù)據(jù)使用人員能夠明明白白使用指標(biāo),隨著指標(biāo)庫中指標(biāo)的累積和使用規(guī)范的完善,企業(yè)中看數(shù)據(jù)的問題會(huì)逐漸減少,不過對(duì)于平臺(tái)性能的壓力需要做一些權(quán)衡。
構(gòu)建完整的數(shù)據(jù)底座是數(shù)據(jù)驅(qū)動(dòng)的根基,根基穩(wěn)則驅(qū)動(dòng)強(qiáng),根基不穩(wěn)則寸步難行。下一篇文章我們繼續(xù)梳理后兩個(gè)環(huán)節(jié),在強(qiáng)有力的數(shù)據(jù)底座上,首先要做的就是要梳理出能讓業(yè)務(wù)看得懂的報(bào)告:《數(shù)據(jù)報(bào)告最重要的是讓業(yè)務(wù)看得懂……》,歡迎大家討論~
為我投票
我在參加人人都是產(chǎn)品經(jīng)理2022年度作者評(píng)選,希望喜歡我的文章的朋友都能來支持我一下~
點(diǎn)擊下方鏈接進(jìn)入我的個(gè)人參選頁面,點(diǎn)擊紅心即可為我投票。
每人每天最多可投35票,投票即可獲得抽獎(jiǎng)機(jī)會(huì),抽取書籍、人人都是產(chǎn)品經(jīng)理紀(jì)念周邊和起點(diǎn)課堂會(huì)員等好禮哦!
投票傳送門:https://996.pm/7gB6m
專欄作家
野水晶體,微信公眾號(hào):livandata,人人都是產(chǎn)品經(jīng)理專欄作家。金融行業(yè)的互聯(lián)網(wǎng)老兵,聚焦數(shù)據(jù)驅(qū)動(dòng),將算法、數(shù)據(jù)融入產(chǎn)品設(shè)計(jì)與運(yùn)營策略,構(gòu)建金融增長方法論。
本文原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)作者許可,禁止轉(zhuǎn)載。
題圖來自Unsplash,基于CC0協(xié)議。
該文觀點(diǎn)僅代表作者本人,人人都是產(chǎn)品經(jīng)理平臺(tái)僅提供信息存儲(chǔ)空間服務(wù)。
- 目前還沒評(píng)論,等你發(fā)揮!