Great Expectations 數(shù)據(jù)質(zhì)量管理工具

Great Expectations (GE) 是一個(gè)用于數(shù)據(jù)驗(yàn)證虚婿、數(shù)據(jù)質(zhì)量檢查和數(shù)據(jù)管控的開源框架,它使用戶能夠定義阿蝶、執(zhí)行和自動(dòng)化數(shù)據(jù)驗(yàn)證規(guī)則雳锋。通過 GE,用戶可以確保數(shù)據(jù)符合預(yù)期羡洁,支持?jǐn)?shù)據(jù)驅(qū)動(dòng)的決策和流程玷过。


一、概述

Great Expectations 是一個(gè)專注于數(shù)據(jù)質(zhì)量管理的開源工具筑煮,旨在幫助數(shù)據(jù)工程師和數(shù)據(jù)科學(xué)家解決數(shù)據(jù)質(zhì)量問題辛蚊。它允許用戶定義 "期望"(Expectations),即數(shù)據(jù)的規(guī)則和約束條件真仲,然后對(duì)數(shù)據(jù)執(zhí)行驗(yàn)證欲账,生成直觀的報(bào)告以識(shí)別問題。

  • 官方網(wǎng)站: https://greatexpectations.io
  • 用途:
    • 數(shù)據(jù)質(zhì)量驗(yàn)證举农。
    • 數(shù)據(jù)清洗前的檢查蔫浆。
    • 數(shù)據(jù)管控和合規(guī)性驗(yàn)證。
  • 特性:
    • 自動(dòng)化數(shù)據(jù)驗(yàn)證软啼。
    • 支持多種數(shù)據(jù)源桑谍。
    • 生成直觀的驗(yàn)證報(bào)告。
    • 與 CI/CD 工作流集成祸挪。

二锣披、核心功能

Great Expectations 提供了強(qiáng)大的功能,支持從簡(jiǎn)單的數(shù)據(jù)驗(yàn)證到復(fù)雜的規(guī)則管理贿条。

1. 期望 (Expectations)

  • 定義數(shù)據(jù)規(guī)則: 使用 GE 的 DSL(領(lǐng)域特定語言)定義數(shù)據(jù)規(guī)則雹仿。例如,字段值范圍整以、唯一性胧辽、數(shù)據(jù)類型等。
  • 內(nèi)置期望庫: 提供 50 多種內(nèi)置期望(如 expect_column_values_to_be_in_set悄蕾、expect_table_row_count_to_be_between)票顾。
  • 自定義期望: 用戶可以根據(jù)需求編寫自定義期望础浮。

2. 數(shù)據(jù)驗(yàn)證 (Validation)

  • 批處理驗(yàn)證: 對(duì)指定數(shù)據(jù)集執(zhí)行批量驗(yàn)證,檢查規(guī)則是否符合奠骄。
  • 實(shí)時(shí)驗(yàn)證: 支持實(shí)時(shí)驗(yàn)證數(shù)據(jù)流豆同。
  • 多數(shù)據(jù)源支持: GE 支持多種類型的數(shù)據(jù)源(文件、數(shù)據(jù)庫含鳞、云存儲(chǔ)等)影锈。

3. 數(shù)據(jù)文檔化

  • GE 生成交互式的 HTML 數(shù)據(jù)質(zhì)量報(bào)告,包含驗(yàn)證結(jié)果和失敗詳情蝉绷。
  • 報(bào)告適合作為數(shù)據(jù)管控和審核的依據(jù)鸭廷。

4. 數(shù)據(jù)管道集成

  • GE 可以嵌入到數(shù)據(jù)管道中,在數(shù)據(jù)流轉(zhuǎn)的每一步進(jìn)行驗(yàn)證熔吗。
  • 支持與流行的數(shù)據(jù)編排工具集成辆床,如 Apache Airflow、Prefect 和 Dagster桅狠。

5. 元數(shù)據(jù)存儲(chǔ) (Data Context)

  • GE 提供一個(gè)中心化的配置管理模塊(Data Context)讼载,用于存儲(chǔ)期望、驗(yàn)證結(jié)果和元數(shù)據(jù)中跌。

6. 自動(dòng)化規(guī)則生成

  • GE 提供自動(dòng)化工具咨堤,通過掃描數(shù)據(jù)集生成初始期望模板,快速創(chuàng)建規(guī)則漩符。

三一喘、架構(gòu)設(shè)計(jì)

Great Expectations 的架構(gòu)設(shè)計(jì)分為以下幾個(gè)核心模塊:

1. Data Context

  • 描述: Data Context 是 GE 的核心配置模塊,負(fù)責(zé)管理期望嗜暴、數(shù)據(jù)源配置和驗(yàn)證結(jié)果凸克。
  • 功能:
    • 數(shù)據(jù)源配置(如連接數(shù)據(jù)庫、文件系統(tǒng))闷沥。
    • 存儲(chǔ)期望触徐、驗(yàn)證結(jié)果和元數(shù)據(jù)。

2. Expectations

  • 描述: 用戶可以通過 GE 的 DSL 定義期望狐赡。
  • 特點(diǎn):
    • 通過 JSON 或 Python API 定義規(guī)則。
    • 自動(dòng)生成初始規(guī)則模板疟丙,供用戶編輯颖侄。

3. Validation

  • 描述: 驗(yàn)證模塊執(zhí)行期望規(guī)則,檢查數(shù)據(jù)是否符合要求享郊。
  • 特點(diǎn):
    • 支持批量和流式數(shù)據(jù)驗(yàn)證览祖。
    • 驗(yàn)證結(jié)果存儲(chǔ)在 Data Context 中。

4. Validation Results

  • 描述: 驗(yàn)證結(jié)果以 JSON 格式存儲(chǔ)炊琉,并可以生成 HTML 報(bào)告展蒂。
  • 特點(diǎn):
    • 直觀展示驗(yàn)證通過/失敗的詳情又活。
    • 支持審計(jì)和共享。

5. Checkpoints

  • 描述: Checkpoints 是 GE 的運(yùn)行單元锰悼,用于在特定數(shù)據(jù)集上執(zhí)行一組期望柳骄。
  • 功能:
    • 可通過命令行或腳本觸發(fā)。
    • 支持調(diào)度和自動(dòng)化運(yùn)行箕般。

6. Plugins 和擴(kuò)展

  • 支持用戶編寫自定義插件耐薯。
  • 可擴(kuò)展連接器(Connectors)以支持新的數(shù)據(jù)源類型。

四丝里、安裝部署

1. 安裝

Great Expectations 是一個(gè)純 Python 庫曲初,可以通過 pip 安裝:

pip install great_expectations

2. 初始化項(xiàng)目

安裝完成后,初始化 GE 項(xiàng)目結(jié)構(gòu):

great_expectations init

初始化后杯聚,目錄結(jié)構(gòu)如下:

great_expectations/
  ├── great_expectations.yml         # 配置文件
  ├── expectations/                  # 存儲(chǔ)期望規(guī)則
  ├── checkpoints/                   # 存儲(chǔ) Checkpoints 配置
  ├── uncommitted/                   # 本地?cái)?shù)據(jù)驗(yàn)證結(jié)果
  ├── validations/                   # 驗(yàn)證結(jié)果存儲(chǔ)
  └── ...

3. 配置數(shù)據(jù)源

通過以下命令添加數(shù)據(jù)源:

great_expectations datasource new

支持的數(shù)據(jù)源包括:

  • 文件:CSV臼婆、Excel、Parquet 等幌绍。
  • 數(shù)據(jù)庫:MySQL颁褂、PostgreSQL、Snowflake纷捞、BigQuery 等痢虹。
  • 云存儲(chǔ):AWS S3、Google Cloud Storage 等主儡。

4. 部署

  • 本地運(yùn)行: GE 可以直接在本地運(yùn)行奖唯,適合開發(fā)和測(cè)試。
  • 生產(chǎn)環(huán)境: GE 可以與 CI/CD 管道集成糜值,或作為數(shù)據(jù)管道的一部分運(yùn)行丰捷。
  • 云環(huán)境: GE 可以部署在云環(huán)境中,執(zhí)行數(shù)據(jù)驗(yàn)證任務(wù)寂汇。

五病往、使用案例

以下是 Great Expectations 的常見使用案例:

案例 1: 數(shù)據(jù)清洗前的質(zhì)量檢查

需求: 確保數(shù)據(jù)加載前沒有缺失值或異常值。

實(shí)現(xiàn):

  1. 定義期望規(guī)則:
    expect_column_values_to_not_be_null("column_name")
    expect_column_values_to_be_in_set("status", ["active", "inactive"])
    
  2. 執(zhí)行驗(yàn)證骄瓣,生成報(bào)告停巷。

案例 2: 數(shù)據(jù)遷移驗(yàn)證

需求: 驗(yàn)證從舊系統(tǒng)遷移到新系統(tǒng)的數(shù)據(jù)是否一致。

實(shí)現(xiàn):

  1. 定義期望規(guī)則(如行數(shù)一致榕栏、字段值范圍一致)畔勤。
  2. 在遷移后運(yùn)行 Checkpoint,驗(yàn)證數(shù)據(jù)一致性扒磁。

案例 3: 自動(dòng)化數(shù)據(jù)管控

需求: 在數(shù)據(jù)管道中自動(dòng)驗(yàn)證數(shù)據(jù)質(zhì)量庆揪。

實(shí)現(xiàn):

  1. 將 GE 集成到 Apache Airflow 或 Prefect 工作流中。
  2. 在每個(gè) ETL 步驟后執(zhí)行 Checkpoint妨托,確保數(shù)據(jù)質(zhì)量缸榛。

六吝羞、優(yōu)缺點(diǎn)

優(yōu)點(diǎn)

  1. 功能強(qiáng)大:

    • 豐富的內(nèi)置期望,支持多種數(shù)據(jù)驗(yàn)證場(chǎng)景内颗。
    • 自動(dòng)化規(guī)則生成钧排,快速上手。
  2. 多數(shù)據(jù)源支持:

    • 支持文件起暮、數(shù)據(jù)庫卖氨、云存儲(chǔ)等多種數(shù)據(jù)源。
  3. 生成可視化報(bào)告:

    • 提供交互式 HTML 報(bào)告负懦,便于共享和審計(jì)筒捺。
  4. 可擴(kuò)展性高:

    • 支持自定義期望和插件擴(kuò)展。
  5. 與現(xiàn)代工具集成:

    • 可嵌入到 Airflow纸厉、Prefect系吭、Dagster 等數(shù)據(jù)編排工具中。
  6. 開源:

    • 免費(fèi)使用颗品,社區(qū)活躍肯尺,有豐富的文檔和支持資源。

缺點(diǎn)

  1. 學(xué)習(xí)曲線較陡:

    • 初次使用時(shí)躯枢,需學(xué)習(xí) GE 的 DSL 和配置方法则吟。
  2. 性能問題:

    • 對(duì)于超大規(guī)模數(shù)據(jù)集,驗(yàn)證過程可能較慢锄蹂,需要優(yōu)化氓仲。
  3. 依賴配置:

    • GE 的配置文件較多,管理復(fù)雜性較高得糜。
  4. 高級(jí)功能需要編程知識(shí):

    • 自定義期望或深度集成需要一定的 Python 編程能力敬扛。

七、總結(jié)

Great Expectations 是一個(gè)功能強(qiáng)大的數(shù)據(jù)質(zhì)量管理工具朝抖,非常適合需要對(duì)數(shù)據(jù)進(jìn)行嚴(yán)格驗(yàn)證和管控的場(chǎng)景啥箭。它的期望機(jī)制、自動(dòng)化功能和可視化報(bào)告使其成為數(shù)據(jù)工程和數(shù)據(jù)科學(xué)團(tuán)隊(duì)的重要工具治宣。

適用場(chǎng)景

  • 數(shù)據(jù)清洗前的質(zhì)量檢查急侥。
  • 數(shù)據(jù)管道中的自動(dòng)化驗(yàn)證。
  • 數(shù)據(jù)遷移或集成項(xiàng)目的質(zhì)量驗(yàn)證侮邀。
  • 數(shù)據(jù)治理和合規(guī)性檢查缆巧。

不適用場(chǎng)景

  • 數(shù)據(jù)規(guī)模超大的實(shí)時(shí)流處理場(chǎng)景(性能可能受限)。
  • 簡(jiǎn)單數(shù)據(jù)驗(yàn)證場(chǎng)景(可能顯得過于復(fù)雜)豌拙。

通過合理使用 Great Expectations,可以確保數(shù)據(jù)質(zhì)量達(dá)到業(yè)務(wù)需求题暖,為數(shù)據(jù)驅(qū)動(dòng)的決策和分析提供堅(jiān)實(shí)的基礎(chǔ)按傅。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末捉超,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子唯绍,更是在濱河造成了極大的恐慌拼岳,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,284評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件况芒,死亡現(xiàn)場(chǎng)離奇詭異惜纸,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)绝骚,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門耐版,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人压汪,你說我怎么就攤上這事粪牲。” “怎么了止剖?”我有些...
    開封第一講書人閱讀 164,614評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵腺阳,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我穿香,道長(zhǎng)亭引,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,671評(píng)論 1 293
  • 正文 為了忘掉前任皮获,我火速辦了婚禮焙蚓,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘魔市。我一直安慰自己主届,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,699評(píng)論 6 392
  • 文/花漫 我一把揭開白布待德。 她就那樣靜靜地躺著君丁,像睡著了一般。 火紅的嫁衣襯著肌膚如雪将宪。 梳的紋絲不亂的頭發(fā)上绘闷,一...
    開封第一講書人閱讀 51,562評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音较坛,去河邊找鬼印蔗。 笑死,一個(gè)胖子當(dāng)著我的面吹牛丑勤,可吹牛的內(nèi)容都是我干的华嘹。 我是一名探鬼主播,決...
    沈念sama閱讀 40,309評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼法竞,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼耙厚!你這毒婦竟也來了强挫?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,223評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤薛躬,失蹤者是張志新(化名)和其女友劉穎俯渤,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體型宝,經(jīng)...
    沈念sama閱讀 45,668評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡八匠,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,859評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了趴酣。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片梨树。...
    茶點(diǎn)故事閱讀 39,981評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖价卤,靈堂內(nèi)的尸體忽然破棺而出劝萤,到底是詐尸還是另有隱情,我是刑警寧澤慎璧,帶...
    沈念sama閱讀 35,705評(píng)論 5 347
  • 正文 年R本政府宣布床嫌,位于F島的核電站,受9級(jí)特大地震影響胸私,放射性物質(zhì)發(fā)生泄漏厌处。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,310評(píng)論 3 330
  • 文/蒙蒙 一岁疼、第九天 我趴在偏房一處隱蔽的房頂上張望阔涉。 院中可真熱鬧,春花似錦捷绒、人聲如沸瑰排。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,904評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽椭住。三九已至,卻和暖如春字逗,著一層夾襖步出監(jiān)牢的瞬間京郑,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,023評(píng)論 1 270
  • 我被黑心中介騙來泰國打工葫掉, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留些举,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,146評(píng)論 3 370
  • 正文 我出身青樓俭厚,卻偏偏與公主長(zhǎng)得像户魏,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,933評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容