透過計算欄,您可以將新資料加入模型中已有的資料表。 而不是從資料來源查詢並將值載入新的資料行,您會建立一個用於定義資料行值的資料分析運算式(DAX)公式。 在 Power BI Desktop 中,計算欄是使用 報表 檢視、數據表 檢視或 模型 檢視中的新增欄功能來建立。
不同於在 Power Query 編輯器中使用 [新增自定義欄] 作為查詢一部分所建立的自定義欄,計算欄是在 報表檢視、表格檢視 或 模型檢視 中建立的,這些欄是基於您已載入至模型中的數據。 例如,您可能會選擇串連兩個不同但相關資料表中兩個不同資料行的值、執行加法,或擷取子字串。
你建立的計算欄位會像其他欄位一樣出現在 欄位 清單中,但它們會有一個特殊的圖示,顯示其數值是公式的結果。 您可以為資料行指定任何名稱,並將其加入報表視覺效果,就像是其他欄位一樣。
Power BI Desktop 的螢幕擷取畫面,其中顯示 [欄位] 檢視中的計算欄。
計算結果欄使用 DAX 來計算結果,這是可處理類似 Power BI Desktop 中關聯式資料的公式語言。 DAX 所包含的程式庫是由 200 個以上的函式、運算子和建構函式所組成。 這為建立公式提供極大的彈性,可計算幾乎所有資料分析需求的結果。 若要深入了解 DAX,請參閱了解 Power BI Desktop 中的 DAX 基本概念。
DAX 公式類似 Excel 公式。 事實上,DAX 有許多函數與 Excel 相同。 不過,DAX 函數旨在處理報表中以互動方式分割或篩選的資料,就像在 Power BI Desktop 中一樣。 在 Excel 中,資料表中的每個資料列可以有不同公式。 在 Power BI 中,當你為新欄位建立 DAX 公式時,它會計算表格中每一列的結果。 系統會視需要重新計算資料行值,例如當基礎資料重新整理及值變更時。
以下舉例說明
Jeff 是 Contoso 的出貨經理,他想要建立報表,以顯示不同城市的出貨編號。 Jeff 擁有一個 Geography 資料表,內含用於城市和州的個別欄位。 但是,Jeff 希望報表能夠將城市和州值顯示為同一個資料列上的單一值。 目前,Jeff 的 Geography 資料表沒有其想要的欄位。
Power BI Desktop 的螢幕擷取畫面,其中顯示欄位檢視中的地理篩選。
但透過計算結果欄,Jeff 可以將 City 資料行中的城市與 State 資料行中的州放在一起。
Jeff 右鍵按Geography表格,然後選擇新增資料行。 Jeff 接著在公式列中輸入下列 DAX 公式:
CityState = [City] & "," & [State]
這個公式會建立一個名為 CityState 的新資料行。 針對 Geography 資料表中的每個資料列,則會擷取 City 資料行中的值、新增逗號和空格,然後串連 State 資料行中的值。
Jeff 現在有想要的欄位。
Power BI Desktop 螢幕擷取畫面,顯示在 [欄位] 檢視中的 [地理] 篩選器內確認的市州。
Jeff 現在可以將該欄位連同出貨編號一起新增至報表畫布。 不需要太多努力,Jeff 現在擁有一個可新增至幾乎任何視覺化類型的 CityState 欄位。 當 Jeff 建立新的地圖時,Power BI Desktop 已了解如何讀取新資料行中的城市和州值。
Power BI Desktop 的螢幕擷取畫面,顯示於地圖視覺化呈現的資料。
表達式上下文
表達式上下文屬性決定使用者上下文感知的 DAX 表達式(例如以下示例)是否能被動態評估。
使用者具備情境感知的計算欄位,使多語言語意模型能實現獨特情境,例如資料轉換。 更多資訊請參閱資料翻譯。
表達式上下文屬性可以設定為計算欄位屬性。
實體化與效能
計算欄位物質化應納入效能優化考量。 應遵循 DAX 撰寫最佳實務,以避免計算欄位評估時產生昂貴的操作。
- 未實體化的計算欄位會對查詢效能產生負面影響,因為數值必須在查詢時推導出。
- 實體化的計算欄位可能會負面影響刷新效能,因為數值必須在刷新時推導。
下表展示了 資料表儲存模式 與支援的表達式上下文設定的組合。
| 儲存體模式 | 標準(預設) | 使用者背景 |
|---|---|---|
| Import | 實體化 | 未具象化 |
| OneLake 上的 Direct Lake | 不適用 | 未實體化(預覽) |
| SQL 上的 Direct Lake | 不適用 | 不適用 |
| DirectQuery | 未具象化 | 未具象化 |
| Dual | 實體化(匯入)、非實體化(直接查詢) | 未具象化 |
| Power BI 語意模型上的 DirectQuery | 未具象化 | 不適用 |
Note
OneLake 語意模型中對 Direct Lake 計算欄位的支援仍在預覽階段。 目前僅支援 使用者上下文 表達式上下文。 欄位會在查詢時被評估,且不會實際出現。 因為這些計算資料行不會實體化,因此無法用於建立關聯。 不參考使用者感知函式或安全欄位的表達式,行為與其他 DAX 計算欄位相同。
相關內容
本文在此簡要介紹了計算結果欄。 如需詳細資訊,請參閱以下資源:
若要下載範例檔案並取得有關如何建立更多欄位的逐步教學,請參閱教學:在 Power BI Desktop 中建立計算欄。
若要深入了解 DAX,請參閱了解 Power BI Desktop 中的 DAX 基本概念。
若要深入了解使用者在查詢中建立的欄位,請參閱建立自訂欄。