你了解你的資料嗎(元嬰篇)

2021-08-15 03:19:52 字數 1565 閱讀 8305

本篇是《你了解你的資料嗎》的第五篇,在前面的幾篇文章中,我們聊到了資料接入量、資料的坑、資料核心維度分布、資料口徑和資料質量監控。本篇將引入乙個新的概念:資料血緣分析,或者叫血統分析。

那麼什麼是資料血緣分析呢?在這裡我們不給出它的嚴謹的定義,僅從感覺上來解釋一下這個東西。

資料血緣,我們可以大致理解為是乙個表的生成過程。它依賴了哪些表,怎麼生成的。同時加上它依賴的表又是怎麼生成的。

下面舉個栗子來解釋一下。

現在假設你是乙隻資料開發工程師,為了滿足一次業務需求,,然後為了生成這張表,可能是處於程式邏輯清晰或者效能優化的考慮,你會使用很多份資料表,也會通過 mr、spark 或者 hive 來生產很多中間表。

如下圖,是你將花費時間來實現的整個資料流。

過了一段時間後,業務側的感覺你提供的資料中有個字段總是不太對勁,其實就是懷疑你的資料出問題!需要你來追蹤一下這個欄位的**。

首先你從 table x 中找到了異常的字段,然後定位到了它**於 table i,再從 table i 定位到了它**於 table g, 再從 table g 追溯到了 table d,最終發現是某幾天的**資料有異常。

或者說,你從 table x 定位到了異常的字段原來來自於其它小夥伴處理的表 table j,然後繼續向前回溯,找到了這張表在處理過程中的某乙個步出現了問題。

上面的過程是資料血緣分析的過程。

咋一看,其實感覺資料血緣分析並沒有什麼用,其實就我個人感覺來看,其實的確沒什麼用,特別是在你的業務規模比較小並且資料合作不頻繁的情況下,基本不需要資料血緣分析。但是當遇到了下面一些場景的時候,資料血緣絕對能幫你提高很高的效率。

問題定位。上面的例子,假設你用到了別人的資料,資料血緣分析能快速幫你定位到問題。

理解資料。如果你想用其它的資料來源,首先要能理解它,不然資料口徑能給你帶來很大的麻煩。

修改某份資料的時候能評估影響的範圍大小。比如說現在你的小夥伴要調整自己開發的 table j,這時候如果他不知道有誰在依賴這張表,冒然修改的話會帶來毀滅性的傷害,但是有資料血緣分析的時候,至少能知道誰在使用這份資料。

其實總的說來,資料血緣能幫你更好地理解自己的資料!

實現的話不打算在這裡多聊,因為資料血緣一般是和元資料管理緊緊繫結起來的,在設計元資料管理系統的時候應該要考慮到資料血緣的內容。關於元資料系統的設計可以參考這篇部落格《別人家的元資料系統是怎麼設計的》。

這裡隨便提一句,資料血緣的管理可以考慮使用圖資料來實現,用圖資料的好處是更容易展現表之間的關係。比如說下面兩個需求點,用關係型資料庫寫 sql 的話會很麻煩,但是用圖資料庫的話邏輯就十分簡單。

補充: 有朋友會問,資料的關係從哪來?這個其實途徑很多,最簡單的方式可以從所有的 hive sql 中解析出來關係對,也可以從其它的**或者排程系統中解析。具體實現可以根據業務場景來實現。

居士個人理解,資料血緣關係是理解資料的乙個十分重要的點,它能讓你快速清晰地理解你所關注的資料的生成路徑。

然後關於本文,閒扯的比較多,而且不是特別嚴謹。居士希望能幫助沒怎麼聽過資料血緣的童鞋熟悉一下這個概念,至於深入的挖掘點,可以再多交流。

你了解你自己的公司嗎?

市場定位是什麼?你是否想像過你現在的客戶都是什麼樣的人?如果可能的話,先試著統計一下他們的基本情況,如 性別 年齡 婚姻狀況 工作內容和工作領域。再想像一下客戶們的價值觀,如他們的生活方式 生活態度等。你對你潛在的客戶了解的越多,就越容易和他們溝通,也越容易取得他們的信賴。無論是新客戶還是老客戶,信...

你了解你自己的公司嗎?

市場定位是什麼?你是否想像過你現在的客戶都是什麼樣的人?如果可能的話,先試著統計一下他們的基本情況,如 性別 年齡 婚姻狀況 工作內容和工作領域。再想像一下客戶們的價值觀,如他們的生活方式 生活態度等。你對你潛在的客戶了解的越多,就越容易和他們溝通,也越容易取得他們的信賴。無論是新客戶還是老客戶,信...

你了解postMessage嗎?

前言 通常,對於兩個不同頁面的指令碼,只有當執行它們的頁面位於同源 同協議 同主機 同埠 情況下,這兩個指令碼才能相互通訊。window.postmessage 方法可以安全地實現跨域通訊 前提 正確使用 使用 語法 otherwindow.postmessage message,targeorig...