文章一如既往比較長(cháng),可以先收藏后面慢慢看。也可以直接拉到文末掃碼領(lǐng)取福利哦!
近兩年來(lái),Modern Data Stack 越來(lái)越成為了一個(gè)熱門(mén)的技術(shù)話(huà)題。越來(lái)越多的企業(yè)組織在完成了信息化,在線(xiàn)化轉型后,都把數據智能化作為下一個(gè)戰略目標,出現了“數據是新的石油”的說(shuō)法。
于是一方面,大數據的浪潮席卷而來(lái),每家公司都在致力于收集更多的數據,推動(dòng)了 Hadoop,數據湖等技術(shù)的興起。另一方面,AI 成了從海量數據中獲取業(yè)務(wù)價(jià)值的“煉金術(shù)”,幾乎每家公司都在不遺余力的投入各種 AI 項目的嘗試與探索。
但經(jīng)過(guò)幾年的實(shí)踐,現實(shí)給我們上了很好的一課,大家越來(lái)越發(fā)現光有更多的數據并不一定代表更好的業(yè)務(wù)產(chǎn)出,現有的算法也很難在混亂的數據中挖到業(yè)務(wù)洞見(jiàn)。于是 Modern Data Stack 應運而生,其主要目的就是圍繞數據與業(yè)務(wù)決策打造一個(gè)更好的基礎設施,來(lái)提升數據的產(chǎn)出價(jià)值。這背后的驅動(dòng)因素主要來(lái)自?xún)煞矫妫?/span>
這兩個(gè)因素推動(dòng)了我們的 Data Stack 從早年的傳統數倉,再到 2010 年前后開(kāi)始出現的數據湖,再到現在的云原生數據平臺的演化過(guò)程。
傳統數據棧的典型架構就是“數據源 -> ETL 工具 -> 數據倉庫 -> BI 軟件”這幾個(gè)步驟。這里面最大的瓶頸來(lái)自于數據倉庫,從一開(kāi)始并沒(méi)有區分 OLTP 和 OLAP,到后來(lái)逐漸有了 MPP 架構,都是為了去提升數據分析消費場(chǎng)景下的數倉服務(wù)性能與可擴展性??傮w來(lái)說(shuō)當時(shí)數倉都是價(jià)格昂貴的商業(yè)系統,使用門(mén)檻較高。為了更好地實(shí)現數據分析消費,我們不得不在數倉的輸入和輸出兩端做各種優(yōu)化,例如通過(guò)復雜的 ETL,將數據預先做篩選清洗,并聚合到較高的維度,避免出現超大的數據量。在 BI 軟件層面,也做了很多查詢(xún)優(yōu)化,緩存,二次計算,Cube 等方面的技術(shù)創(chuàng )新,使得系統整體能服務(wù)更多的用戶(hù)的復雜查詢(xún)和并發(fā)操作。
在 2010 年左右大數據技術(shù)開(kāi)始興起,但當時(shí)的 SQL-on-Hadoop 技術(shù)主要還是應用在 ETL 這種批處理操作中,并沒(méi)有對實(shí)時(shí)交互分析產(chǎn)生多大的影響。當時(shí)還出現了知名的 Lambda 架構等,其中也仍然需要數據倉庫層對外提供分析服務(wù)。
2016 年開(kāi)始逐漸火熱的云原生浪潮帶來(lái)了不少新的思路,其中一個(gè)很重要的想法就是做“拆分”,出現了存儲和計算兩個(gè)模塊分離的云數倉,使得其擴展能力得到了極大的提升,并且成本方面也能控制的比較好。傳統 ETL 對于數據應用造成的一個(gè)最大困難就在于我需要提前設計好分析消費時(shí)需要的表結構,一旦后續出現變更,需要消耗巨大的時(shí)間和成本來(lái)重新執行 ETL,甚至可能原先的數據都不存在了。有了幾乎可以“無(wú)限擴展”的云數倉,我們可以把 ETL 也拆分了,其中 EL 兩步主要做數據的“復制”,把所有可用信息都導入到云數倉中,后續再根據需求靈活的執行 T 就可以。

這個(gè)“拆分”還在不斷自我增強,計算和存儲拆開(kāi)了,EL 和 T 拆開(kāi)了,那么調度自然也需要單獨一個(gè)模塊來(lái)跨組件統籌,元數據分散在各個(gè)系統也不行,于是數據管控,可觀(guān)測性也都拆了出來(lái)。這跟微服務(wù)興起后,服務(wù)發(fā)現,消息系統,可觀(guān)測性等都有了自然的需求是類(lèi)似的,我們也可以把 DevOps 中的很多概念對應到 DataOps 上。于是現在,現代數據棧的全景圖就變成了下面這個(gè)模樣:

也難怪要叫現代數據“?!绷?。
相比于數倉和數據湖平臺,Modern Data Stack 以云數據庫為中心,引發(fā)了一系列的產(chǎn)品技術(shù)的變化,進(jìn)而影響到了企業(yè)組織,業(yè)務(wù)流程的改進(jìn)優(yōu)化,形成了新一代平臺的特點(diǎn)與優(yōu)勢,包括:
后面我們會(huì )針對這些特性做進(jìn)一步的展開(kāi)分析。
在之前的 聊聊云原生數據平臺[1] 一文中,我們已經(jīng)詳細介紹過(guò) Modern Data Stack 的典型架構,其中主要包括以下幾個(gè)部分:

今天我們的主題會(huì )圍繞著(zhù)數據分析與消費這個(gè)方向來(lái)展開(kāi)。
數據分析與消費是整個(gè) Data Stack 中面向用戶(hù)量最廣的一個(gè)環(huán)節,也是讓數據最終產(chǎn)生業(yè)務(wù)價(jià)值的“門(mén)戶(hù)”,影響了整體技術(shù)棧的演進(jìn)。延續前面提到的 Modern Data Stack 特性,我們來(lái)看下針對分析領(lǐng)域出現的趨勢。
對于用戶(hù)來(lái)說(shuō),最顯著(zhù)的變化來(lái)自于數據分析的流程從 IT 為中心轉向了以業(yè)務(wù)為中心。例如傳統數據分析產(chǎn)品的典型流程如下:
從這個(gè)過(guò)程中,可以看出很多問(wèn)題:
這幾個(gè)因素疊加,讓傳統的數據消費變得非常低效,容易出錯,相關(guān)項目的 ROI 較低甚至很容易回退到拋開(kāi)數據憑經(jīng)驗決策的舊方法上去。
理想中的現代數據分析流程如下:
怎么樣,是不是感覺(jué)好了很多!
為了實(shí)現這個(gè)理想的分析流程,也就給 Modern Data Stack 中的數據分析部分提出了很多挑戰。很多現代 BI 軟件的發(fā)展趨勢都順應了這些挑戰:
接下來(lái)我們會(huì )主要從這四個(gè)方面來(lái)詳細闡述現代 BI 產(chǎn)品的演進(jìn)趨勢。
傳統的企業(yè)級軟件棧都是以硬件采購,私有化部署模式為主的。這種方式在啟動(dòng)成本,產(chǎn)品項目的快速交付與迭代,持續的運維開(kāi)銷(xiāo),可擴展性等方面都具有比較大的問(wèn)題。
以數據分析中的 ETL 數據準備為例,一般在業(yè)務(wù)系統更新數據后,每天會(huì )在固定的時(shí)間段觸發(fā)大量的 ETL 計算操作,將業(yè)務(wù)數據載入到分析系統中。這個(gè)時(shí)候就對計算資源提出了非常高的要求,需要采購大量的服務(wù)器資源才能夠滿(mǎn)足。一旦完成了 ETL 操作,整個(gè)系統的負荷又會(huì )很快下降到一個(gè)較低的水平,大量的服務(wù)器資源又處于一個(gè)閑置的狀態(tài),造成浪費。而現代云服務(wù)就能比較好的解決這類(lèi)彈性計算資源的需求問(wèn)題,降低成本。
隨著(zhù)云原生技術(shù)的興起和成熟,越來(lái)越多的企業(yè)都開(kāi)始擁抱“上云”,帶來(lái)了諸多好處:

隨著(zhù)這個(gè)大的發(fā)展趨勢,數據分析軟件也必須符合云原生的架構標準,才能充分享受到這些“技術(shù)紅利”。具體如:
當然云服務(wù)時(shí)代也給企業(yè)帶來(lái)了新的挑戰,尤其是在新應用的部署越來(lái)越方便的今天,如何更好的去管理和優(yōu)化云計算的費用開(kāi)銷(xiāo),成了一個(gè)新的課題。以往碰到一些效率低下的 SQL 查詢(xún),或者沒(méi)有被用戶(hù)使用的 workflow,頂多占用一些已有的硬件資源而已。但在云服務(wù)時(shí)代,一條有問(wèn)題的 Snowflake 查詢(xún),就可能要花掉公司幾百塊錢(qián)。如果這個(gè)查詢(xún)被反復執行,而其產(chǎn)出結果卻沒(méi)人來(lái)消費,那就真的是“燒錢(qián)”了。而且云服務(wù)本身的可選項也越來(lái)越豐富,同一件事情可能有好幾種不同的云服務(wù)和計費方式可以選擇,進(jìn)一步提升了問(wèn)題難度。
另一方面,如何滿(mǎn)足企業(yè)級應用中多租戶(hù),資源隔離以及計算優(yōu)先級等問(wèn)題,即使在云計算時(shí)代也仍然是一個(gè)需要面對的重要課題。
我們觀(guān)遠數據在這塊處在國內比較領(lǐng)先的狀態(tài),從 16 年第一行代碼開(kāi)始就跑在了 K8s 環(huán)境上,很多基礎能力都同時(shí)考慮了私有化部署和公有云服務(wù)對接的兼容性。這幾年更是與很多超頭部企業(yè)一起共建,積累了很多大型公有云,私有云基礎設施深度集成協(xié)作的經(jīng)驗,能夠在上萬(wàn) CPU 的集群上執行復雜的計算調度,服務(wù)整個(gè)企業(yè)多個(gè)事業(yè)部 3 萬(wàn)名以上的活躍數據分析師、決策者用戶(hù)。
在管理云計算開(kāi)銷(xiāo)方面,我們也做了不少創(chuàng )新的實(shí)踐,推出了“云巡檢”功能,與后面提到的數據管控與觀(guān)測能力一起,在保證高質(zhì)量的數據分析應用交付的同時(shí),還能不斷控制降低不必要的計算開(kāi)銷(xiāo),可謂是云時(shí)代的必備核心功能了。
前面有提到,以往的分析軟件以服務(wù) IT 部門(mén)為主,業(yè)務(wù)方發(fā)起需求,由 IT 部門(mén)來(lái)進(jìn)行滿(mǎn)足。所以分析系統以一種被動(dòng)提供服務(wù),響應需求的形式存在,周期長(cháng),效率低?,F代分析軟件的一個(gè)重要趨勢就是將被動(dòng)服務(wù)轉變?yōu)橹鲃?dòng)打造“數據產(chǎn)品”,做更系統和長(cháng)遠的規劃,協(xié)同業(yè)務(wù)部門(mén)一起來(lái)推動(dòng)數據賦能決策。
實(shí)現自助分析的一個(gè)核心觀(guān)念轉變是打造數據產(chǎn)品,而非被動(dòng)響應服務(wù)。那么什么是數據產(chǎn)品呢?
簡(jiǎn)單來(lái)說(shuō),就是通過(guò)提供數據,來(lái)滿(mǎn)足各類(lèi)企業(yè)決策和流程應用的產(chǎn)品。我們在日常生活中其實(shí)也在很多情況下不經(jīng)意間在使用數據產(chǎn)品,例如出門(mén)逛街時(shí)找吃飯的地方,我們就會(huì )打開(kāi)大眾點(diǎn)評應用,上面列出了各種飯店的類(lèi)型,多個(gè)維度的評分,評價(jià)人數,具體的評論信息等數據,我們通過(guò)分析這一系列的數據,最終做出選擇(想象一下如果這個(gè)過(guò)程需要通過(guò) dashboard 來(lái)完成)。這個(gè)過(guò)程與企業(yè)內部的業(yè)務(wù)決策者流程很相似,所以說(shuō)數據產(chǎn)品并不只是復雜的 dashboard 的形態(tài),而需要根據不同的用戶(hù)角色來(lái)進(jìn)行特定的交互設計。例如對于很多業(yè)務(wù)人員來(lái)說(shuō),移動(dòng)端的數據智能應用就更加方便易用,而不是碰到任何的業(yè)務(wù)問(wèn)題都需要打開(kāi)電腦來(lái)做復雜的看板分析。

數據產(chǎn)品的構建需要引入產(chǎn)品設計思維:
需要注意的是數據產(chǎn)品的核心還是在分析型應用,輔助決策和業(yè)務(wù)流程,而不是自研各種 data infra。相反,為了實(shí)現數據產(chǎn)品化,投資于自助式的數據類(lèi)軟件會(huì )是非常有幫助的。他們相當于提供了一個(gè)底層的“數據操作系統”,提供標準的數據收集,存儲,消費能力,幫助企業(yè)的數據團隊能更好的在這之上去構建數據應用產(chǎn)品。
產(chǎn)品思維中很重要的一點(diǎn)是明確目標客戶(hù),我們來(lái)看下數據產(chǎn)品需要服務(wù)的目標用戶(hù)有哪些。一般來(lái)說(shuō),企業(yè)的數據分析決策相關(guān)人員會(huì )分成下圖中的幾類(lèi)角色:

當然這幾個(gè)典型分類(lèi)在不同規模的公司也會(huì )有不同的體現,相對小型的公司可能會(huì )主要分為數據開(kāi)發(fā)者和消費者兩類(lèi),而大型公司可能在這個(gè)基礎上進(jìn)一步細分出數據工程師,BI 工程師,數據運維,數據產(chǎn)品經(jīng)理,數據大使等角色來(lái)。
另外這里只考慮了數據方面的相關(guān)角色,沒(méi)有把軟件開(kāi)發(fā),基礎架構,云服務(wù)運維等方面的角色放進(jìn)來(lái)。如果考慮商業(yè)化問(wèn)題,那么我們還需要關(guān)注企業(yè)管理者角色的思考與決策方式,可能會(huì )對具體的采購行為有較大的影響力。
這幾類(lèi)角色的用戶(hù)數量會(huì )呈現一個(gè)倒三角的分布,例如典型的例子可能是決策者 10000 人,分析師 1000 人,看板開(kāi)發(fā) 300 人,AI 建模 30 人這樣的比例。
為了服務(wù)多種多樣的用戶(hù)群體,就對現代數據分析軟件提出了更高的要求。傳統的 BI 軟件基本上都只能提供可視化,看板的組合,但我們知道對于市場(chǎng)部門(mén)來(lái)說(shuō),體驗最好的肯定是 Google Analytics 這類(lèi)的分析形式;對于門(mén)店店長(cháng)來(lái)說(shuō),通過(guò)移動(dòng)端數據應用來(lái)獲取信息與實(shí)時(shí)分析或許效率更高;而對于數據科學(xué)家,則必須提供靈活的 notebook 支持。因此現代的自助分析軟件就需要提升在數據消費方面的能力,例如支持定制化的可視化,低代碼的數據應用開(kāi)發(fā),各種連接器來(lái)實(shí)現“反向 ETL”,或提供高級探索實(shí)驗所需要的 notebook,SQL IDE 支持等。
除了業(yè)務(wù)用戶(hù),數據產(chǎn)品的“開(kāi)發(fā)者”用戶(hù)群體也同樣重要,我們在下面一節來(lái)展開(kāi)描述。
在產(chǎn)品思維之外,數據產(chǎn)品從技術(shù)角度也給了我們很多不一樣的思考角度。作為軟件工程師,我們應該對敏捷開(kāi)發(fā),持續集成,DevOps 這些工程實(shí)踐都非常熟悉了。而報表、儀表盤(pán)這類(lèi)數據產(chǎn)品的開(kāi)發(fā),目前大都還處在一種非?!霸肌钡臓顟B(tài):
因此新一代的分析軟件都開(kāi)始借鑒很多軟件工程的思想,提出了“Analytics as Software”的新主張。
典型的例子如 dbt,Looker 等產(chǎn)品中,都支持通過(guò)代碼(DSL)來(lái)構建數據處理邏輯和數據模型。使用代碼來(lái)定義看起來(lái)像是提高了使用門(mén)檻,跟自助式分析的初衷相違背,但我認為實(shí)際上并不矛盾。面向數據產(chǎn)品的“開(kāi)發(fā)者”用戶(hù),以及對分析應用的底層構建來(lái)說(shuō),需要有足夠的復雜邏輯表達能力和簡(jiǎn)潔性,代碼是一種非常理想的表達形式。
以代碼為核心邏輯的載體,我們就可以利用上很多軟件工程的最佳實(shí)踐,例如版本控制,Code Review,代碼包復用,自動(dòng)化測試,持續集成發(fā)布,易于自動(dòng)化集成等。在企業(yè)級應用中對數據的需求和重視程度的不斷提升,數據產(chǎn)品項目中涉及到的各種數據源,獲取方式,指標定義,數據處理邏輯等各類(lèi)信息的復雜度已經(jīng)完全不亞于常規的軟件系統了。不借助這些優(yōu)秀的工程實(shí)踐,僅僅靠項目規范把控會(huì )很容易積累起數據產(chǎn)品的技術(shù)債,效率低下且難以持續。例如 dbt 就是一個(gè)非常優(yōu)秀的以代碼為核心的數據轉換框架,這兩年非?;鸨?,風(fēng)頭超過(guò)了很多主打無(wú)代碼的拖拽式 ETL 工具:

除了以代碼為核心,我們還可以將產(chǎn)品的核心能力通過(guò) public API 進(jìn)行開(kāi)放,方便各類(lèi)分析需求與業(yè)務(wù)流程的深度集成串聯(lián),并進(jìn)行持續的監控和運維,不斷優(yōu)化數據產(chǎn)品的性能,效率和用戶(hù)體驗。前面舉了大眾點(diǎn)評的例子,可以想象一下如市場(chǎng)投放,風(fēng)控,客戶(hù)營(yíng)銷(xiāo),供應鏈優(yōu)化等方面,都會(huì )有類(lèi)似的業(yè)務(wù)流程結合數據分析的需求。通過(guò)開(kāi)放 API 的 composable 能力,我們就可以讓分析產(chǎn)品的形態(tài)更加多樣化,更好的滿(mǎn)足用戶(hù)從分析到?jīng)Q策動(dòng)作的全流程。這對于構建 data-driven 的企業(yè)文化來(lái)說(shuō)也是至關(guān)重要的一點(diǎn)。
以代碼為核心,分離了“定義”與“運行”,API 開(kāi)放了底層能力,兩者相結合,我們就可以構建一個(gè)更加開(kāi)放的數據應用生態(tài)平臺,讓更多的分析工程師,社區愛(ài)好者來(lái)貢獻各類(lèi)數據插件與應用,基于統一的數據平臺,打破企業(yè)的數據孤島,覆蓋更多的業(yè)務(wù)領(lǐng)域。想象一下如果 Facebook,Uber 這些軟件如果誕生在現在,可能就會(huì )成為數據平臺上的一個(gè)應用,甚至兩者之間的信息也能做到互通。這種數據應用市場(chǎng)的未來(lái)想象空間是非常巨大的,極有可能顛覆很多現有的企業(yè)級業(yè)務(wù)軟件系統,我們也已經(jīng)觀(guān)察到不少相關(guān)的案例出現。
如果只是以代碼為核心,那么自助式分析的門(mén)檻就會(huì )變得更高。即使面對開(kāi)發(fā)者用戶(hù),我們也需要注意將業(yè)務(wù)邏輯跟執行細節能夠很好的區分開(kāi)來(lái),例如應該把底層技術(shù)細節進(jìn)行隱藏,無(wú)論用的是 OLAP 數據庫還是時(shí)序數據庫,無(wú)論是批處理還是流式處理,用戶(hù)都只需要關(guān)心業(yè)務(wù)的核心邏輯即可,所以數據產(chǎn)品中比較流行的代碼基本都是 DSL 形式,降低學(xué)習門(mén)檻。
而面向業(yè)務(wù)用戶(hù),需要進(jìn)一步隱藏細節,低代碼仍然是一個(gè)重要的產(chǎn)品形態(tài)。在 DSL 的基礎上,構建業(yè)務(wù)用戶(hù)容易理解和使用的低代碼產(chǎn)品,也是非常自然的一步。接下來(lái)主要討論下兩者之間的關(guān)系。
我們日常使用的代碼,大都是經(jīng)過(guò)精心設計的通用語(yǔ)言或領(lǐng)域特定語(yǔ)言(如 SQL),可以類(lèi)比成我們日常使用的漢語(yǔ),具有非常高的靈活性和擴展性,可以表達任何內容。但缺點(diǎn)是有一定的門(mén)檻,就好比大家都認識字,但是寫(xiě)作文的溝通表達能力就可能天差地別。
而低代碼的產(chǎn)品則是在代碼的基礎上做了一層封裝,從技術(shù)角度來(lái)說(shuō)就是只能調用一些相對固定的 API,通過(guò)不同參數,API 的組合來(lái)表達業(yè)務(wù)邏輯。類(lèi)比到日常生活中,可能比較像手勢,或者 emoji 這類(lèi)符號,對自然語(yǔ)言也是做了一定的封裝,好處在于門(mén)檻極低,大家都很容易使用和理解如 ?? 這樣的 emoji。但擴展性和靈活性就會(huì )比較低了,我們很難把一堆 emoji 組成一篇復雜的文章。
值得注意的是,并不是說(shuō)漢語(yǔ)掌握的很好的人就完全不需要 emoji 了,能夠流暢做代碼開(kāi)發(fā)的專(zhuān)業(yè)人員,也完全可以利用低代碼工具來(lái)輔助提升其開(kāi)發(fā)效率,主要是看應用場(chǎng)景是否是高度需要定制化的。例如我們在做數據模型開(kāi)發(fā)時(shí),如果每次微小的修改都需要人工 pull 代碼,checkout 分支,做修改,commit,提 PR,跑測試,review 完成后合并發(fā)布,顯然是很不友好的。所以可以看到像語(yǔ)雀文檔這樣的產(chǎn)品里,就隱含集成了一些版本控制的能力,以無(wú)代碼的方式提升了文檔的開(kāi)發(fā)和運維效率。
從前面的用戶(hù)分層來(lái)看,業(yè)務(wù)決策者和業(yè)務(wù)分析師在面對很多相對固定的場(chǎng)景時(shí),完全可以使用低代碼的方式來(lái)實(shí)現其相關(guān)需求,甚至不需要了解很多底層運作的細節,其易用性和用戶(hù)體驗會(huì )明顯更優(yōu)。即使是分析工程師和數據科學(xué)家,也可以利用低代碼的工具來(lái)輔助提升效率。但在一些定制化程度很高的場(chǎng)景,例如業(yè)務(wù)場(chǎng)景中的 AI 模型開(kāi)發(fā),很可能需要做很多的特殊處理,這時(shí)候如果強行套用低代碼工具,可能反而給自己的工作增加了束縛。這也是為何之前很多拖拽式建模開(kāi)發(fā)工具沒(méi)有得到大規模應用的原因之一。
最后,代碼和低代碼工具應該做到緊密結合,這樣才能讓不同角色的用戶(hù)能夠緊密協(xié)作,且在產(chǎn)品體驗上能夠體現一致性與流暢度。因為代碼的表達能力更強,所以個(gè)人認為核心邏輯的存儲應該以代碼為準,這樣也能同時(shí)享有前面提到的軟件工程實(shí)踐所帶來(lái)的各種優(yōu)越性和便利。通過(guò)低代碼的方式開(kāi)發(fā)的 ETL,流程編排,可視化,機器學(xué)習等邏輯,應該都能直接轉化為代碼來(lái)進(jìn)行存儲,這樣就能同時(shí)享受到兩種方式所帶來(lái)的優(yōu)勢。這方面的一個(gè)優(yōu)秀的例子是 Looker,業(yè)務(wù)用戶(hù)可以用低代碼的方式來(lái)創(chuàng )建可視化:

而這些可視化的背后都自動(dòng)生成了相應的代碼,用戶(hù)完全可以用管理代碼項目的方式來(lái)管理整個(gè)項目,如創(chuàng )建分支,測試,提交 PR,合并發(fā)布等。

沿著(zhù)數據產(chǎn)品的思考邏輯,最后我們再來(lái)看下如何提升分析產(chǎn)品的易用性和用戶(hù)體驗。這對于擴大產(chǎn)品的用戶(hù)滲透率來(lái)說(shuō)是非常關(guān)鍵的一點(diǎn)。近年來(lái)一個(gè)非常重要的趨勢就是通過(guò) AI 的能力,來(lái)輔助用戶(hù)使用數據分析產(chǎn)品,降低門(mén)檻并提升效率。
其中一些典型的場(chǎng)景包括:

以業(yè)務(wù)決策用戶(hù)為例,要做到數據分析與最終的決策結合,比較自然的步驟是先了解發(fā)生了什么,再了解為什么會(huì )發(fā)生這個(gè)變化,最終再給出如何提升的建議。傳統的做法一般是通過(guò)監控發(fā)現問(wèn)題,然后再由業(yè)務(wù)分析師進(jìn)行深入的交互式分析,通過(guò)查看海量的看板,執行不同的篩選條件,下鉆上卷,最終形成一些結論與決策者討論。
增強分析的一個(gè)核心目標就是為了提升這個(gè)流程的效率。當發(fā)現公司的銷(xiāo)售額出現了預期外的波動(dòng)時(shí),可以自動(dòng)進(jìn)行關(guān)鍵因子的分析,找出引起變化的業(yè)務(wù)根源,例如是因為某個(gè)客群的銷(xiāo)售額下降了,再進(jìn)一步實(shí)現客群轉化率,續約率,增購的自動(dòng)建模分析,從幾個(gè)方向上給出操作建議。這三個(gè)步驟可以直接形成一個(gè)圖文并茂的“數據故事”推送給客戶(hù),快速形成感知,理解和決策。

這背后具體的功能點(diǎn)包括:
通過(guò)這些能力,可以大大提升分析應用的實(shí)時(shí)性,分析深度,個(gè)性化場(chǎng)景化的訴求滿(mǎn)足,降低產(chǎn)品使用門(mén)檻,更好的實(shí)現分析與決策建議的結合。用戶(hù)可以把更多的精力放到提出更好的業(yè)務(wù)問(wèn)題和設想上來(lái),而減少在重復性分析工作上的投入開(kāi)銷(xiāo)。
增強分析另外一大方向是擴展數據分析的能力范圍,實(shí)現 operational analytics 支撐業(yè)務(wù)決策。我們會(huì )在后面的決策智能部分再展開(kāi)這部分。
這一節的內容比較多,我們圍繞數據產(chǎn)品這個(gè)中心點(diǎn),闡述了多個(gè)現代自助分析產(chǎn)品所需要具備的核心能力,包括:
國外已經(jīng)有很多產(chǎn)品在這些方面走在了前面,例如這幾年非?;鸬?Looker,Mode,GoodData 等 BI 產(chǎn)品,以及在增強分析領(lǐng)域的先驅 ThoughtSpot,Pyramid 等,有很多值得我們借鑒之處。
我們觀(guān)遠數據在這幾個(gè)方面也有了不少的探索實(shí)踐:
隨著(zhù)自助式數據產(chǎn)品形態(tài)的成熟,接下來(lái)一個(gè)比較明顯的挑戰是應用場(chǎng)景數量的爆炸,大量的用戶(hù)和大量的數據內容兩者自由組合,就會(huì )出現很多管控上的挑戰。一方面自助分析的確給我們帶來(lái)了靈活,敏捷,可以快速滿(mǎn)足業(yè)務(wù)需求,但如果缺乏系統性的管控又會(huì )很快陷入低效和混亂的泥潭之中。
在很多企業(yè)級分析項目中我們都會(huì )看到,相關(guān)的參與者需要耗費 50-80% 的時(shí)間來(lái)處理各種數據問(wèn)題,檢查數據源,核對計算口徑,處理各類(lèi)數據質(zhì)量問(wèn)題。
項目上線(xiàn)運行后,也需要持續保證數據的可靠性,一旦出現沒(méi)有及時(shí)更新,數據質(zhì)量出錯或者服務(wù)不可用等問(wèn)題,都會(huì )影響到公司的日常運作。這也是我們之前提到的數據產(chǎn)品需要有相應的 SLA 的要求,而且數據的不可用(不僅僅是服務(wù)不中斷,而數據質(zhì)量也要得到保證)相比軟件系統來(lái)說(shuō)會(huì )更加的難以發(fā)現和處理。這里一個(gè)典型的指標是“data downtime”,等于出問(wèn)題的次數 * (發(fā)現數據問(wèn)題的耗時(shí) + 解決數據問(wèn)題的耗時(shí))。
如果 data downtime 的指標居高不下,那么很容易進(jìn)入數據混亂,缺乏信任,用戶(hù)各自構建更多的缺乏保障的數據的惡性循環(huán),最終大家會(huì )逐漸拋棄現有系統,回到之前通過(guò) Excel 取數和分析的時(shí)代。這一節我們就來(lái)討論下如何應對這個(gè)挑戰,實(shí)現受管控的自助分析。
當前的很多自助分析產(chǎn)品,大都處于“野蠻生長(cháng)”的狀態(tài)。用戶(hù)可以自由的接入數據,做處理,構建指標,創(chuàng )建可視化分析等,但對于什么是可信的數據源,如何確保指標的一致性和復用,如何持續確??窗鍞祿恼_性,如何找到跟業(yè)務(wù)最相關(guān)的分析內容等問(wèn)題缺乏考慮。很多企業(yè)在這方面的實(shí)踐還處于建設“數據門(mén)戶(hù)”的階段,可以想象一下如果沒(méi)有搜索引擎,回到 internet 早年的“門(mén)戶(hù)時(shí)代”,我們獲取和利用信息的效率肯定是大打折扣的。
在數據處理和計算方面,我們已經(jīng)有了 SQL 標準,但在元數據領(lǐng)域缺乏統一標準,這也是數據管控需要解決的核心問(wèn)題。很多時(shí)候我們可以獲取數據,也可以獲取到 schema 信息,但這份數據是什么時(shí)候更新的,有多少用戶(hù)在使用這份數據,是否通過(guò)了相關(guān)的數據質(zhì)量檢查,企業(yè)統一的指標認證等問(wèn)題,我們都不得而知。數據的上游和下游只管讀取和寫(xiě)入數據,但卻彼此不知道具體的生產(chǎn)和使用情況,想想就是一個(gè)很不可靠的狀態(tài)。
為了解決這個(gè)問(wèn)題,越來(lái)越多的 Modern Data Stack 中,都把數據管控,元數據管理作為一等公民來(lái)看待,出現了非常多的新興產(chǎn)品專(zhuān)門(mén)針對這個(gè)問(wèn)題,如 Data Observability 領(lǐng)域的 Monte Carlo,BigEye,Data Catalog 領(lǐng)域的 Atlan,DataHub 等。接下來(lái)我們對這個(gè)領(lǐng)域做一些簡(jiǎn)單的探索。
由于本身還沒(méi)形成行業(yè)一致的標準,所以在元數據這塊的功能分類(lèi)也是非常模糊,有非常多的名詞,如 catalog,governance,observability,discovery 或者干脆就叫 metadata 等。為了簡(jiǎn)單起見(jiàn),這里我們就分為兩類(lèi):

下面來(lái)看下具體的元數據類(lèi)型,具體的分類(lèi)方法有很多,我們這里參考的是 DevOps 中對軟件系統 observability 的分解,分別是 metric,trace 和 log。我們的產(chǎn)品中應該支持用戶(hù)或者系統自動(dòng)的生成,記錄和更新這些版本化的信息,并提供統一的對外服務(wù)標準接口,且這些能力需要與整個(gè) Data Stack 中的各類(lèi)組件進(jìn)行很好的結合,具備數據產(chǎn)品的可編程、可組合能力。
包含了各種數據的屬性信息,很多也屬于“數據質(zhì)量”的范疇,如:
顧名思義,血緣關(guān)系主要指的是數據之間的依賴(lài)信息,包括數據表,字段,算法模型以及分析應用等。
數據與生產(chǎn)消費者間的交互關(guān)系,包括:
涉及業(yè)務(wù)的各類(lèi)信息,如擁有者,所屬組織,訪(fǎng)問(wèn)權限,業(yè)務(wù)定義與說(shuō)明等。
關(guān)于元數據系統的設計可以參考我們之前云原生數據平臺一文中的內容。有了這些元數據的系統性記錄和相應的查詢(xún)服務(wù),我們可以用于各種應用。而且在元數據積累的量達到一定規模后,我們還有機會(huì )利用元數據做各類(lèi)更加智能化的產(chǎn)品功能,如自動(dòng)數據異常探測,修復建議,更智能的數據發(fā)現等。
對數據的訪(fǎng)問(wèn)權限,數據安全,合規,一致性與可信度等方面提供支持。
有了合理的管控,我們能夠形成更加清晰、一致的數據架構,減少不必要的復雜依賴(lài)。當上游數據發(fā)生變更時(shí),也能及時(shí)通知下游,避免出現數據誤用或其它的質(zhì)量問(wèn)題。當然最重要的是,通過(guò)數據管控來(lái)實(shí)現安全與合規方面的要求。尤其在合規方面,大數據架構設計之初并沒(méi)有很好地考慮用戶(hù)可能有刪除個(gè)人數據的訴求,這方面對于數據湖倉及后續數據轉換方面的工作都提出了很大的挑戰。
在數據產(chǎn)品開(kāi)發(fā)過(guò)程中,能讓用戶(hù)更加完整,深入的了解數據相關(guān)信息,來(lái)判斷應該使用什么數據集。典型的信息包括:
在數據發(fā)現服務(wù)過(guò)程中,如何設計高效且智能的搜索系統,綜合相關(guān)性,熱門(mén)程度對結果進(jìn)行排序展示等都是非常重要的話(huà)題。
最后,在數據被使用起來(lái)之后,我們需要持續關(guān)注數據的可觀(guān)測性。相比于軟件系統,數據內容非常容易出現“靜默失敗”的情況,雖然報表還能展示,模型也能正常輸出預測,但其實(shí)里面所使用的數據可能已經(jīng)有了很多問(wèn)題。如果你也是一名數據從業(yè)者,肯定碰到過(guò)類(lèi)似的情況:突然有一天用戶(hù)說(shuō)數據好像看起來(lái)不對,然后經(jīng)過(guò)了幾個(gè)小時(shí)甚至幾天的排查,終于找到了問(wèn)題所在,然后還發(fā)現有個(gè)處理邏輯已經(jīng)持續錯了幾周甚至幾個(gè)月了。
可觀(guān)測性主要就是為了解決此類(lèi)“data downtime”的問(wèn)題,主要包括幾個(gè)步驟:

以算法自動(dòng)決策類(lèi)項目為例,構建相關(guān)的數據完整性,質(zhì)量檢查,數據分布漂移檢查,對于項目的持續運維來(lái)說(shuō)是至關(guān)重要的。如果發(fā)現了上游數據出現了巨大的數據分布變化,我們就應該及時(shí)停止下游預測輸出流程的執行,并告警通知用戶(hù),避免產(chǎn)出錯誤的決策建議,影響業(yè)務(wù)正常運作。另外也需要持續進(jìn)行決策效果的追蹤和半自動(dòng)化的誤差分析,不斷完善整個(gè)數據流程中重要部分的可觀(guān)測性。

傳統架構中,元數據經(jīng)常分散在各個(gè)組件中,例如數據庫,ETL 工具,BI 等。有了統一管理的元數據中心,就可以提供給 Data Stack 中的各種組件進(jìn)行綜合性應用:
把元數據的話(huà)題延展到自助分析與決策方面,除了數據集,對于分析資產(chǎn)的元數據管理也非常重要,市面上也有類(lèi)似的產(chǎn)品支持:
觀(guān)遠在服務(wù)了多家月活分析師數量上千的企業(yè)后,也遇到了很多分析資產(chǎn)管控,數據可靠性,安全等方面的挑戰,并開(kāi)發(fā)了若干產(chǎn)品進(jìn)行應對:
觀(guān)遠對于自身使命的定義是“讓業(yè)務(wù)用起來(lái),讓決策更智能”。前半句對應的是前面提到的數據產(chǎn)品以業(yè)務(wù)為核心,提供自助化服務(wù),不斷提升用戶(hù)體驗。而后半句對應的就是通過(guò)產(chǎn)品來(lái)不斷提升不同角色的分析能力,邁向決策智能。
在完成了基礎架構,產(chǎn)品體驗,自助式分析的有效管控幾方面的基礎夯實(shí)之后,企業(yè)的數據分析成熟度自然就會(huì )開(kāi)始逐漸上升,從現狀分析,到原因診斷,再到未來(lái)預測,最終到達輔助決策智能的處方建議。尤其是后面兩點(diǎn),需要深度結合 AI 能力來(lái)進(jìn)行賦能,實(shí)現數據驅動(dòng)的高質(zhì)量決策。

從另一個(gè)角度看,邁向決策智能也不僅僅是分析能力的提升,還有一個(gè)重要的考量是要解決“最后一公里”問(wèn)題,實(shí)現由數據驅動(dòng)的業(yè)務(wù)流程。這個(gè)方向上也有很多相關(guān)的產(chǎn)品能力設計,如實(shí)時(shí)數據分析,開(kāi)放 API,嵌入式分析(js,iframe),以及近兩年很火的“反向 ETL”。

這幾類(lèi)決策智能的典型場(chǎng)景包括:

從上面的場(chǎng)景舉例可以看到,很多決策的最終形成都是在“業(yè)務(wù)系統”中的,那么是否意味著(zhù)在業(yè)務(wù)系統中去構建數據分析能力也就足夠了呢?這也是我們經(jīng)??吹胶芏嗫蛻?hù)會(huì )直接使用例如 ERP,CRM 系統或者“生意參謀”這類(lèi)產(chǎn)品中的數據分析模塊,而沒(méi)有另外構建所謂的“數據產(chǎn)品”。這種做法在企業(yè)發(fā)展的某些階段或許是適用的,但從長(cháng)期來(lái)說(shuō),單一系統內能夠獲取到的信息是相對有限的,在進(jìn)行電商營(yíng)銷(xiāo)類(lèi)決策時(shí),我們也需要引入生產(chǎn),物流,倉儲,供應商管理,財務(wù),人力資源等等方面的信息輔助,否則就容易在數據孤島狀態(tài)下做出一些“局部最優(yōu)”的決策。利用數據平臺加上決策應用產(chǎn)品的設計思路,能夠減少很多重復建設的工作,并且保證決策信息輸入的完整和一致性。
為了實(shí)現決策智能,現代數據產(chǎn)品也需要配備相應的關(guān)鍵功能點(diǎn):
在決策智能方向,觀(guān)遠從成立之初就一直倡導 BI + AI 結合的產(chǎn)品形態(tài),提供了豐富的產(chǎn)品功能支持,也在很多 500 強頭部企業(yè)實(shí)現了項目落地。例如:
前面我們從產(chǎn)品技術(shù)趨勢和企業(yè)分析成熟度兩條線(xiàn)穿插介紹了關(guān)于 Modern Data Stack 中的自助分析與決策產(chǎn)品的一些思考,如果把演進(jìn)時(shí)間線(xiàn)加上,大概是如下的形態(tài):

不同的企業(yè)在不同的階段可以根據這個(gè)思路來(lái)設計自己的產(chǎn)品技術(shù)棧和相應的數據產(chǎn)品用戶(hù)群體和應用范圍?!禩he Self-Service Data Roadmap》一書(shū)中還給出了很具有實(shí)操性的計分卡和相關(guān)提升手段,來(lái)幫助評估企業(yè)當前的數據自助服務(wù)能力水平,并設計相應的 roadmap。

從實(shí)現數據賦能決策的最終目標出發(fā)來(lái)看,好的產(chǎn)品技術(shù)肯定是其中的重要一環(huán)。如果你對于如何做代表未來(lái)的企業(yè)級 BI 產(chǎn)品選型有興趣,歡迎領(lǐng)取下載由我們觀(guān)遠出品的 企業(yè)級 BI 平臺白皮書(shū)[4]。據說(shuō)企業(yè)級移動(dòng) BI 白皮書(shū)也已經(jīng)在路上了,值得期待一下。
有了好的產(chǎn)品,如何做系統架構的遷移,如何設計企業(yè)的數據應用流程,如何做數據產(chǎn)品的用戶(hù)推廣,打造配套的組織和文化,也都是需要考慮的重要問(wèn)題。以后有機會(huì )也可以請觀(guān)遠的解決方案與客戶(hù)成功團隊就這些話(huà)題做一些經(jīng)驗分享。
聊聊云原生數據平臺: https://zhuanlan.zhihu.com/p/533974251
[2]MLOps 的文章: https://zhuanlan.zhihu.com/p/357897337
[3]關(guān)于 AutoML 的介紹文章: https://zhuanlan.zhihu.com/p/378722852
[4]企業(yè)級 BI 平臺白皮書(shū): https://app.jingsocial.com/microFrontend/leadGeneration/jsf-leads/list/contentMarketing/n4Ushm9YKwhDBknDUcPDwc/tEPcmPNVkY5ah7vmJZtsoj
聯(lián)系客服