OBIEE – 維度建模



維度建模提供了一套用於資料倉庫設計的方法和概念。根據資料倉庫顧問Ralph Kimball的說法,維度建模是一種用於資料庫的設計技術,旨在支援資料倉庫中的終端使用者查詢。它面向易理解性和效能。他認為,雖然面向事務的實體關係模型(ER)對於事務捕獲非常有用,但應避免將其用於終端使用者交付。

維度建模總是使用事實表和維度表。事實是數值,可以根據事實值進行聚合和分析。維度定義事實值的層次結構和描述。

維度表

維度表儲存描述事實表中物件的屬性。維度表有一個主鍵,唯一標識每個維度行。此鍵用於將維度表與事實表關聯。

維度表通常是反規範化的,因為它們不是為了執行事務而建立的,而只是用於詳細分析資料。

示例

在下面的維度表中,客戶維度通常包括客戶姓名、地址、客戶 ID、性別、收入群體、教育水平等。

客戶ID 姓名 性別 收入 教育 宗教
1 Brian Edge 2 3 4
2 Fred Smith 3 5 1
3 Sally Jones 1 7 3

事實表

事實表包含稱為度量的數值。事實表包含兩種型別的列——事實和指向維度表的外部鍵。

事實表中的度量分為三種類型:

  • 可加性 - 可以跨任何維度相加的度量。

  • 不可加性 - 無法跨任何維度相加的度量。

  • 半可加性 - 可以跨某些維度相加的度量。

示例

時間ID 產品ID 客戶ID 銷售數量
4 17 2 1
8 21 3 2
8 4 1 1

此事實表包含時間維度、產品維度、客戶維度的外部索引鍵和度量值銷售數量。

假設一家公司向客戶銷售產品。每次銷售都是公司發生的事實,事實表用於記錄這些事實。

常見的事實包括:銷售數量、利潤率、銷售收入等。維度表列出諸如客戶、時間、產品等因素,我們希望透過這些因素來分析資料。

現在,如果我們考慮上述事實表和客戶維度,那麼還會有產品和時間維度。有了這個事實表和這三個維度表,我們可以提出諸如以下問題:2010 年賣給男性客戶多少手錶?

維度表和事實表之間的區別

維度表和事實表之間的功能區別在於,事實表儲存我們想要分析的資料,而維度表儲存允許我們查詢資料所需的資訊。

聚合表

聚合表包含可以使用不同的聚合函式計算的聚合資料。

聚合函式是一種函式,其中多個行的值根據某些條件分組在一起作為輸入,以形成具有更重要意義或度量的單個值。

常見的聚合函式包括:

  • 平均值()
  • 計數()
  • 最大值()
  • 中位數()
  • 最小值()
  • 眾數()
  • 總和()

這些聚合表用於效能最佳化,以便在資料倉庫中運行復雜的查詢。

示例

您可以儲存具有聚合資料的表,例如按年(1 行)、季度(4 行)、月(12 行),現在您必須進行資料比較,例如,每年只需要處理 1 行。但是,在非聚合表中,將處理所有行。

MIN 返回給定列中的最小值
MAX 返回給定列中的最大值
SUM 返回給定列中數值的總和
AVG 返回給定列的平均值
COUNT 返回給定列中值的總數
COUNT (*) 返回表中的行數

Select Avg (salary) from employee where title = ‘developer’。此語句將返回所有職位等於“開發人員”的員工的平均工資。

聚合可以在資料庫級別應用。您可以在資料庫中建立聚合並將其儲存在聚合表中,或者您可以在報表級別動態應用聚合。

注意 - 如果您在資料庫級別儲存聚合,則可以節省時間並提供效能最佳化。

廣告