大數據面試題之數倉(1)

目錄

介紹下數據倉庫

數倉的基本原理

數倉架構

數據倉庫分層(層級劃分),每層做什么?分層的好處?

數據分層是根據什么?

數倉分層的原則與思路

知道數倉建模常用模型嗎?區別、優缺點?

星型模型和雪花模型的區別?應用場景?優劣對比

數倉建模有哪些方式?

數倉建模的流程?

維度建模的步驟,如何確定這些維度的

維度建模和范式建模區別


介紹下數據倉庫

數據倉庫(Data Warehouse,簡稱DW或DWH)是一個專為支持企業決策制定過程而設計的集中式數據存儲系統。它從多個操作型系統(如ERP、CRM、銷售系統等)中收集、整理、存儲大量數據,旨在提供一個集成的、歷史的、主題導向的數據視圖,用于復雜的查詢和分析,而非日常事務處理。以下是數據倉庫的主要特點和組件:

主要特點:

  1. 面向主題:數據按照特定業務主題(如銷售、客戶、財務等)組織,便于分析和報告。
  2. 集成性:來自不同源頭的數據經過清洗、轉換,消除不一致性和重復,形成統一的數據視圖。
  3. 穩定性:數據一旦進入倉庫,通常是不可修改的,僅用于查詢和分析,保證了數據的歷史可追溯性。
  4. 時變性:數據倉庫記錄歷史數據,支持時間序列分析,幫助分析趨勢和模式。

組件和架構:

  1. 數據源:包括各種業務系統、數據庫、日志文件等,是數據倉庫數據的原始來源。
  2. ETL(Extract, Transform, Load):數據從源系統抽取、轉換(清洗、格式化、聚合等)后加載到數據倉庫的過程。
  3. 數據倉庫:中心存儲區域,存放經過整合的數據,通常分為三層架構: staging area(臨時存儲區)、data mart(數據集市,針對特定業務領域的子集)和 presentation layer(展示層,供用戶直接查詢)。
  4. OLAP(在線分析處理):支持復雜的分析查詢,包括切片、切塊、旋轉等操作,使用戶能從多個角度快速分析數據。
  5. 數據挖掘:利用算法發現數據中的隱藏模式、關聯和趨勢,支持預測性分析和決策支持。
  6. 前端工具:包括報表工具、儀表板、數據可視化軟件等,用于呈現數據倉庫中的數據,支持業務用戶做出決策。

應用場景:

  • 業務分析與報告:生成定期或定制的業務報告,如銷售趨勢、市場分析報告。
  • 決策支持系統:為管理層提供決策依據,如預算規劃、風險評估。
  • 績效監控:跟蹤關鍵業務指標(KPIs),監控業務健康狀況。
  • 客戶行為分析:深入分析客戶行為模式,支持精準營銷和客戶服務。

數據倉庫作為企業級數據管理和分析的基礎架構,對于提高企業數據驅動決策的能力至關重要。

數倉的基本原理

1、數據集成:數據倉庫匯集來自不同源系統的數據,這些數據可能在格式、結構、甚至含義上存在差異。通過ETL(提取、轉換、加載)過程,數據被整合成一致的格式并存入數據倉庫,消除冗余和不一致性。
2、面向主題:數據倉庫組織數據的方式是圍繞主題進行的,而不是像操作型數據庫那樣按事務處理要求。每個主題代表一個分析領域,如客戶、產品、銷售等,便于用戶從特定業務視角進行分析。
3、歷史數據存儲:數據倉庫保存大量的歷史數據,不僅包括當前數據,還有過去的詳細數據,這對于時間序列分析和趨勢預測至關重要。
4、讀優化:與在線事務處理(OLTP)系統相反,數據倉庫設計為支持復雜的查詢和分析操作(在線分析處理,OLAP),這意味著它更側重于讀取效率而非寫入速度。
5、數據分層:為了提高效率和管理復雜性,數據倉庫通常采用分層架構,如貼源層、中間層(也稱作DWD,明細數據層)、匯總層(DWS,數據集市層)等。這樣的層次結構有助于數據的重用、減少重復計算,并且使得問題定位和修復更加高效。
6、星型/雪花型模型:這是兩種常見的數據倉庫模型,它們通過事實表和維度表的結構來組織數據,便于進行多維度分析。星型模型有一個中心的事實表,周圍是一系列維度表;雪花型模型則是維度表進一步規范化。
7、元數據管理:元數據是關于數據的數據,包括數據的來源、轉換規則、數據質量信息等。良好的元數據管理對于維護數據倉庫的可理解性和可維護性至關重要。
8、安全性與訪問控制:數據倉庫中往往包含敏感的業務數據,因此實施嚴格的安全策略和訪問控制機制是必要的,確保只有授權用戶才能訪問數據。
綜上所述,數據倉庫的基本原理涉及數據的整合、組織、存儲、訪問以及管理,以支持高效的企業級數據分析和決策制定。

數倉架構

一、基本概念
數據倉庫(Data Warehouse)是一個為數據分析而設計的企業級數據管理系統。它可集中、整合多個信息源的大量數據,并通過數據分析為企業提供決策支持,幫助企業改進業務流程、提高產品質量等。

二、核心框架
數倉架構通常包括以下幾個核心框架:

?1) 數據采集:

  • 數據通過不同的工具和技術(如DataX、Sqoop、Flume等)從各種業務系統和數據源中采集并導入到數據倉庫中。
  • 數據采集過程可能涉及數據的抽取、轉換和加載(ETL)操作,以確保數據的一致性和準確性。

?2) 數據存儲:

  • 數據倉庫采用高效的數據存儲技術(如HDFS、Hive等)來存儲和管理海量數據。
  • 數據存儲層通常包括多個層次,如ODS(Operational Data Store,操作數據存儲)、DWD(Data Warehouse Detail,數據倉庫明細層)、DWS(Data Warehouse Service,數據倉庫服務層)等,以滿足不同的數據處理和分析需求。

?3) 數據處理:

  • 數據處理層負責對采集到的數據進行清洗、轉換、聚合等操作,以生成可用于分析的數據集。
  • 處理過程可能包括數據去重、缺失值填充、異常值處理等步驟,以確保數據的準確性和可靠性。

?4) 數據分析:

  • 數據分析層提供各種分析工具和技術(如SQL查詢、數據挖掘、機器學習等),以便用戶能夠深入挖掘數據中的潛在價值。
  • 數據分析結果可用于支持企業的決策制定、業務流程優化、產品改進等方面。

?5) 數據可視化:

  • 數據可視化層將處理好的數據以圖表、圖像等形式展示給用戶,幫助用戶更直觀地理解數據中的規律和趨勢。
  • 可視化工具(如Superset、Tableau等)能夠提供豐富的交互功能,使用戶能夠自由地探索和分析數據。

三、數倉分層結構
數倉分層結構是數倉架構的重要組成部分,它有助于清晰地劃分數據的處理流程和分析層次。一般來說,數倉分層結構包括以下幾個層次:

?1) ODS層(Operational Data Store):

  • 臨時存儲層,是接口數據的臨時存儲區域,為后一步的數據處理做準備。
  • 數據粒度最細,通常與源系統數據同構,主要目的是簡化后續數據加工處理的工作。

?2) DWD層(Data Warehouse Detail):

  • 數據明細層,用于存儲清洗后的明細數據。
  • 保持和ODS層一樣的數據粒度,并提供一定的數據質量保證。DWD層會對數據進行清理、整合、規范化等操作,以提高數據的可用性和易用性。

?3) DWS層(Data Warehouse Service):

  • 數據服務層(或稱為匯總數據層),用于存儲輕度匯總后的數據。
  • 基于DWD層上的基礎數據,整合匯總成分析某一個主題域的服務數據,一般是寬表。DWS層應覆蓋80%的應用場景,為數據產品和數據分析提供所需的數據支持。

?4) ADS層(Application Data Service):

  • 數據應用層,用于存儲最終面向用戶的數據產品。
  • 該層的數據通常是基于DWS層數據進行進一步的加工和計算得到的,以滿足用戶的具體需求。

?5) DIM層(Dimension):

  • 公共維度層,用于存儲數據分類的維度信息。
  • 如果維表過多,也可針對維表設計單獨一層。維表層主要包含高基數維度數據和低基數維度數據兩類。

四、數倉架構的優勢

  1. 提高數據質量:通過數據清洗和轉換過程,確保數據的準確性和一致性。
  2. 提升分析效率:分層結構有助于清晰地劃分數據處理流程和分析層次,提高分析效率。
  3. 降低維護成本:通過模塊化設計和分層管理,降低系統的復雜性和維護成本。
  4. 支持決策制定:提供全面的數據歷史視圖和實時數據分析能力,支持企業決策制定和業務運營。

綜上所述,數倉架構是一個復雜而高效的系統結構,它通過數據采集、存儲、處理、分析和可視化等環節,為企業提供全面的數據支持和分析能力。

數據倉庫分層(層級劃分),每層做什么?分層的好處?

數據倉庫分層是一種設計原則,旨在通過將數據處理和存儲結構化為多個層次,以提高數據處理的效率、可維護性和易用性。典型的分層模型包括以下幾層,每層有其特定的目標和作用:

1、貼源層(Operational Data Store, ODS)或原始數據層(Raw Layer):
目標:此層存儲從源系統中直接抽取的數據,幾乎未經任何處理,保留了數據的原始狀態。
作用:作為數據的初始著陸區,為后續處理提供基礎數據,便于回溯和審計。
2、明細數據層(Detail Layer 或 Data Warehouse Layer, DWD):
目標:對貼源層的數據進行清洗、轉換和標準化,消除數據不一致性,但依然保持詳細的粒度。
作用:提供干凈、統一的明細數據,供后續分析和匯總使用。
3、匯總層(Aggregation Layer 或 Data Mart Layer, DWS):
目標:基于明細數據層,通過預計算生成匯總表,如按時間段、地區、產品等維度進行聚合。
作用:加速查詢性能,因為復雜查詢可以直接從匯總數據中獲取結果,而不需要遍歷大量明細數據。
4、應用層(Presentation Layer 或 Report Layer, DWM):
目標:根據業務需求定制數據視圖,為報表、儀表板或特定分析需求準備數據。
作用:直接服務于最終用戶,提供易于理解、易于查詢的業務數據,支持決策制定。

分層的好處:

  1. 復雜問題簡單化:通過分步驟處理,每層專注于解決特定的數據處理任務,易于理解和維護。
  2. 減少重復開發:中間層的數據可以被多個上層應用復用,避免了重復計算和數據處理。
  3. 數據血緣追蹤:分層有助于清晰地追蹤數據從原始狀態到最終應用的轉換過程,便于問題定位。
  4. 統一數據口徑:確保數據的一致性和準確性,提供統一的數據出口。
  5. 數據隔離與靈活性:業務變更或數據源調整不會直接影響上層應用,增加了系統的穩定性和靈活性。
  6. 提高查詢性能:通過匯總和預計算,減少大數據量的實時處理,加快查詢響應速度。
  7. 增強數據管理與安全性:分層管理便于數據備份、恢復和安全控制,不同層可以實施不同的訪問權限策略。

綜上,數據倉庫的分層設計是實現高效、可靠、易于維護的數據分析平臺的關鍵策略。

數據分層是根據什么?

一、數據產生的特征
數據特征:數據分層法是根據數據產生的特征(如時間、位置、原因、性質等)將數據劃分為若干組的方法。其中,特征是分層的主要依據。例如,可以按不同時間、不同班次、使用設備的種類、原材料的進料時間、原材料成分、檢查手段、使用條件、不同缺陷項目等多種特征進行分層。這種分層方法有助于將復雜的數據集簡化為更易于管理和分析的小集合。
二、實際應用場景
?1) 質量管理:在質量管理中,數據分層法常用于將性質相同、在同一條件下收集的數據歸納在一起,以便進行比較分析。例如,在制造業中,可以將生產過程中產生的數據按不同工序、不同設備、不同時間段等進行分層,以識別出影響產品質量的關鍵因素。(來源:百度知了好學)
?2) 數據倉庫:在構建數據倉庫時,分層的概念也尤為重要。數據倉庫通常被劃分為底層(數據源層)、中間層(數據清洗層)和頂層(數據分析層)。這種分層結構有助于清晰地了解數據來源和目標,以及數據的處理過程,從而提高數據處理效率和降低成本。(來源:百度開發者中心)
三、分層法的優勢

  • 提高數據質量:通過分層處理,可以對數據進行清洗、轉換和驗證等操作,確保數據的準確性和一致性。
  • 提升分析效率:分層結構有助于將復雜的數據集簡化為更易于理解和分析的小集合,從而提高分析效率。
  • 降低維護成本:通過模塊化設計和分層管理,可以降低系統的復雜性和維護成本。

綜上所述,數據分層是根據數據的特征或屬性將數據劃分為若干組或層次的方法。這種方法在質量管理、數據倉庫等多個領域都有廣泛的應用,并且對于提高數據質量、提升分析效率和降低維護成本等方面都具有顯著的優勢。

數倉分層的原則與思路

分層原則:
?1) 明確職責與目標:每一層都應該有清晰的職責劃分和目標,比如ODS層負責原始數據的接收,DWD層專注于數據清洗和轉化,DWS層負責數據匯總,而ADS層則關注業務應用和報表展示。
?2) 穩定性與靈活性并重:在保證數據層的穩定性的同時,也要考慮系統的靈活性,以便應對業務需求的變化。分層不應過度復雜,要確保能夠快速適應新的數據處理需求。
?3) 減少耦合性:各層之間應盡量減少直接依賴,降低層間耦合度,使得修改或添加某一層時不會對其他層造成過大影響。
?4) 優化數據流:數據流動應遵循從底層到高層的邏輯,減少不必要的數據回流,確保數據處理鏈路高效有序。
?5) 重用性:設計通用的中間層數據,促進數據的復用,減少重復計算,提高開發效率。
?6) 可追溯性:維護良好的元數據管理,確保數據血緣的可追溯,便于問題定位和數據質量監控。
思路:
?1) 自下而上設計:從數據源開始,逐步向上構建數據處理和分析層。每上一層都是基于下一層的處理結果,逐步抽象和匯總數據。
?2) 模塊化與標準化:將數據處理過程模塊化,遵循統一的命名規則和數據標準,便于管理和擴展。
?3) 性能與成本平衡:在設計時考慮存儲成本和計算資源的優化,如合理使用分區、索引、壓縮等技術提高查詢性能,同時控制成本。
?4) 靈活擴展:設計時留有擴展余地,確保未來數據量增加或業務需求變化時,數倉架構能夠平滑升級。
?5) 業務驅動:分層設計應緊密圍繞業務需求,每一層的構建都應服務于具體的業務分析場景,確保數據倉庫的實用性和價值。
?6) 持續迭代:數據倉庫是一個持續演進的系統,設計時應考慮未來可能的變更,采用敏捷方法,不斷迭代優化。
遵循這些原則和思路,可以構建出既滿足當前業務需求,又具備良好擴展性和維護性的數據倉庫分層架構。

知道數倉建模常用模型嗎?區別、優缺點?

數倉建模中常用的模型主要包括維度模型、范式模型、Data Vault模型以及Anchor模型。這些模型各有其特點、區別、優點和缺點,下面將分別進行闡述:

一、維度模型
1. 定義與特點
維度模型是數據倉庫領域廣泛應用的建模方法,由數據倉庫領域大師Ralph Kimball所倡導。它以分析決策的需求出發構建模型,構建的數據模型為分析需求服務。維度模型按數據組織類型又可劃分為星型模型、雪花模型和星座模型。

  • 星型模型:主要是維表和事實表,以事實表為中心,所有維度直接關聯在事實表上,呈星型分布。
  • 雪花模型:在星型模型的基礎上,維度表上又關聯了其他維度表。這種模型維護成本高,性能方面也較差,所以一般不建議使用。
  • 星座模型:是對星型模型的擴展延伸,多張事實表共享維度表。

2. 優點

  • 不需要完整的梳理企業業務流程和數據,實施周期根據主題邊界而定,容易快速實現demo。
  • 便于理解,提高查詢性能,對稱并易擴展。
  • 針對性強,主要應用于數據倉庫構建和OLAP引擎低層數據模型。

3. 缺點

  • 在某些復雜場景下,可能難以全面覆蓋所有分析需求。

二、范式模型
1. 定義與特點

  • 范式模型是借鑒關系型數據庫理論的建模方法,要求滿足一定的范式規則(如3NF、4NF等),以確保數據的規范性和一致性。

2. 優點

  • 數據結構清晰,規范性強,有助于減少數據冗余。
  • 有助于提高數據的一致性和準確性。

3. 缺點

  • 在大數據環境下,范式模型可能會導致查詢性能下降,因為需要進行更多的表連接操作。
  • 實施周期較長,需要全面梳理企業業務流程和數據流。

三、Data Vault模型
1. 定義與特點
Data Vault模型是一種面向企業數據倉庫的建模方法,它強調數據的可審計性、靈活性和可擴展性。Data Vault模型通過構建Hub(中心表)、Link(鏈接表)和Satellite(衛星表)來組織數據。
2. 優點

  • 數據可審計性強,有助于追蹤數據的變化歷史。
  • 靈活性和可擴展性好,能夠適應企業業務的變化。

3. 缺點

  • 模型復雜度較高,需要較高的建模能力。
  • 在某些場景下,查詢性能可能不如維度模型。

四、Anchor模型
1. 定義與特點

  • Anchor模型是一種相對較新的數據倉庫建模方法,它結合了維度模型和Data Vault模型的優點,旨在提供一種更加靈活、可擴展且易于維護的數據倉庫建模方案。Anchor模型通過構建Anchor表(類似于維度表)和Transaction表(類似于事實表)來組織數據。

2. 優點

  • 靈活性和可擴展性好,能夠適應企業業務的變化。
  • 易于維護,降低了數據倉庫的維護成本。

3. 缺點

  • 作為一種相對較新的建模方法,其在實際應用中的案例和經驗相對較少。
  • 模型的復雜度和實施難度可能較高。

星型模型和雪花模型的區別?應用場景?優劣對比

星型模型和雪花模型是數據倉庫中兩種常見的維度模型設計方法,它們在數據組織結構、冗余度、查詢效率、可擴展性及正規化程度上有所區別,適用于不同的應用場景。

區別:
1、數據組織結構:

  • 星型模型:中心是一個大的事實表,周圍直接連接多個維度表,每個維度表通過外鍵直接與事實表關聯,形成星狀結構,結構簡單直觀。
  • 雪花模型:在星型模型的基礎上進一步規范化維度表,將某些維度表拆分成更小的表,形成層次結構,因此查詢時可能需要更多的表連接。

2、數據冗余:

  • 星型模型:允許數據冗余,維度表中可能存在重復信息,以減少查詢時的表連接操作,提高查詢效率。
  • 雪花模型:通過規范化減少了數據冗余,維度表更加精簡,但可能需要在查詢時通過更多表的連接來獲取完整信息。

3、查詢效率:

  • 星型模型:由于維度表直接連接到事實表,減少了表連接的數量,查詢響應時間較快,更適合OLAP(在線分析處理)。
  • 雪花模型:查詢時可能需要更多表的連接操作,因此查詢效率相對較低,但在數據量不大時影響有限。

4、可擴展性與正規化:

  • 星型模型:設計和實現相對簡單,不嚴格遵守數據庫正規化原則,擴展時直接添加新的維度表即可。
  • 雪花模型:結構復雜,遵循較高的正規化程度,擴展時需考慮維度表間的依賴關系,但更有利于數據的一致性和減少存儲空間。

應用場景:
?1) 星型模型:適用于對查詢速度要求較高、數據量大、分析維度相對固定的場景,如銷售分析、市場報告等,因為它簡化了查詢邏輯,提高了性能。
?2) 雪花模型:適合于需要進行復雜維度分析、對數據冗余敏感、數據模型需要高度擴展和維護的數據倉庫環境,如金融、保險行業的詳細分析場景,因為它的結構更清晰,數據更規范。
優劣對比:
優點:

  • 星型模型:查詢效率高,易于理解和維護,擴展靈活。
  • 雪花模型:數據冗余低,存儲空間節省,適合復雜維度分析。

劣勢:

  • 星型模型:數據冗余,可能占用更多存儲空間,規范化程度低。
  • 雪花模型:查詢性能較低,ETL復雜度高,維護成本相對較大。

總的來說,選擇星型模型還是雪花模型取決于具體業務需求、數據規模、查詢性能要求以及對數據冗余的容忍度。在實際應用中,通常需要權衡這些因素來決定最合適的模型。

數倉建模有哪些方式?

數倉建模有多種方式,每種方式針對不同的業務需求和分析目標設計,以下是幾種常見的數倉建模方法:

1、關系模式建模:

  • 這種建模方式遵循數據庫設計的范式(如第一范式至第五范式),目的是減少數據冗余和提高數據一致性。它適用于需要高度規范化數據結構的場景。

2、實體關系(ER)模型:

  • 抽象事務為實體、屬性和關系,使用圖形化方式表示數據關聯和業務描述,適用于系統設計初期理解業務結構和數據關系。

3、維度建模:

  • 包括星型模型、雪花模型、星座模型等,側重于優化查詢性能和簡化數據倉庫結構。星型模型圍繞一個事實表和多個維度表構建,雪花模型在此基礎上對維度表進一步規范化,星座模型則涉及多個星型模型的組合,用于處理復雜的多維分析需求。

4、Data Vault模型:

  • 一種高度正規化且靈活的模型,由Hubs(存儲業務鍵)、Links(表示實體間關系)和Satellites(存儲描述性屬性和歷史)組成,適合處理大規模數據和長期數據存儲需求,以及頻繁變化的數據源。

5、Anchor模型:

  • 類似于Data Vault,但更加強調業務事件的捕獲和時間序列數據的管理,提供一種高度靈活和可擴展的方式來描述業務活動。

6、寬表模型:

  • 在某些場景下,為了減少查詢時的JOIN操作,會將多個維度屬性合并到一個寬表中,犧牲一定的數據規范性以提高查詢效率,常見于實時數倉或大數據處理平臺。

7、第三范式(3NF)建模:

  • 雖然不是專門針對數據倉庫,但在某些場景下,為了減少數據冗余和提高數據一致性,也會采用符合第三范式的設計原則。

選擇合適的建模方式需要綜合考慮數據量、查詢復雜度、業務需求的變動性、性能要求以及團隊的技能和經驗等多個因素。在實際應用中,企業往往會根據具體情況靈活運用這些模型,甚至結合多種模型來構建數據倉庫。

數倉建模的流程?

數倉建模的流程通常包含以下幾個關鍵步驟,這些步驟旨在確保模型能夠準確反映業務需求,并且能夠高效地支持數據分析和報告功能:

1、需求分析:
與業務用戶和利益相關者進行深入交流,理解他們的需求和期望,包括所需報告、關鍵業績指標(KPIs)、數據保留期限等。
分析業務流程,理清部門間的關系,明確各部門的業務程序。
2、業務建模:
根據業務部門劃分,識別業務實體和它們之間的關系。
確定業務需求的指標、維度、粒度和數據保留政策。
3、概念模型設計:
將業務需求抽象為概念模型,使用實體、屬性和關系來表示,不涉及具體的技術細節。
明確數據域和主題,為邏輯建模打下基礎。
4、邏輯模型設計:
將概念模型轉化為邏輯模型,選擇合適的建模方法(如維度建模、實體關系建模)。
定義事實表、維度表及其之間的關聯關系,明確數據項和數據類型。
5、物理模型設計:
根據邏輯模型和目標數據庫平臺的特性,設計物理模型。
考慮存儲優化、分區策略、索引設計等,以提升數據加載和查詢性能。
6、數據源調研與整合:
調研現有數據源,評估數據質量和可用性。
設計ETL(提取、轉換、加載)流程,將數據從源系統整合到數據倉庫中。
7、維度與事實表設計:
維度表設計包括維度的層次、屬性以及緩慢變化維度的處理策略。
事實表設計關注度量的選擇、粒度的確定和數據匯總方式。
8、數倉分層:
根據需要設計數據倉庫的分層結構(如ODS、DWD、DWS、ADS),以支持不同類型的分析需求和提高查詢性能。
9、模型驗證與優化:
實施模型并進行測試,驗證是否滿足業務需求。
根據測試反饋進行必要的調整和優化。
10、元數據管理:
建立元數據管理體系,記錄數據來源、轉換規則、數據質量規則等信息,便于管理和維護。
11、文檔與培訓:
編寫模型文檔和用戶手冊,對業務用戶和技術團隊進行培訓。
整個建模過程是一個迭代的過程,可能需要根據實際情況和反饋進行多次調整,直至模型能夠有效支撐企業的數據分析和決策支持。

維度建模的步驟,如何確定這些維度的

一、維度建模的步驟
1、需求調研

  • 目的:了解業務需求,明確數據倉庫的建設目標和用戶需求。
  • 方法:通過訪談、問卷調查、需求文檔等方式收集業務需求。

2、數據探查

  • 目的:了解源系統的數據結構、數據質量、數據量等信息。
  • 內容:包括源系統的存儲類型、數據量大小、每日新增量、是否有物理刪除、是否有增量時間戳等。

3、高層模型設計

  • 目的:構建總線架構的圖形化模型,確定設計范圍和事實表以及維度表的粒度。
  • 內容:包括聲明粒度,即精確定義事實表中的一行數據表示什么,以及設計高層圖形化模型來表示業務過程的維度和事實表。

4、開發詳細的維度模型
步驟:

  • 確定維度及其屬性:根據業務需求確定需要分析的維度,如時間、地區、用戶等,并定義這些維度的屬性。
  • 確定事實:識別業務中的度量值,如訂單金額、下單次數等,這些度量值將存儲在事實表中。
  • 確定緩慢變化維度技術:針對維度表的每個屬性,定義在源系統數據發生變化時如何處理這些變化。
  • 建立詳細的表設計文檔:包括屬性/事實的名稱、描述、示例值、每個維度屬性的緩慢變化維度類型標識等。

5、審查驗證模型

  • 目的:確保模型滿足業務需求,并具備良好的性能和可擴展性。
  • 方法:與業務用戶和團隊成員進行評審,記錄并解決問題,形成設計文檔。

二、如何確定維度
確定維度是維度建模過程中的關鍵步驟,以下是一些確定維度的原則和方法:

1、基于業務需求

  • 根據業務需求確定需要分析的維度。例如,如果業務需要分析不同時間段的銷售情況,那么時間就是一個重要的維度。

2、描述業務事實

  • 維度的主要作用是描述業務事實,主要表示“誰、何處、何時”等信息。因此,在確定維度時,要思考這些維度如何幫助描述業務事實。

3、考慮后續分析需求

  • 在確定維度時,要考慮后續的分析需求。例如,如果需要分析哪個地區的訂單量最多,那么地區就是一個必要的維度。

4、選擇最小粒度

  • 在聲明粒度時,應盡可能選擇最小粒度,以應對各種各樣的需求。例如,在訂單事實表中,一行數據表示一個訂單中的一個商品項,而不是整個訂單。

5、參考行業最佳實踐

  • 可以參考同行業或類似行業的最佳實踐來確定維度。這些實踐通常基于豐富的經驗和成功案例,有助于避免常見的錯誤和陷阱。

6、與業務用戶溝通

  • 與業務用戶保持密切的溝通是確定維度的關鍵。通過了解他們的業務需求和分析習慣,可以更加準確地確定維度和屬性。

綜上所述,維度建模的步驟包括需求調研、數據探查、高層模型設計、開發詳細的維度模型和審查驗證模型。在確定維度時,需要基于業務需求、描述業務事實、考慮后續分析需求、選擇最小粒度、參考行業最佳實踐和與業務用戶溝通等原則和方法。

維度建模和范式建模區別

設計理念與目標

  • 范式建模:遵循關系數據庫設計的范式(特別是第三范式,3NF),追求數據的規范化,以減少數據冗余和確保數據的一致性。它適用于事務處理系統(OLTP),關注數據的插入、更新和刪除效率。
  • 維度建模:面向分析處理(OLAP),注重數據的快速查詢和分析效率,采用星型或雪花模型等結構,允許一定程度的數據冗余來提高查詢性能。它圍繞業務過程和分析需求構建,更注重用戶對數據的直觀理解和使用。

數據結構

  • 范式建模:數據表按照范式原則設計,通常意味著更多的表和復雜的表間關聯,以保持數據的原子性和最小冗余。
  • 維度建模:以事實表為中心,周圍是多個維度表,通常通過簡單的外鍵關聯,形成星型或雪花結構,這簡化了查詢路徑,但可能在維度表中引入冗余數據。

查詢性能

  • 范式建模:由于數據高度規范化,執行復雜的分析查詢時可能需要較多的表連接,影響查詢性能。
  • 維度建模:通過預計算匯總數據和減少表連接,提供更快的查詢響應時間,更適合復雜的多維度分析。

數據冗余

  • 范式建模:盡量避免數據冗余,以保持數據的一致性。
  • 維度建模:在事實表中可能引入冗余數據,以減少查詢時的計算負擔,提高效率。

應用場景

  • 范式建模:適合于需要頻繁更新和事務處理的系統,如核心業務系統。
  • 維度建模:廣泛應用于數據倉庫和商務智能領域,支持報表生成、多維分析和數據挖掘。

設計方法

  • 范式建模:采用自頂向下的設計方法,從整體概念模型逐步細化。
  • 維度建模:通常采用自底向上的設計,從具體的業務過程和分析需求出發構建模型。

維護與擴展

  • 范式建模:由于數據結構較為復雜,可能需要更細致的維護和數據一致性管理。
  • 維度建模:雖然在擴展時需要考慮維度的重新定義,但整體上結構清晰,便于理解和維護。

綜上所述,選擇范式建模還是維度建模,需根據具體的業務需求、分析場景和性能要求來決定。在現代數據倉庫實踐中,兩者往往不是絕對隔離的,而是可以根據需要相互借鑒,例如,在數據倉庫的不同層級(如ODS、DW、DM)中結合使用。

引用:https://www.nowcoder.com/discuss/353159520220291072

通義千問、文心一言

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

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

相關文章

【Symfony社區全接觸】深入探索文檔與支持資源

標題:【Symfony社區全接觸】深入探索文檔與支持資源 Symfony是一個強大的PHP框架,擁有一個活躍的開發者社區和豐富的文檔資源。這些資源對于學習和使用Symfony至關重要。本文將詳細介紹Symfony的文檔和社區支持,包括官方文檔、社區論壇、郵件…

如何計算弧線彈道的落地位置

1)如何計算弧線彈道的落地位置 2)Unity 2021 IL2CPP下使用Protobuf-net序列化報異常 3)編譯問題,用Mono可以,但用IL2CPP就報錯 4)Wwise的Bank在安卓上LoadBank之后,播放沒有聲音 這是第393篇UWA…

02 數據加工層 如何搭建用戶與內容的標準規范體系

你好,我是周大壯。 01 講我們提到了個性化流量分發體系的四個階段,并著重講解了數據采集階段的內容。那么,這一講我們主要圍繞數據加工階段的內容進行詳細講解。 在課程開始之前,我們先舉一個場景進行說明。 近年來&#xff0c…

靜態方法與實例方法的區別

靜態方法與實例方法的區別 1、靜態方法(Static Methods)1.1 調用方式1.2 訪問權限 2、實例方法(Instance Methods)2.1 調用方式2.2 訪問權限 3、總結 💖The Begin💖點點關注,收藏不迷路&#x1…

大數據面試題之數倉(2)

目錄 維度表和事實表的區別? 什么是ER模型? OLAP、OLTP解釋(區別)三范式是什么,舉些例子 維度設計過程,事實設計過程 維度設計中有整合和拆分,有哪些方法,并詳細說明 事實表設計分幾種,每一種都是如何在業…

【C++】解決 C++ 語言報錯:Invalid Array Index

文章目錄 引言 無效數組索引(Invalid Array Index)是 C 編程中常見且危險的錯誤之一。當程序試圖使用不合法的索引訪問數組時,就會發生無效數組索引錯誤。這種錯誤不僅會導致程序崩潰,還可能引發不可預測的行為和安全漏洞。本文將…

【PB案例學習筆記】-28制作一個右鍵菜單

寫在前面 這是PB案例學習筆記系列文章的第28篇,該系列文章適合具有一定PB基礎的讀者。 通過一個個由淺入深的編程實戰案例學習,提高編程技巧,以保證小伙伴們能應付公司的各種開發需求。 文章中設計到的源碼,小凡都上傳到了gite…

任天堂稱未來第一方游戲不會使用生成式AI

雖然EA、育碧、暴雪、Embracer等西方游戲廠商都大力支持生成式AI技術,但日本老牌游戲公司任天堂并不會追隨這一步伐。任天堂已經確認該公司未來的第一方游戲不會使用生成式AI技術。 在公司最近的投資人問答會上,任天堂描繪了公司未來游戲愿景。在談到AI技…

安徽農業大學學報

《安徽農業大學學報》是安徽農業大學主辦,國內外公開發行的綜合性農業科學類學術期刊,主要刊登茶葉科學、動植物遺傳育種、作物栽培、植物保護、林學、動物科學與動物醫學、水產科學、生物學、土壤學、農業生態與環境科學、園藝學、食品科學、農業機械工…

Oracle PL / SQL變量值

常量 要聲明常量,請在類型說明符之前放入關鍵字CONSTANT。 常量必須在其聲明中初始化。 每次輸入塊或子程序時,都會初始化常量。 以下代碼顯示如何定義REAL類型的常量,并為常量指定一個不可更改的值5。 DECLARE n_real CONSTANT RE…

51單片機第27步_單片機工作在睡眠模式

重點學習51單片機工作在睡眠模式。 1、進入“睡眠模式”的方法 通過將PCON寄存器中的PDWN置1,則CPU會進入“睡眠模式”。在“睡眠模式”中,晶振將停止工作,因此,定時器和串口都將停止工作,只有外部中斷繼續工作。如果單片機電源…

LeetCode——第 404 場周賽

周賽 三角形的最大高度 給你兩個整數 red 和 blue,分別表示紅色球和藍色球的數量。你需要使用這些球來組成一個三角形,滿足第 1 行有 1 個球,第 2 行有 2 個球,第 3 行有 3 個球,依此類推。 每一行的球必須是 相同 …

Go語言--自定義函數

定義格式 函數構成代碼執行的邏輯結構。在 Go語言中,兩數的基本組成為:關鍵字 func、函數名、參數列表、返回值、所數體和返回語句。 函數定義說明: func:函數由關鍵字func開始聲明FuncName:函數名稱,根據約定,數名首字母小寫即為private…

淺談 Linux 中的 core dump 分析方法

文章目錄 一、什么是 core dump二、發生 core dump 的原因1. 空指針或非法指針引起 core dump2. 數組越界或指針越界引起的 core dump3. 數據競爭導致 core dump4. 代碼不規范 三、core dump 分析方法1. 啟用 core dump2. 觸發 core dump2-1. 因空指針解引用而崩潰2-2. 通過 SI…

圖形編輯器基于Paper.js教程06:鼠標畫圓與橢圓

繪制橢圓與圓形:利用Paper.js進行交互式圖形設計 在Web應用中實現交互式圖形繪制功能,對于提高用戶體驗至關重要,尤其是在設計和藝術相關的應用中。Paper.js是一款強大的JavaScript庫,專門用于處理矢量圖形,它提供了一…

智能語音門鎖:置入NV170D語音芯片ic 打造便捷生活新體驗

一、智能門鎖語音芯片開發背景 隨著科技的飛速發展,傳統門鎖的局限性日益凸顯,無法滿足現代人對高效、安全生活的需求。在這樣的時代背景下,智能門鎖應運而生,它不僅繼承了傳統門鎖的基本功能,更通過融入先進的科技元素…

商標的近似分辯,商標起名稱時注意!

曾有過網友發來商標名稱,普推知商標老楊說有近似,然后網友起過新名稱還是存有近似,或者加字,后面加的通用詞,與先有商標名稱也是近似。 “良信健康”這個名稱健康是行業通用詞,加成健康后變成四個字&#x…

出現 images and labels...0 found, xx missing, 0 empty, 0 corrupt 解決方法

目錄 1. 問題所示2. 原理分析3. 解決方法1. 問題所示 訓練VOC的數據的時候出現如下問題: val: Scanning /home/l228/huoyanhao/yolov5/datasets/VOC/images/VOCdevkit/VOC2007/2007_val images and labels...0 found, 2510 missing, 0 empty, 0 corrupt: 100%|███████…

HTTP協議深入

1.了解web和網絡基礎 有客戶端和服務端雙方參與交互 客戶端發送請求:request 服務端根據請求給出響應:response 請求通過URL來指定要獲取都得資源 響應內容可以是HTML網頁,或者用json表示的數據或者其他二進制文件內容 Web使用一種名為HTTP的協議作為規范&…

jEasyUI 添加分頁組件

jEasyUI 添加分頁組件 jEasyUI(jQuery EasyUI)是一個基于jQuery的用戶界面插件集合,它為用戶提供了一系列的UI組件,如菜單、窗口、數據網格等,以簡化Web頁面的開發。分頁組件是jEasyUI中的一個重要部分,它允許用戶在處理大量數據時,將數據分頁顯示,提高用戶體驗和數據…