介紹
世界各地的金融服務機構(FSIs)正麵臨前所未有的挑戰,從市場波動和政治不確定性變化立法法規。企業被迫加快數字化改造項目;自動化關鍵流程,降低運營成本和提高響應時間。然而,通常分散在多個係統和數據、訪問所需的信息執行這些行動往往是說起來容易做起來難。
架構一個生態係統的服務能夠支持過多的數據驅動的用例在這種數字化轉換業務,然而,似乎是一項不可能完成的任務。這個博客將專注於現代數據棧的一個至關重要的方麵:批處理。看似過時的模式,我們將看到為什麼批處理仍然是一個至關重要的和高度可行的數據架構的組件。我們會看到磚如何幫助FSIs導航時麵臨的一些關鍵挑戰建設基礎設施來支持這些計劃或定期工作流。
為什麼批攝入很重要
在過去的二十年裏,全球轉向即時社會迫使組織重新考慮操作和接觸模型。數字領先戰略不再是可選的,但是對生存至關重要。客戶需求和需求變化和發展比以往任何時候都要快。這種渴望即時滿足駕駛增加關注建築功能,實時處理和決策支持。人們可能會問是否批處理仍然是有關在這個新動態的世界。
而實時係統和流媒體服務可以幫助FSIs保持敏捷在邊緣處理不穩定的市場環境,通常他們不滿足要求的後台功能。大多數商業決策並不是被動的,而是需要考慮,戰略推理。根據定義,這種方法需要係統回顧的聚合在一段時間內收集的數據。批處理在這種情況下仍然提供最有效和具有成本效益的方法處理大型,總數量的數據。此外,批處理可以離線完成,減少運營成本,並提供更大的控製端到端流程。
金融的世界正在改變,但全麵在任者和初創公司繼續嚴重依賴於批處理核心業務功能。是否報告和風險管理或異常檢測和監測,FSIs需要批處理來減少人為錯誤,提高交貨的速度,並降低運營成本。
開始
從30000英尺的觀點,大多數FSIs將有大量的數據源分散在本地係統,基於雲的服務,甚至第三方應用程序。建設一批攝入框架,滿足所有這些連接都需要複雜的工程和維護團隊很快就會成為負擔。,甚至在考慮變化數據捕獲(CDC)、調度和模式演化。在本節中,我們將演示如何磚Lakehouse金融服務(LFS)及其生態係統的合作夥伴可以利用來解決這些關鍵的挑戰和大大簡化整個體係結構。
磚Lakehouse旨在提供一個統一的平台,支持所有分析和科學數據的工作量。Beplay体育安卓版本圖1顯示的參考體係結構解耦設計,這可以讓我們方便與其他平台的集成,支持現代數據的生態係統。Beplay体育安卓版本lakehouse便於構造攝入和服務層操作無關的數據來源,體積,速度,和目的地。
為了演示LFS的功率和效率,我們向世界的保險。我們考慮一個典型的基本報告要求索賠工作流。在此場景中,組織可能會感興趣的關鍵指標由索賠流程。例如:
- 數量的積極政策
- 數量的要求
- 的價值主張
- 總風險敞口
- 賠付率
此外,企業可能希望看到潛在的可疑的索賠和崩潰的事件類型和嚴重程度。所有這些指標很容易計算兩個主要來源的數據:1)這本書的政策和2)提起的索賠的客戶。beplay体育app下载地址政策和索賠記錄通常存儲在一個組合的企業數據倉庫(倉庫)和操作數據庫。麵臨的主要挑戰成為連接到lakehouse這些來源和消化數據,我們可以利用磚的力量來計算所需的輸出。
幸運的是,LFS的靈活的設計很容易利用從一係列SaaS一流產品技術和工具來處理特定的任務。一個可能的解決方案為我們的索賠分析用例是使用Fivetran批攝入的飛機。Fivetran提供了一種簡單、安全的平台連接到大量的數據源和磚LakehoBeplay体育安卓版本use直接提供數據。此外,它提供本機支持中心,模式演化和工作負載調度。在圖2中,我們展示了一個實用的解決方案的技術架構這個用例。
一旦數據並交付給LFS時,我們可以使用三角洲生活表(DLT)為整個工程的工作流程。DLT提供了一個簡單的、可伸縮的聲明性框架,使複雜的工作流自動化和執行數據質量控製。輸出從我們的DLT工作流,我們的策劃和聚合的資產,可以詢問使用磚的SQL(DB SQL)。DB SQL將數據倉庫的LFS關鍵業務分析工作負載。數據庫SQL查詢的結果可以很容易一下子吃打包的儀表盤和業務用戶。
步驟1:創建攝入層
建立一個與Fivetran攝入層需要一個兩步的過程。首先,一個所謂的配置目的地數據將被交付,第二,建立一個或多個連接的源係統。的合作夥伴聯係接口負責用一個簡單的第一步,引導界麵連接Fivetran磚倉庫。Fivetran將使用倉庫原始源數據轉換為三角洲表並將結果存儲在磚Lakehouse。圖3和圖4顯示步驟從合作夥伴和Fivetran接口連接到配置一個新的目的地。
下一步,我們搬到Fivetran接口。從這裏,我們可以很容易的創建和配置連接不同源係統(請參閱官方文檔所有支持的連接的完整列表)。在我們的示例中,我們考慮三個數據來源:1)政策記錄存儲在一個業務數據存儲(ODS)或企業數據Warehosue(倉庫),2)索賠記錄存儲在數據庫操作,和3)外部數據送到blob存儲。因此,我們在Fivetran需要配置三種不同的連接。對於這些,我們可以按照Fivetran簡單的引導過程的設置與源係統的連接。圖5和圖6展示了如何配置新的連接數據源。
連接可以進一步配置,一旦他們被驗證。一個重要的選項集的頻率Fivetran將為新數據查詢源係統。在圖7中,我們可以看到簡單Fivetran已經設置同步頻率間隔5分鍾至24小時。
Fivetran將立即詢問和攝取數據從源係統連接驗證一次。δ表和數據存儲可以通過DB在磚從SQL數據瀏覽。默認情況下,蜂巢metastore Fivetran將存儲所有數據。為每個新連接,創建一個新模式,每個模式將包含至少兩個表:一個包含數據和另一個日誌從每個試圖攝入周期(參見圖8)。
在三角洲表中存儲的數據是一個重要的優勢。三角洲湖本機支持細粒度的數據版本,這意味著我們可以通過每個攝入周期時間旅行(參見圖9)。我們可以使用數據庫SQL查詢特定版本的數據分析來源記錄是如何進化的。
重要的是要注意,如果源數據包含半結構化或非結構化的值,這些屬性將會在轉換過程中被夷為平地。這意味著結果將存儲在分組text類型列,和這些實體必須解剖和打開DLT管理過程中創建單獨的屬性。
步驟2:自動化工作流
磚Lakehouse中的數據,我們可以使用增量表(DLT)來構建一個簡單的生活,自動數據工程工作流程。DLT指定詳細的功能提供了一種聲明性框架工程的步驟。目前,DLT支持Python和SQL api。在這個例子中,我們將使用Python api來構建我們的工作流。
DLT最基本構造是一個表的定義。DLT查問所有表定義創建一個全麵的工作流數據應該如何處理。例如,在Python中,表是使用函數定義和“dlt創建。表的裝飾(見下麵的Python代碼的例子)。裝飾是用來指定生成的表的名稱,描述性注釋解釋表的目的,和表屬性的集合。
@dlt.table (name =“curated_claims”,評論=“策劃索賠記錄”,table_properties = {“層”:“銀”,“pipelines.autoOptimize.managed”:“真正的”,“delta.autoOptimize.optimizeWrite”:“真正的”,“delta.autoOptimize.autoCompact”:“真正的”})defcurate_claims():#讀了索賠記錄到內存中staged_claims = dlt.read (“staged_claims”)#打開所有嵌套的屬性創建一個扁平的表結構curated_claims = unpack_nested (df = staged_claims模式= schema_claims)
…
指令功能工程定義在函數體內部使用標準PySpark api和本機Python命令。下麵的例子顯示了如何PySpark加入索賠記錄與數據從政策表創建一個策劃的要求。
…#讀了索賠記錄到內存中curated_policies = dlt.read (“curated_policies”)#評估索賠的有效性curated_claims = curated_claims \.alias (“一個”)\. join (curated_policies.alias (“b”),在= F.col (“a.policy_number”)= = F.col (“b.policy_number”),如何=“左”)\.select ([F.col (f”。{c}”)為c在curated_claims。columns] + [F.col(f b。{c}”).alias (f”policy_{c}”)為c在(“effective_date”,“expiry_date”)))\.withColumn (#計算覆蓋率之間的幾個月開始和索賠申請“months_since_covered”F。輪(F.months_between (F.col (“claim_date”),F.col (“policy_effective_date”))))\.withColumn (#檢查政策生效前的提起“claim_before_covered”,F.when (F.col (“claim_date”)< F.col (“policy_effective_date”),F.lit (1).otherwise (F.lit (0)))\.withColumn (#計算事件發生之間的天數和索賠申請“days_between_incident_and_claim”,F.datediff (F.col (“claim_date”),F.col (“incident_date”)))#返回數據集策劃返回curated_claims
DLT的一個重要優點是指定和執行數據質量標準的能力。我們可以設定預期每個DLT表和詳細的數據質量約束,應該應用於表的內容。目前,DLT支持預期三個不同的場景:
裝飾 |
描述 |
預計 |
保留記錄違反預期 |
expect_or_drop |
記錄違反預期下降 |
expect_or_fail |
停止執行如果任何記錄(s)違反約束 |
期望可以與一個或多個定義數據質量約束。每個約束需要一個描述和評估一個Python或SQL表達式。可以定義多個約束條件使用expect_all expect_all_or_drop,
和expect_all_or_fail
修飾符。每個裝飾預計Python字典的鍵約束描述,和值相應的表達式。下麵的例子顯示了保留多個數據質量約束放上麵描述的場景。
@dlt.expect_all ({“valid_driver_license”:“driver_license_issue_date >(當前日期()- cast (cast (driver_age INT)間隔年))”,“valid_claim_amount”:“total_claim_amount > 0 ",“valid_coverage”:“months_since_covered > 0 ",“valid_incident_before_claim”:“days_between_incident_and_claim > 0 "})@dlt.expect_all_or_drop ({“valid_claim_number”:“claim_number NOT NULL”,“valid_policy_number”:“policy_number NOT NULL”,“valid_claim_date”:“claim_date <當前日期(),“valid_incident_date”:“incident_date <當前日期(),“valid_incident_hour”:“incident_hour 0至24”,“valid_driver_age”:“driver_age > 16”,“valid_effective_date”:“policy_effective_date <當前日期(),“valid_expiry_date”:“policy_expiry_date < =當前日期()”})defcurate_claims():…
我們可以使用一個以上的磚筆記本宣布我們的DLT表。假設我們遵循大獎章架構例如,,我們可以使用不同的筆記本定義表包括銅、銀、金層。DLT框架可以消化指令定義多個筆記本創建一個工作流;表間的依賴關係和關係都是自動處理和考慮。圖10顯示了完整的工作流程對我們索賠的例子。從三源表,DLT構建一個全麵的管道,提供商業消費13表。
結果為每個表可以檢查通過選擇所需的實體。圖11的策劃的結果提供了一個示例表。DLT提供了一個高度概括的結果從數據質量控製:
結果可以分析數據質量的預期進一步通過查詢事件日誌。事件日誌包含詳細的指標對工作流定義的所有預期管道。下麵的查詢提供了一個示例查看從去年管道更新關鍵指標,包括記錄的數量,通過或失敗的期望:
選擇row_expectations.dataset作為數據集,row_expectations.name作為期望,總和(row_expectations.passed_records)作為passing_records,總和(row_expectations.failed_records)作為failing_records從(選擇爆炸(from_json (細節:flow_progress: data_quality:預期,“數組< struct <名稱:字符串,數據集:字符串,passed_records: int, failed_records: int > >”))row_expectations從event_log_raw在哪裏event_type=“flow_progress”和origin.update_id=“$ {latest_update.id}”)集團通過row_expectations.dataset,row_expectations.name;
再一次,我們可以查看完整的曆史變化每個DLT表通過查看三角洲曆史日誌(參見圖12)。它讓我們了解表隨時間推移而發展和調查完全線程更新如果管道失敗。
我們可以進一步利用變化數據捕獲(CDC)更新表基於源數據集的變化。DLT疾控中心支持更新表與變化緩慢的維度(SCD)類型1和2。
我們有兩種選擇批處理觸發DLT管道。我們可以使用磚自動加載程序增量過程新數據到達源表創建觸發器在設定好的時間安排工作或間隔。在這個例子中,我們選擇了後者的預定工作執行DLT管道每五分鍾。
實施輸出
逐步有效處理數據的能力是隻有一半的方程。結果DLT工作流必須實施和交付給業務用戶。在我們的示例中,我們可以使用輸出的DLT管道通過特設分析或預填充的見解通過交互式儀表板。
特別的分析
磚的SQL(或數據庫SQL)提供了一個高效、成本效益數據倉庫的數據磚Lakehouse平台。Beplay体育安卓版本它允許我們運行SQL工作負載直接對源數據12 x更好的價格/性能比它的替代品。
我們可以利用數據庫SQL執行特定臨時查詢我們的策劃和聚合表。例如,我們可能會運行一個查詢策劃表,計算總接觸的政策。DB SQL查詢編輯器提供了一個簡單,易於使用的接口來構建和執行查詢(見下麵的例子)。
選擇輪(curr.total_exposure0)作為total_exposure,輪(prev.total_exposure0)作為previous_exposure從(選擇總和(sum_insured)作為total_exposure從insurance_demo_lakehouse.curated_policies在哪裏expiry_date>{{日期。結束}}’和(effective_date< ={{日期。開始}}或(effective_date之間的{{日期。開始}}和{{日期。結束}}’)))咕咕叫加入(選擇…
我們也可以使用數據庫SQL查詢編輯器運行查詢不同版本的δ表。例如,我們可以查詢視圖的聚合理賠記錄為一個特定的日期和時間(見下麵的例子)。我們可以進一步使用DB SQL比較結果隻分析不同版本之間的更改記錄狀態。
選擇*從insurance_demo_lakehouse.aggregated_claims_weekly時間戳作為的2022 - 06 - 05 t17:00:00;
DB SQL提供選擇使用serverless計算引擎,消除需要配置、管理或規模的雲基礎設施,同時保持盡可能低的成本。它還集成了其他SQL工作台(例如,DataGrip),允許分析師使用自己喜歡的工具來探索數據並生成的見解。
業務的見解
最後,我們可以使用數據庫SQL查詢來創建豐富的可視化的查詢結果。這些可視化可以打包並最終用戶通過交互式儀表板(參見圖13)。
對我們的用例中,我們創建了一個儀表板與關鍵指標的集合,滾動計算,高層次的故障,總觀點。儀表板提供了一個完整的總結我們的索賠過程一目了然。我們還添加了選項指定特定的日期範圍。DB SQL支持一係列的查詢參數值代入在運行時查詢。這些查詢參數可以定義在儀表板級別,以確保所有相關的查詢相應更新。
DB SQL與眾多第三方集成分析和BI工具如電力BI,畫麵和美人。Fivetran像我們一樣,我們可以使用合作夥伴連接鏈接外部平台數據庫SQL。Beplay体育安卓版本這允許分析師在平台構建和服務指示板,業務更喜歡在不犧牲性能的SQL和磚Lakehouse DB。Beplay体育安卓版本
結論
當我們進入這個快節奏、揮發性的現代世界金融、批處理仍然是一個至關重要的現代數據棧的一部分,能夠保持自己的特點和優點的流媒體和實時的服務。我們已經看到如何使用磚Lakehouse金融服務和其合作夥伴生態係統架構師一個簡單的、可伸縮、可擴展的框架,通過一個實際示例來支持複雜的批處理工作負載在保險索賠處理。與達美住表(DLT)和磚SQL (SQL數據庫),我們可以建立一個數據平台架構,無限,很容易擴展到處理不斷變化的需求,並將經得起時間的考驗。Beplay体育安卓版本
了解更多關於描述的示例管道,包括基礎設施設置和配置使用,請參考這GitHub庫或看這演示視頻. .