火山引擎數據飛輪實踐:在電商場景中,如何建設全鏈路數據血緣?

數據作為新型生產要素,正支撐企業的數智化轉型。但企業數字化建設也存在管理成本高、數據產品使用門檻高、數據資產價值不夠的問題,其原因在于業務和數據之間沒有形成雙向良性驅動。

結合新時代企業數字化轉型需求,火山引擎基于字節跳動十余年數據驅動的實踐經驗,對外發布企業數智化升級新范式“數據飛輪”,幫助企業實現數據驅動。

具體來說,數據消費是數據飛輪的核心,通過一個又一個具體業務中的數據消費,在上層“業務應用輪”實現決策科學、行動敏捷,帶來業務價值提升;在下層“數據資產輪”,也通過頻繁的數據消費和業務收益,有的放矢建設高質量、低成本的數據資產,更好支撐業務應用。

構建扎實的數據資產輪能更好支撐企業上層數據應用。那么,在企業實踐中,究竟應該如何做呢?

作為數據資產輪的支撐產品之一,火山引擎DataLeap在資產建設治理層面,能提升數據質量,實現效率提升和成本優化。本文將從電商角度出發,聚焦在數據血緣建設層面,具體介紹如何建設血緣底座、電商場景的血緣應用實踐。

數據全鏈路血緣介紹

在電商場景中,我們建設數據全鏈路血緣的核心目的,是對數據從源頭到終端全過程進行追蹤和管理。


以零售行業舉例,數據包括商品數據、物流信息、用戶反饋等,其全流程包括:

  • 通過數據采集,如業務日志、埋點、表格、存儲;

  • 經過ETL數據加工,包括離線和實時兩種任務;

  • 再到數據服務中的物理表、邏輯表,以及服務編排;

  • 最后透傳到數據應用,比如接口、頁面、報表、指標等。

在業務發展過程中,我們常常會遇到如下問題:

首先,隨著業務的快速發展,數據不斷膨脹。數據量到大,但數據產生的實際價值在哪里?數據血緣則可以幫助我們更好評估數據價值,并在滿足業務需求的同時,控制存儲計算資源的膨脹速度。與此同時,數據血緣還能夠衡量數倉建設的優劣,并且做好數倉體系化建設。

第二,如何做好數倉變更監控?在數倉的日常開發過程中,我們經常會遇到上下游變更,變更后希望能及時、準確地衡量數據變更的影響。由于數據來源變更豐富,需要通過數據血緣將數據變更及時通知下游關聯方。

第三,數倉研發提效。我們希望通過數據血緣及時完成表重構,理清字段的來源以及加工口徑,并且進行任務精準回溯。

最后,通過數據血緣助力指標體系化建設,保證指標一致性,避免重復開發。在指標體系化建設中,數據血緣可以幫助將新增的指標綁定到已有的指標上。

解決數據不斷膨脹的問題

針對數據膨脹的問題,數據血緣可以明確數據流轉路徑,優化資源配置。血緣關系可以精確衡量數倉對業務的價值,實現數據治理,控制資源膨脹,并且能夠精準地完成影響面評估。

幫助數倉開發提效

隨著業務發展,我們經常面臨模型重構的問題,比如一些舊表要切換到新表。數據血緣分析可以幫助我們快速定位模型重構的切入點,提升數據處理的效率。基于算子級的血緣關系,數據血緣可以實現任務的精準回溯優化,減少數據修復流程時間,減少錯誤傳播。

保障數據一致性

在數據一致性方面,通過全鏈路血緣等手段,我們實現了指標從定義到生產消費的完整自動化流程,提升了指標的管理效率,減少了人為失誤。通過血緣分析加解析能力,我們能識別出重復加工的字段,優化數據流程,從而減少不必要的資源消耗。

如何構建數據血緣底座

血緣底座是全鏈路數據血緣的基石。接下來,我將從整體架構、質量評估體系和應用層血緣三個方面來介紹血緣底座的建設。

整體架構

整體架構-關系圖譜

如上圖所示,關系圖譜中有一些關鍵特點,如點、邊、節點存儲和邊存儲等。

  • 點(Node):代表各種類型的節點,如指標、任務等

  • 邊(Edge):表示節點之間的血緣關系,如數據流向、任務依賴等

  • 節點存儲:每個節點類型對應一個或多個圖中的點

  • 邊存儲:節點間的血緣關系通過邊來表示,邊包含方向和類型信息

一般數倉加工鏈路會進行分層,如ODS貼源層、DWD明細層、DWS匯總層等,最終透傳到數據產品的前端頁面。

如果用傳統的離線數倉來實現以上架構,且有明確關系的表模型,是非常困難的。最終,我們選擇了字節自研圖數據庫來實現血緣數據的底層存儲。

血緣質量度量體系

血緣質量是整個全鏈路血緣從應用到實踐的最核心評測標準。

舉個例子,如果某個業務要基于字段級的血緣回溯下游,但是由于血緣質量不達標,預期要回溯10個任務,最終查出來11個或者9個,出現一定誤差。

在電商場景中,我們搭建了一套完整的血緣質量度量體系,從血緣解析的準確率、成功率、覆蓋率、查詢能力等維度來度量血緣的數據質量,評估血緣質量的健康程度,并且定期自動化檢驗血緣數據與實際數據流向的一致性。我們通過定期巡檢機制發現bad case,并隨之更新、迭代對應的血緣模塊。

應用層血緣

應用層調度鏈路

應用層數據采集方案

應用層血緣,與常規理解的數倉鏈路血緣不同。

對于數據鏈路血緣來說,我們針對異構數據源的SQL進行解析,在數據平臺上維護了很多豐富的元數據,可以更好解析數倉之間的鏈路關系。但是對于應用層則不同,在電商場景中,我們維護了很多數據應用,如果逐一推進應用接入全鏈路血緣能力,成本很高。數據流轉是從產品頁面經過HTTP或者thrift接口請求后端服務,經過數據服務層打到數倉底表。

右圖將該過程劃分層級,通過低代碼平臺搭建前端頁面、業務產品頁面、數據產品頁面,再通過接口的形式請求后端服務,最終映射到在one service上,形成對應的API,其底層就是剛才提到的數倉鏈路的血緣。

為了解決業務應用接入成本高的問題,我們實現了網關層自動參數上報,通過日志平臺以及網關平臺、服務平臺間的合作,在前端請求接口時會自動上報URL refer參數,再通過日志采集系統把所有前端請求的日志采集下來,經過清洗,最終實現應用程序血緣的數據采集。

但在整個過程中,我們會遇到爬蟲亂傳參數、不傳參數等問題,對血緣質量造成污染。為了解決該問題,我們通過腳本對域內的爬蟲進行補全。通過自定義爬蟲腳本,對全域的前端接口進行抓包,替換外部污染的數據。

電商場景的血緣應用實踐

接下來重點介紹一下血緣應用在電商場景的實踐,包含新舊表切換、字段口徑探查、指標自動化拆解三個部分。

新舊表切換

開發人員使用IDE修改一個方法時,會改方法名、方法的入參以及方法的出參,IDE則提供代碼級的替換能力。

而對于數倉研發人員來說,沒有類似的能力可以做切換的操作。一般在重構中,數倉研發人員拿到要切換的表,通過人工查詢,獲取切換舊表影響的任務,進而手動拉群,做切換表的通知,下游的接收人收到消息后,更改任務代碼,并進行數據比對,如果發現有問題需要再與上游進行溝通,如果沒有問題則上線代碼。

基于一站式新舊表切換功能,上述人工操作可以由平臺自動完成,大幅降低了切換的工作量,提高了工作效率和質量。

通過平臺能力,數倉研發人員只需要在系統中錄入舊表信息,以及新舊表的映射關系,就可以自動生成切換后的代碼。在生成代碼、跑數之后,平臺還支持與舊表的歷史數據進行比對。對比結果無誤的情況下,下游無需做任何調整。除此之外,平臺還提供了批量切換的能力,可以同時進行多張表的切換。

對于下游切換者來說,原本由于切換收益不大,導致操作意愿不強。但現在通過平臺提供的切換收益量化的能力,如SLA和穩定性提升,提升下游切換意愿。

下面介紹技術實現。用戶輸入需要切換的舊表之后,平臺通過舊表的產出任務進行解析,獲取語法樹文件,并基于語法樹文件做裁剪、替換。基于用戶輸入的新舊表映射關系生成切換后的SQL,再提交到比對平臺,最終完成整體比對。

在這一過程中,用戶不希望原生代碼遭到太多破壞,如注釋被溶解,或對一些寫法造成影響。針對這種情況,我們會在SQL解析前把注釋的關鍵信息保留下來,拿到比對完成的SQL之后再做補全,最終把原始任務的SQL盡可能相似地提供出來。

字段口徑探查

作為一名數倉研發人員或BI分析師,經常需要閱讀其他人代碼,如果代碼復雜度高,對讀碼的專業性要求會比較高。為解決這個問題,平臺提供可視化頁面輔助轉譯。

如上圖中的例子,將一段SQL轉譯成圖的形式,可以更好幫助不寫代碼的角色更好理解這段SQL。

在大多數使用場景中,用戶只想看到某個字段,或者某幾個字段在任務中的加工邏輯。平臺能力實現了在任務中裁剪出所需字段加工邏輯的能力,最終裁剪掉超90%的無關代碼。原本需要從100行代碼中提取出來某個字段的加工口徑,現在借助平臺能力,只需要閱讀幾行代碼就可以完成需求。

此外,我們希望將整個數倉鏈路中分層維護的SQL進行溶解。

一個傳統數倉鏈路有ODS層、DWD層、DWM層、APP層等等,每層都會維護一段SQL。用戶需要梳理APP層的SQL里面的某個字段從ODS層哪里來的,過程比較復雜。

基于平臺的能力,我們把4個任務的SQL先展開成一段大SQL,再進行內斂,最終變成從ODS層溯源到APP層的字段。平臺內斂之后進行裁剪。代碼的展開和收斂,是通過自研的一套語義解析引擎實現,該引擎已經申請了專利。

核心步驟如下:

  • 第一步,對SQL算子進行優化,平臺功能必須對算子級別SQL進行裁剪;

  • 第二步,語法糖溶解,一段SQL要不斷內斂,基于血緣關系找到上游表,放到替換掉這個實際的物理表名稱中,在這個過程中,就會涉及到很多語法糖的溶解,在傳統離線數倉里命名很多臨時表,平臺會進行完整的語法糖溶解;

  • 第三步,基于此加上算子重寫,獲取關系代數,最終unparse成一段SQL返回給用戶。

指標自動化拆解

左圖是傳統數據指標體系化建設架構,包含配置信息、原子指標、度量、時間周期、修飾詞等。每個指標種類不一樣,衍生指標來源于原子指標,復合指標來源于衍生指標。

指標體系化建設的核心目的就是保證指標的一致性,避免指標重復建設。

在電商場景中,我們早期推進指標體系化建設有一個核心的步驟——指標拆解,即把字段關聯到錄入好的配置信息里面。如果發現綁定已有的衍生指標,則避免了重復建設的工作。

在該過程中,通過進行用戶調研,我們發現,在做拆解的過程中,用戶有幾個核心環節,如通過字段口徑了解字段真實的來源鏈路,同時還要看字段整體的加工邏輯,再人工用該SQL做拆解工作。最后,用戶在指標平臺里面維護好元信息。應用層的指標開發完成之后,再去評審最終拆解結果的質量。

指標自動化拆解-技術實現

上圖為指標自動化拆解-技術實現過程。

第一,工程能力。工程能力底層是字段口徑探查的能力,將應用層的指標透傳到明細數據層表,同時平臺進行單指標粒度的裁剪,裁剪完成之后拿到字段應該綁定的DWD表,最終內斂到DWD表的極簡SQL,過程中不需要人為查詢代碼完成邏輯梳理。

第二,底層數據能力。關鍵是必須維護好高質量的元數據。在電商場景中,我們維護了萬級別的指標關系,在指標關系中再維護類似于業務過程度量的SQL邏輯,如where條件。

第三,大模型的能力。基于大模型能力,我們結合裁剪之后的SQL、待選SQL完成召回。裁剪之后的SQL,基于元數據及大模型能力,與規則方法論進行匹配,最終把標的元素判斷出來。也就是說,研發人員只需要輸入新開發的表,就可以知道該表是否存在重復開發的問題。

判斷過程:根據拆解過程找到對應SQL,原子指標、修飾詞、時間周期三個元素生成衍生指標,該衍生指標如果存在,就是存在重復開發,如果不存在,則可以在系統里綁定,供給數據應用使用。

總結與展望

數據血緣底座是提升數據管理效率和數據質量的關鍵。我們希望能不斷提升全鏈路數據血緣的能力,在上文提到的新舊表切換、數倉價值評估、指標拆解等場景中,更好結合大模型等能力優化功能和用戶體驗,為業務提供更多價值。以上就是本次分享的內容,謝謝大家。

點擊跳轉火山引擎DataLeap了解詳情

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/40517.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/40517.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/40517.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

IC燒錄員-帶著工程師的夢想遠航!

如果說軟件工程師是代碼程序的創造者,那么IC燒錄員就是把工程師們辛苦敲代碼,日夜辛勞的成果燒錄到芯片里面的實踐者,是他們,讓工程師們的夢想運用到實踐中,是他們帶著工程師的夢想遠航,他們的薪酬或許沒有…

第一節-k8s架構圖

一個Deployment,可以由多個不同Node下的Pod組成,每個Pod又由多個Container組成。 區分Deployment是用Labels(key:value),區分Pod是用PodName,區分Container是用ContainerName。 一個Node可以包含多個不同Deployment中的pod&…

MySQL-作業1

一、數據庫 1、登陸數據庫 2、創建數據庫zoo 3、修改數據庫zoo字符集為gbk 4、選擇當前數據庫為zoo 5、查看創建數據庫zoo信息 6、刪除數據庫zoo 二、創建表 1、創建一個名稱為db_system的數據庫 2、在該數據庫下創建兩張表,具體要求如下: 員工表 user …

米國政府呼吁拋棄 C 和 C++

在開始前剛好我有一些資料,是我根據網友給的問題精心整理了一份「C的資料從專業入門到高級教程」, 點個關注在評論區回復“888”之后私信回復“888”,全部無償共享給大家!!! 很多觀點認為C 或 C永遠不可被…

頁面集成技術方案匯總

1.window.open() 優點: 新開窗口或標簽頁展示內容:允許在新的瀏覽器窗口或標簽頁中打開指定的URL,適用于需要獨立頁面交互的場景。隔離性:新窗口擁有獨立的執行環境,不會干擾主頁面的JavaScript上下文和DOM結構。易于實現&#…

聚鼎裝飾畫:裝飾畫生意現在做晚嗎

在這個充滿機遇與挑戰的時代,涉足裝飾畫領域是否為時已晚?許多人心中或許有著這樣的疑問。事實上,盡管市場上的競爭者眾多,但正如“朝霞映滿天,別樣紅”一般,每個行業的黃金時期都有所不同,關鍵在于我們能…

設計模式-裝飾器

裝飾器模式是一種結構型設計模式,它允許在運行時擴展一個對象的功能,而不需要改變其現有結構。這種模式的核心思想是通過創建一個裝飾器來動態地增強或修改原有對象的行為。裝飾器模式是繼承的一個補充,提供了比繼承更加靈活的方式來擴展對象…

在線JSON可視化工具--改進

先前發布了JSON格式化可視化在線工具,提供圖形化界面顯示結構關系功能,并提供JSON快速格式化、JSON壓縮、快捷復制、下載導出、對存在語法錯誤的地方能明確顯示,而且還支持全屏,極大擴大視野區域。 在線JSON格式化可視化工具 但…

Cannot load configuration class: com.xxx.NacosConfigApplication

Cannot load configuration class: com.xxx.NacosConfigApplication 無法啟動成功 表象錯誤的日志信息解決方案結言 表象 最簡單的Spring Boot maven 配置 properties配置 啟動類,但是,就是無法啟動成功。 錯誤的日志信息 java.lang.IllegalStateEx…

Java面試題系列 - 第1天

題目:解釋Java中的垃圾回收機制(GC)并描述至少兩種不同的垃圾回收算法。 背景說明:Java的垃圾回收機制是其自動內存管理的關鍵特性之一,它自動追蹤并回收不再使用的對象所占用的內存空間,從而避免了手動管…

硅紀元AI應用推薦 | 國產創作引擎即夢AI助力創作者探索創作新境界

“硅紀元AI應用推薦”欄目,為您精選最新、最實用的人工智能應用,無論您是AI發燒友還是新手,都能在這里找到提升生活和工作的利器。與我們一起探索AI的無限可能,開啟智慧新時代! 在人工智能快速發展的今天,各…

怎么還有人分不清路由器、交換機、光貓、WiFi……你真的都了解嗎?

號主:老楊丨11年資深網絡工程師,更多網工提升干貨,請關注公眾號:網絡工程師俱樂部 下午好,我的網工朋友。 講某個具體技術,說不定你頭頭是道,但關于路由器、交換機、光貓、WiFi的知識細節&…

自然語言處理領域介紹及其發展歷史

自然語言處理領域介紹及其發展歷史 1 NLP2 主要任務3 主要的方法1 基于規則的方法(1950-1980)2 基于統計的方法(傳統的機器學習的方法)3 Connectionist approach(Neural networks) 1 NLP 自動的理解人類語…

新能源組合灶,一灶兩用(電燃灶+電陶爐),電生明火,無需燃料

在科技日新月異的今天,廚房電器的創新不斷為我們的生活帶來便捷與驚喜。華火新能源電燃灶,以其獨特的設計和卓越的性能,成為未來廚房的首選,為您打造全新的烹飪體驗。 中國人的烹飪文化源遠流長,講究火候的掌控和明火烹…

Android系統system.exit(10);里面10代表的涵義,以及其他可以賦值數字可以是多少?

在Android系統中,System.exit(int status) 方法是Java語言提供的,用于終止當前正在運行的Java虛擬機(JVM)。在Android應用開發中,這個方法的使用并不常見,也不推薦,因為Android應用通常是通過其…

PHP電商系統開發指南高級技巧

開發高級 php 電商系統所需的技巧包括:數據庫優化:使用索引、規范化數據結構和緩存機制。性能優化:啟用頁面緩存、優化圖像和使用 cdn。購物車管理:使用會話或數據庫存儲數據,實現實時更新和棄單恢復。支付集成&#x…

[vue3+js]實現3d旋轉效果

1. 實現效果圖&#xff1a; 2.實現代碼&#xff1a; css: <style lang"scss" scoped>.bottomContainer{width: 1200px;height: 400px;display: flex;justify-content: center;position: relative;margin:200px auto;align-items: center;// background-image…

既美觀又方便的后臺框架誰需要?進來就對了。

一套既美觀又方便的后臺框架可以大大幅節約開發時間和成本。 我們來一起看看幾個明朗大氣的管理控制臺頁面。 本文檔會持續更新 模板編號&#xff1a;翠花_001模板編號&#xff1a;翠花_002模板編號&#xff1a;翠花_003

01 centos7中cmake配置crow開發環境

一、搭建開發環境 1.1 c開發環境 yum -y install gcc gcc-c gdb git1.2 安裝crow所需依賴 yum install boost boost-devel yum install openssl openssl-devel1.3 安裝cmake_3.27.9 可以借鑒此安裝&#xff1a;https://blog.csdn.net/i_coding_/article/details/131883590 …