指標(biāo)管理靈魂提問-原子指標(biāo)要支持開窗函數(shù)嗎?

0 評論 2492 瀏覽 9 收藏 18 分鐘
🔗 B端产品经理需要更多地进行深入的用户访谈、调研、分析,而C端产品经理需要更多地快速的用户测试、反馈、迭代

當(dāng)你面對“原子指標(biāo)需要支持開窗函數(shù)嗎”這個問題時,你會如何回答?這篇文章里,作者結(jié)合案例和過往經(jīng)驗,對開窗、指標(biāo)管理、原子指標(biāo)等概念及相關(guān)問題做了解讀,不妨來看一下。

開局一個靈魂提問:原子指標(biāo)需要支持開窗函數(shù)嗎?

假如,你服務(wù)的企業(yè)在做數(shù)倉重構(gòu),給你機會嘗試One Data指標(biāo)管理的落地。你還是參照競品,設(shè)計了指標(biāo)管理,能對指標(biāo)進(jìn)行各種計算邏輯的定義。 提問:原子指標(biāo)的口徑定義里,能不能也支持支持開窗函數(shù)。

這個問題,你又怎么看?來,思考3秒,3…2…1,給出你的答案。你是不是又開始想,「什么是原子指標(biāo)」這個問題了?如果對技術(shù)不熟悉,可能還會問,什么是開窗函數(shù)?接下來的內(nèi)容,將會圍繞這主題展開。

  1. 問題起源什么是開窗?
  2. 為什么要開窗?
  3. 回看:到底要不要支持開窗
  4. 問題的本質(zhì):理解指標(biāo)、表、以及指標(biāo)和表的關(guān)系

本文將會結(jié)合生動的案例和深入的自我思考,帶你從一個小問題深入理解指標(biāo)管理,希望你能看到最后~

一、問題起源

當(dāng)時公司在做數(shù)倉重構(gòu),正好給我機會機嘗試One Data的落地。但我也沒經(jīng)驗,于是參考了很多資料和競品,然后對照著競品照貓畫虎弄了指標(biāo)管理的設(shè)計,就像華為 DataArtsStudio 的指標(biāo)管理這樣:

數(shù)倉開發(fā)同事看了這個原子指標(biāo)管理的界面,然后問了上文提到的問題:原子指標(biāo)能不能支持開窗函數(shù)。我反問了下,為啥要支持開窗?同事當(dāng)時說的原話我不太記得了,大概說的是:某些指標(biāo)是要開窗統(tǒng)計排名。比如(假設(shè)),教育場景里,某個報表里有這兩個指標(biāo)。

銷售金額TOP1課程,很像是用來修飾指標(biāo)的前綴(修飾詞),但又是基于對指標(biāo)的排序而來的。

已知,原子指標(biāo)要定義指標(biāo)取數(shù)的邏輯,開窗函數(shù)是一種計算方式,那么,原子指標(biāo)的定義里面,是否要囊括對開窗函數(shù)的定義呢?我轉(zhuǎn)身看競品(DataArts Studio_新建原子指標(biāo))找答案,但是競品沒支持。

不僅僅華為不支持,其他好幾個大廠競品都沒涉及到這點。完蛋,我好像進(jìn)入一個沒人涉足的無人區(qū)了,咋搞?當(dāng)然,我可以很簡單做個決策:相信大廠,照抄。并且以此說服同事,我可以說,大廠的好多的競品沒做,肯定是有道理。但是到底為什么競品不支持開窗呢?我始終不明白。

我了解了實際情況,管理、推薦的場景里,確實有些指標(biāo)是排名性質(zhì)的,看似這個訴求也合理。而且,排名方面,還可以繼續(xù)演化,以直播場景為例。比如按照多個指標(biāo)排名后,最終分出來主播的級別,然后日常要看S、A、B級主播帶貨金額占總體GMV的比例。

在企業(yè)里,你可能會看到兩種狀態(tài)的表格,描述的業(yè)務(wù)結(jié)果是一樣的,但是表頭、行數(shù)、列數(shù)有一些差異(差異就在于,修飾詞是否單獨列出來作為維度,以后有機會再講)到底要不要支持呢?要不要探究下呢?理解開窗,才能知道到底要不要。

二、什么是開窗,為什么要開窗?

我們?nèi)搜鬯吹降膬?nèi)容,都是光照到物體上的反射,打開窗戶,外面的光才能照進(jìn)來。

開窗的大小,決定了進(jìn)入到窗內(nèi)的光的多少,也影響了窗內(nèi)人獲取信息的量。

人所看到的內(nèi)容,取決于看的視角,從不同的角度看,信息也不同。

還記得小學(xué)課文里的楊桃嗎?有的角度看楊桃,像個五角星。再比如,蘇軾在《題西林壁》中寫道:橫看成嶺側(cè)成峰,遠(yuǎn)近高低各不同。不識廬山真面目,只緣身在此山中”。

假如,我們待在一個房間內(nèi),我們認(rèn)為窗是相對靜止的。調(diào)整我們的視角,能看到不同的內(nèi)容,可以理解為從不同的角度(維度)去分析事物。除此以外,也有移動的窗。

就如圖片所示,當(dāng)我們坐在火車上,視角固定,窗戶常開,雖然你人不動,但是你會看到不斷變化的內(nèi)容,不同物體的光會透過窗戶(信息)不斷映入你的眼睛。有了這個基礎(chǔ),我們再去理解數(shù)據(jù)世界的開窗函數(shù)。

開窗函數(shù)是一種在數(shù)據(jù)庫查詢中使用的強大工具,它能夠在一個數(shù)據(jù)集上進(jìn)行復(fù)雜的序列比較和計算。

在SQL中,開窗函數(shù)可以用于各種計算,包括聚合運算、排名、移動平均等,而不改變返回行的數(shù)量。以下是一個簡單的例子:假設(shè)我們有一張名為sales的表格,其中包含了每天的銷售數(shù)據(jù),該表具有以下結(jié)構(gòu):

  • sale_date:銷售日期
  • amount:當(dāng)日銷售金額

如果我們想計算過去7天的滾動平均銷售額,則可以用如下SQL查詢:

SELECT sale_date, amount, AVG(amount) OVER (ORDER BY sale_date ROWS BETWEEN 6 PRECEDING AND CURRENT ROW) AS rolling_avg_sales FROM sales;

這個查詢中的關(guān)鍵部分是開窗函數(shù)AVG(amount) OVER (…):

  • OVER子句定義了窗口的規(guī)則。
  • ORDER BY sale_date表示窗口以sale_date進(jìn)行排序。
  • ROWS BETWEEN 6 PRECEDING AND CURRENT ROW指定了窗口的范圍是當(dāng)前行以及之前的6行,總共覆蓋了7天的數(shù)據(jù)。

執(zhí)行這個查詢后,每一行都會新增一個rolling_avg_sales字段,表示從當(dāng)前行開始往前數(shù)7天內(nèi)(包括當(dāng)前行)的平均銷售額。備注:

不同的SQL數(shù)據(jù)庫管理系統(tǒng)在處理邊界情況(例如,當(dāng)沒有足夠的數(shù)據(jù)計算七天平均時)的默認(rèn)行為可能略有不同。

然后,我們結(jié)合案例來看看開窗函數(shù)定義的指標(biāo)。

假如,我們是一家網(wǎng)店的店主,本月新上了一個品類,然后系統(tǒng)記錄了該品類1-20號的當(dāng)天銷售金額,也統(tǒng)計了環(huán)比昨天的指標(biāo)。如下左邊。我們也基于這兩個指標(biāo)制作對應(yīng)的業(yè)績變化圖。

而當(dāng)我們感受到2次比較大的業(yè)績下滑,在第3次業(yè)績下滑的時候,要不要進(jìn)行調(diào)整銷售策略呢?調(diào)整的依據(jù)是什么呢?尤其14號的業(yè)績剛剛有突破,而15號又猛烈下滑。

這個時候,我們就可以用開窗函數(shù)來看平均的銷售情況,而不是被某一天或兩天的異常高低銷售額所影響,我們可以使用7天滾動平均銷售金額這個指標(biāo)(如下圖)

結(jié)合7天滾動平均銷售金額來看,雖然業(yè)績有起伏波動,尤其是紅色框中的部分,滾動平均銷售金額的波動并沒有那么大,且在小幅下降后便逐步上升如果在原子指標(biāo)定義中需要考慮時間序列分析、累積計算或者比較不同時期的數(shù)據(jù),那么開窗函數(shù)就非常有必要。

當(dāng)然,在真實的應(yīng)用場景中,我們還需要考慮到特殊情況,比如業(yè)務(wù)調(diào)整、節(jié)假日或者其他非營業(yè)日沒有銷售數(shù)據(jù)的情況。

三、回看,到底要不要支持開窗?

開窗有意義嗎?有。那系統(tǒng)層面能支持開窗嗎?能。要支持開窗嗎?等等,再想想,其實還有一個問題。

為什么看到很多競品系統(tǒng),在定義原子指標(biāo)計算邏輯時,都要求先指定對應(yīng)的來源表呢?而且一般都是事實表,這當(dāng)中有什么關(guān)系嗎?

正好,在上篇文章里講到過這個問題:數(shù)倉分層后,原子指標(biāo)如何指定來源事實表。

當(dāng)中說道:我們的目標(biāo)重點是保持清晰的指標(biāo)定義和一致的取數(shù)口徑,即使在不同的聚合層級之間,銷售金額指標(biāo)的計算規(guī)則也應(yīng)該是一致的。

等等,如果有兩個表,一個原始表,一個開窗的結(jié)果表,那是不是可以基于開窗處理后的結(jié)果表來定義指標(biāo)呢?嗯,把這種開窗的計算邏輯前置到表的ETL腳本里去,原子指標(biāo)這層,屏蔽掉這個邏輯。

我們再看看開窗函數(shù),到底是在做什么操作?

在上面的案例里,你也看到了,在某些日期內(nèi)做開窗計算,是沒有結(jié)果的。

當(dāng)數(shù)據(jù)缺漏時,就像開的窗戶對著一塊黑洞。

因為窗戶設(shè)定的范圍很大,但是數(shù)據(jù)的范圍沒那么大(就好像,開的窗戶里有一部分對著黑洞,光壓根從黑洞里跑不出來,那肯定看不到。

而且,案例中開窗是要按照設(shè)定的窗口范圍取一些歷史數(shù)據(jù)計算的,無意間就利用時間修飾了指標(biāo)。時間是什么?可以理解是維度,比如日期,也可以理解是時間周期,近1天、近7天。

其實環(huán)比昨日也涉及到了時間周期。還記得之前文章指標(biāo)管理必知的真相:訂單事實表里沒有原子指標(biāo)引用的公式嗎?派生指標(biāo) = 原子指標(biāo) + 時間周期 + 修飾詞

再問問自己:開窗函數(shù)定義的指標(biāo)是原子指標(biāo)嗎?誒,好像不是。

這時候,我們再回看定義,在指標(biāo)管理中,原子指標(biāo)通常指的是最基本、不可再分的數(shù)據(jù)點,這些數(shù)據(jù)點用來構(gòu)建更復(fù)雜的計算指標(biāo)或衍生指標(biāo)。

例如,日銷售額、用戶訪問量等都可以被看作是原子指標(biāo)。開窗的指標(biāo),相當(dāng)于是借用有時間含義的指標(biāo)進(jìn)行了口徑定義,且只能是在時間往前推移的情況下(也就是有了時間周期的情況下),才能有正確的計算結(jié)果。

故而,開窗函數(shù)修飾的指標(biāo),不是原子指標(biāo)。原子指標(biāo),不應(yīng)該支持開窗函數(shù)。

四、問題的本質(zhì):理解指標(biāo)、表、以及指標(biāo)和表的關(guān)系

1)深入理解不可再分

“不可再分”的原子指標(biāo),指的是在特定的業(yè)務(wù)情境下,該指標(biāo)已經(jīng)是最簡單、最基礎(chǔ)的數(shù)據(jù)度量,無法被進(jìn)一步分解為更小的單位或子指標(biāo)。窗口這個詞,其實不能完全表達(dá)含義,時間列車在滾滾向前,我們哪怕只從固定的視角看數(shù)據(jù),但是這個數(shù)據(jù)也一直在變化。

例如,在銷售分析中,“日銷售金額”可以看作是一個原子指標(biāo)。它由當(dāng)天所有銷售交易的金額總和組成,自身并不會進(jìn)一步分解為更細(xì)的指標(biāo)。當(dāng)然,“日銷售金額”可能來源于多個“單筆交易金額”,但在日銷售額這個層面上,我們通常把它視為一個整體,作為分析的基點。

2)深入理解粒度

分析的基點,這就是為什么數(shù)據(jù)倉庫在選定業(yè)務(wù)過程后,接下來就是聲明粒度的原因??梢曰乜催@篇文章:數(shù)倉避坑-整明白懂粒度如果一個公司想要分析產(chǎn)品銷售數(shù)據(jù),那么“單個產(chǎn)品的銷售數(shù)量”也可以被認(rèn)為是一個原子指標(biāo),因為它代表了最基本的銷售單位計數(shù),不涉及到更深層次的拆分。

這樣的原子指標(biāo)有助于建立一個清晰、簡潔的數(shù)據(jù)體系,它們是構(gòu)建復(fù)雜報告、儀表板和高級分析(如預(yù)測模型)所依賴的基石。通過對多個原子指標(biāo)進(jìn)行組合和運算,可以創(chuàng)建復(fù)雜的衍生指標(biāo),如銷售增長率、用戶留存率等。

3)脫離具體的表談?wù)撝笜?biāo),是沒有意義的

指標(biāo)是為了衡量、跟蹤或比較特定現(xiàn)象或結(jié)果而設(shè)定的具體數(shù)值或標(biāo)準(zhǔn)。離開具體的表定義指標(biāo)和取數(shù)口徑,一個指標(biāo)可能就會失去其原有的明確含義和測量價值。

如果沒有了明確的定義和取數(shù)口徑,就很難保證數(shù)據(jù)的一致性和準(zhǔn)確性,進(jìn)而影響數(shù)據(jù)分析和決策的有效性。

4)指標(biāo)定義的問題,可以通過增加分層表來解決

當(dāng)我們要依賴其他指標(biāo)進(jìn)行計算,我們可以先定義好事實表,加工好對應(yīng)的指標(biāo),然后從定義好的事實表里面取值。

這樣也有個好處:利用表對指標(biāo)的依賴邏輯進(jìn)行一個解耦。不至于讓指標(biāo)的計算口徑定義太過于復(fù)雜,比如,我們看某個指標(biāo),能知道這個指標(biāo)是從某個表的某個字段基于什么方式進(jìn)行計算,就可以了。至于說,依賴的表是怎么加工出來,數(shù)據(jù)是否準(zhǔn)確,那是上一層定義的事情了。

5)表分層之后數(shù)據(jù)的一致性問題,需要質(zhì)量監(jiān)測來解決

緊接問題4,開窗是要開的,我們在指標(biāo)所依賴的表的ETL里定義好,算好即可。如果粒度有很多,最粗粒度的指標(biāo)肯定是有多種方式來匯聚出來的。比如,年度收入,可以從小時收入、天收入、周收入、月收入?yún)R總出來。

以終為始來看,咱也不管是咋匯聚的了,咱就只要求:最終出來的結(jié)果是對的,多種方式產(chǎn)出的結(jié)果是一致的(都對?。?。這,就是數(shù)據(jù)質(zhì)量里的準(zhǔn)確性、一致性

以上,感謝閱讀~

專欄作家

Lee,公眾號:數(shù)據(jù)產(chǎn)品小lee,人人都是產(chǎn)品經(jīng)理專欄作家。關(guān)注直播、短視頻和文娛領(lǐng)域、擅長數(shù)據(jù)架構(gòu)、CDP及數(shù)據(jù)治理相關(guān)工作。

本文原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)許可,禁止轉(zhuǎn)載

題圖來自 Unsplash,基于 CC0 協(xié)議

該文觀點僅代表作者本人,人人都是產(chǎn)品經(jīng)理平臺僅提供信息存儲空間服務(wù)。

更多精彩內(nèi)容,請關(guān)注人人都是產(chǎn)品經(jīng)理微信公眾號或下載App
評論
評論請登錄
  1. 目前還沒評論,等你發(fā)揮!