2023-08-30|閱讀時間 ‧ 約 5 分鐘

Power BI - 篩選上下文(context)與CALCULATE函數的計算概念

目錄

  1. 篩選上下文是什麼
  2. CALCULATE()
  3. Excel樞紐分析表的明細表
  4. 簡單來說


  1. 篩選上下文是什麼
    • 篩選上下文是來自於英文單字「context」,本意是語境、前後關係、文章的上下文
    • 如果我們才剛開始接觸,可以先把篩選上下文想像成是經過了篩選之後的環境、整體情況
    • 實際上,篩選上下文是數據模型中的基礎表經過所有篩選器的交互之後,最終得到的可見數據(先看過就好,後面再慢慢理解)
      • 基礎表:數據模型中存在的表
      • 篩選器:可以想像成是篩選的條件
      • 可見數據:參與計算的數據
  1. 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));
      1. 對於CALCULATE()來說,外部計值環境只有一個篩選器為'支出'[一級分類] = "交通",其來自於資料表的列標籤
        • 初始篩選器:資料表(矩陣)的列標籤、篩選窗格、交叉分析篩選器、圖表聯動(順帶一提,之後的篇章會再多做提及)
      2. 對於CALCULATE()來說,內部篩選器只有一個篩選器為'支出'[日期] >= DATE(2022, 10, 1)
      3. 這時候所有的篩選器交互,也就是內部篩選器會與外部計值環境的篩選器交互,成為篩選器組合為'支出'[一級分類] = "交通" && '支出'[日期] >= DATE(2022, 10, 1)
      4. 篩選器組合會對數據模型中的基礎表做篩選,得出最終的可見數據,也就是已修改的篩選上下文
      5. 在已修改的篩選上下文中計算第一個參數的表達式SUM('支出'[交易金額])
      6. 因此一級分類為交通的那一列,在量值2的數值即為1420
  2. Excel樞紐分析表的明細表
    • 在Excel中,如果我們對樞紐分析表的單元格雙擊就會出現明細表,其實就是該單元格的篩選上下文
      1. 建立樞紐分析表
      2. 在樞紐分析表中的單元格以滑鼠雙擊
      3. 雙擊後跑出來的明細表,其實就是樞紐分析表中我們所雙擊的單元格的篩選上下文,也就是該單元格最終的可見數據,因此對交易金額做加總後會得到1420
  3. 簡單來說
    • 篩選上下文:數據模型中的基礎表經過所有篩選器的交互之後,最終得到的可見數據
    • CALCULATE():在已修改的篩選上下文中計算第一個參數的表達式
分享至
成為作者繼續創作的動力吧!
© 2024 vocus All rights reserved.