目錄
- 篩選上下文是什麼
- CALCULATE()
- Excel樞紐分析表的明細表
- 簡單來說
- 篩選上下文是什麼
- 篩選上下文是來自於英文單字「context」,本意是語境、前後關係、文章的上下文
- 如果我們才剛開始接觸,可以先把篩選上下文想像成是經過了篩選之後的環境、整體情況
- 實際上,篩選上下文是數據模型中的基礎表經過所有篩選器的交互之後,最終得到的可見數據(先看過就好,後面再慢慢理解)
- 基礎表:數據模型中存在的表
- 篩選器:可以想像成是篩選的條件
- 可見數據:參與計算的數據
- CALCULATE()
- CALCULATE()是貫穿DAX語法的最重要的函數,讓我們看看CALCULATE()跟篩選上下文之間的關係吧
- CALCULATE()的作用:在已修改的篩選上下文中計算第一個參數的表達式
- CALCULATE()的參數
CALCULATE(<expression>[, <filter1> [, <filter2> [, …]]])
- 第一參數是我們要計算的表達式,被稱為計算器參數
- 第二參數是可選可重複的,這些參數被稱為內部篩選器參數
- 下面我們試著以例子來看看CALCULATE()的參數使用方式,如果我們有一個表,是一個人在2022年下半年的支出部分數據,如圖

- 如果我們只放第一參數
// CALCULATE(<表達式>)
量值1 = CALCULATE(SUM('支出'[交易金額])) - 我們要計算的表達式,即是對交易金額做加總
- 這時在Power BI中使用資料表這個視覺效果,放入一級分類與量值1

- 如果我們再放入第二參數
// CALCULATE(<表達式>, <內部篩選器>)
量值2 = CALCULATE(SUM('支出'[交易金額]), '支出'[日期] >= DATE(2022, 10, 1)) - 我們一樣要計算交易金額的加總,而這個計算會是基於日期在2022-10-01之後的數據來做計算的
- 將量值2放入資料表

- 實際上,量值是在放入了視覺效果中才會開始計算的,也就是CALCULATE()是在放入了視覺效果中才開始計算的,內部篩選器會與外部計值環境交互後生成了篩選上下文,在這個已修改的篩選上下文中計算第一參數的表達式
- 外部計值環境:對某個函數而言,在其開始計算時就已經存在的計值環境
- 我們試著以例子來看看CALCULATE()與篩選上下文的關係
- 以量值2在一級分類為交通的那一列(row)為例,如圖中紅框

- 在這邊再展示一次量值2的程式碼,以方便觀看下列的步驟
// CALCULATE(<表達式>, <內部篩選器>)
量值2 = CALCULATE(SUM("支出"[交易金額]), "支出"[日期] >= DATE(2022, 10, 1));
- 對於CALCULATE()來說,外部計值環境只有一個篩選器為
'支出'[一級分類] = "交通",其來自於資料表的列標籤 - 初始篩選器:資料表(矩陣)的列標籤、篩選窗格、交叉分析篩選器、圖表聯動(順帶一提,之後的篇章會再多做提及)
- 對於CALCULATE()來說,內部篩選器只有一個篩選器為
'支出'[日期] >= DATE(2022, 10, 1) - 這時候所有的篩選器交互,也就是內部篩選器會與外部計值環境的篩選器交互,成為篩選器組合為
'支出'[一級分類] = "交通" && '支出'[日期] >= DATE(2022, 10, 1) - 篩選器組合會對數據模型中的基礎表做篩選,得出最終的可見數據,也就是已修改的篩選上下文
- 在已修改的篩選上下文中計算第一個參數的表達式
SUM('支出'[交易金額]) - 因此一級分類為交通的那一列,在量值2的數值即為1420
- 對於CALCULATE()來說,外部計值環境只有一個篩選器為
- Excel樞紐分析表的明細表
- 在Excel中,如果我們對樞紐分析表的單元格雙擊就會出現明細表,其實就是該單元格的篩選上下文
- 建立樞紐分析表

- 在樞紐分析表中的單元格以滑鼠雙擊

- 雙擊後跑出來的明細表,其實就是樞紐分析表中我們所雙擊的單元格的篩選上下文,也就是該單元格最終的可見數據,因此對交易金額做加總後會得到1420

- 建立樞紐分析表
- 簡單來說
- 篩選上下文:數據模型中的基礎表經過所有篩選器的交互之後,最終得到的可見數據
- CALCULATE():在已修改的篩選上下文中計算第一個參數的表達式
















