使用維度

已完成

建立星狀結構描述時,您將擁有維度和事實資料表。 事實資料表包含事件的相關資訊,例如銷售訂單、出貨日期、轉銷商和供應商。 維度資料表會儲存商務實體的詳細資料 (例如產品或時間),並透過關聯性連回事實資料表。

您可以使用階層作為協助您尋找維度資料表中詳細資料的一個來源。 這些階層會透過資料中的自然對數區段形成。 例如,您可以有日期的階層,其中可以將日期分為年、月、週和日。 階層很有用,因為階層可讓您向下切入資料的細節,而不只是查看高層級的資料。

階層

當您建立視覺效果時,Power BI 會自動以階層的形式輸入日期類型的值 (如果資料表尚未標示為日期資料表)。

階層範例的螢幕擷取畫面。

在先前的 Date 資料行中,日期會透過年、季、月和日,以越來越精細的方式顯示。 您也可以手動建立階層。

例如,假設您想要建立依類別和子類別排列的總銷售額的堆疊橫條圖。 若要完成此工作,您可以在 Product 資料表中建立類別和子類別的階層。 若要建立階層,請移至 Power BI 上的 [欄位] 窗格,然後以滑鼠右鍵按一下您想要建立階層的資料行。 選取 [新階層],如下圖所示。

Product 資料表中新階層的螢幕擷取畫面。

接下來,將子類別資料行拖放到您已建立的這個新階層中。 此資料行將會新增為階層的子層級。

[類別名稱階層] 的螢幕擷取畫面,其中已巢狀 [類別名稱] 和 [子類別名稱]。

現在,您可以在 [視覺效果] 窗格中選取堆疊橫條圖來建立視覺效果。 在 [軸] 欄位中,新增類別目錄名稱階層,並在 [值] 欄位中,新增 Total Sales

[軸] 欄位中 [類別名稱階層] 及 [值] 欄位中 [TotalSales] 的螢幕擷取畫面。

您可以根據您想要查看的內容,向下切入視覺效果以同時檢視 [類別] 和 [子類別]。 階層可讓您在單一檢視上查看不斷增加的資料層級。

單一視覺效果上兩個檢視的螢幕擷取畫面。

既然您已經了解階層,您可以更進一步,檢查父子式階層及其在事實資料表和維度資料表之間的多個關聯性中的角色。

父子式階層

在下列範例中,您在資料庫中有一個 Employee 資料表,告訴您有關員工、其經理及其識別碼的重要資訊。 查看這個資料表時,您會注意到 Roy F 已經在 Manager 資料行中重複多次。 如圖所示,多位員工可以有相同的經理,這指出經理和員工之間的階層。

Employee 資料表的螢幕擷取畫面,其中包含 [Employee ID]、[Employee]、[Manager ID] 和 [Manager] 資料行。

Manager 資料行可確定階層,因此是父系,而「子系」則是員工。 在此範例中,您希望能夠看到此階層的所有層級。 Power BI 不會預設為顯示階層的所有層級,因此您必須負責確保您看到此階層的所有層級或將其「扁平化」,讓您可以看到更多資料細微性。

將父子式階層扁平化

根據最上層父系檢視多個子層級的程序稱為將階層扁平化。 在這個程序中,您會在一個資料表中建立多個資料行,以顯示相同記錄中父系到子系的階層式路徑。 您將使用 PATH(),這是一個簡單的 DAX 函數,可傳回每位員工管理路徑的文字版本,而 PATHITEM() 可將此路徑分隔成管理階層的每個層級。

重要

DAX 尚未涵蓋在內,但是其將位於另一個模組中。 此函式包含在此節中,因為其可說明階層。 如果以這種方式使用 DAX 會造成混淆,請參閱 DAX 模組,然後稍後再返回此節。

在資料表上,移至 [模型] 索引標籤,然後選取 [新增資料行]。 在產生的資料編輯列中,輸入下列函式,如此會建立員工和經理之間的文字路徑。 此動作會在 DAX 中建立計算結果欄。

Path = PATH(Employee[Employee ID], Employee[Manager ID])

用於將父子式階層壓平合併的 DAX 量值螢幕擷取畫面。

員工和經理之間的已完成路徑會出現在新的資料行中,如下列螢幕擷取畫面所示。

Power BI 中 PATH 函式資料表的螢幕擷取畫面。

如果您查看 Roger M,識別碼的路徑為 1010 | 1011 | 1013,這表示 Roger M (識別碼 1013) 的上一個層級是他的經理 Pam H (識別碼 1011),而 Pam H 的上一個層級則是她的經理 Roy F (識別碼 1010)。 在此資料列中,Roger M 位於階層的最下層,也就是子層級,而 Roy F 位於階層的最上層,也就是父層級。 此路徑是針對每位員工建立的。 若要將階層扁平化,您可以使用 PATHITEM 函式來分隔每個層級。

若要分別檢視階層的所有三個層級,您可以輸入下列方程式,利用與先前相同的方式建立四個資料行。 您將使用 PATHITEM 函式擷取位於階層之對應層級中的值。

  • 第 1 層 = PATHITEM(Employee[Path],1)
  • 第 2 層 = PATHITEM(Employee[Path],2)
  • 第 3 層 = PATHITEM(Employee[Path],3)

使用 PATHITEM 函式的螢幕擷取畫面。

完成之後,請注意您的資料表中現在會有階層的每個層級。 Roy F 位於階層的最上層,當您瀏覽第 2-3 層時,請注意經理和員工彼此對應。

將父子式階層壓平合併的螢幕擷取畫面。

現在,您可以在 [欄位] 窗格上建立一個階層,如同先前所做的一樣。 以滑鼠右鍵按兩下 [層級 1],因為這是第一個階層層級,然後選取 [ 新增階層]。 然後,將 [層級 2 ] 和 [ 層級 3 ] 拖放到此階層中。

員工層級的新階層螢幕擷取畫面。

您現在已經成功地將階層扁平化,讓您可以檢視個別的層級。

以前您曾經考慮過與事實資料表僅有一個關聯性的維度。 不過,確實會發生維度資料表與事實資料表有多個關聯性的情況。

角色扮演維度

角色扮演維度與事實資料表具有多個有效的關聯性,這表示相同的維度可以用來篩選資料的多個資料行或資料表。 因此,您可以根據需要擷取的資訊,以不同的方式篩選資料。 此主題很複雜,因此只會在此節中介紹。 使用角色扮演維度需要複雜的 DAX 函數,這將在稍後的章節中討論。

模型中角色扮演維度的螢幕擷取畫面。

上述視覺效果會顯示 Calendar、Sales 和 Order 資料表。 Calendar 是維度資料表,而 Sales 和 Order 是事實資料表。 維度資料表有兩個關聯性:一個是與 Sales 的關聯性,另一個是與 Order 的關聯性。 此範例屬於角色扮演維度,因為 Calendar 資料表可以用來將 Sales 與 Order 中的資料分組。 如果您想要建立一個視覺效果,其中 Calendar 資料表會參考 Order 和 Sales 資料表,則 Calendar 資料表會充當角色扮演維度。