# 필터 함수

**• ALL: 테이블 또는 열의 필터 제거**

1. **함수 정의** : 
1. ALL 함수는 특정 열이나 **테이블에서 설정된 필터를 무시**하고, **모든 데이터를 참조**할 수 있도록 합니다. 예를 들어, **필터가 걸린 상태에서 특정 열이나 테이블의 전체 합계 또는 평균 등을 구해야 할 때 유용**합니다.

2. **기본 구문** :
2. ALL(<TableName or ColumnName>)

3. **매개변수** :
3. TableName: 전체 테이블의 필터를 무시하고 싶을 때 사용합니다.
3. ColumnName: 특정 열에 대한 필터만 무시하고 싶을 때 사용합니다.

4. **예시 코드** :
4. Sales 테이블 예시 데이터

![Image](https://upload.cafenono.com/image/slashpagePost/20241111/153501_CO65bg7uTnF4gtzJxi?q=80&s=1280x180&t=outside&f=webp)

- **특정 열에 대한 필터를 무시하고 합계 구하기**
- ProductCategory별로 판매 금액 합계를 구하고, 동시에 전체 ProductCategory를 무시하고 전체 판매 합계도 구하기.
- **TotalSales := SUM(Sales[SalesAmount])
- TotalSales_All := CALCULATE(SUM(Sales[SalesAmount]), ALL(Sales[ProductCategory]))**
- **TotalSales: ProductCategory가 특정 값으로 필터링된 상태에서의 판매 합계**입니다.
- **TotalSales_All: ProductCategory 열에 설정된 필터를 무시하고, 모든 카테고리의 판매 합계**를 반환합니다.
- 계산 과정
- 예를 들어, **ProductCategory = A로 필터**링된 경우:
- **TotalSales = 100 + 150 = 250**
- **TotalSales_All = 100 + 150 + 200 + 100 + 250 + 200 = 1,000** (모든 ProductCategory의 판매 합계를 구하기 때문에 A 카테고리만의 필터를 무시합니다)
- 결과 요약:
- **ProductCategory = A**일 때:
- **TotalSales = 250
- TotalSales_All = 1,000 (필터 무시)**
- **ProductCategory = B**일 때:
- **TotalSales = 200 + 100 = 300
- TotalSales_All = 1,000 (필터 무시)**

- **테이블의 필터를 무시하고 퍼센티지 구하기**
- ProductCategory가 전체 판매 금액에서 차지하는 비율을 구하기.
- PercentageOfTotalSales := 
- DIVIDE(
-    SUM(Sales[SalesAmount]),
-    CALCULATE(SUM(Sales[SalesAmount]), **ALL(Sales)**)
- )

•** ALLEXCEPT: 지정한 열 제외 필터 제거**

1. **함수 정의** : 
1. ALLEXCEPT 함수는 DAX에서 **특정 열을 제외하고 모든 필터를 제거하여 계산**할 때 유용합니다. 즉, **특정 열은 필터에 남겨두고, 나머지 필터는 무시**할 수 있게 해 주는 함수입니다. 이 함수는 컨텍스트에서 예외를 두고, 특정 열의 값에 집중해야 하는 경우 자주 사용됩니다.

2. **기본 구문** :
2. ALLEXCEPT(table, column1, [column2], ...)

3. **매개변수** :
3. table: 필터를 제거할 테이블입니다. 이 테이블의 필터가 모두 초기화되며, 예외로 지정된 열들만 필터가 유지됩니다.
3. column1, column2, ...: 필터를 유지할 열들입니다. 여러 열을 지정할 수 있으며, 지정된 열들은 원래의 필터 컨텍스트를 유지합니다.

4. **예시 코드** :
4. PRODUCT 테이블

![Image](https://upload.cafenono.com/image/slashpagePost/20241113/160849_Aq1miBeVXsZCUvIleH?q=80&s=1280x180&t=outside&f=webp)

     SALES 테이블

![Image](https://upload.cafenono.com/image/slashpagePost/20241113/160902_z2tDFir3T6JKmGM6CH?q=80&s=1280x180&t=outside&f=webp)

     연도별 특정 제품의 매출 니다. 

     예를 들어, 필터 컨텍스트가 **ProductID = 1 (제품 A)와 Year = 2023 **일때,  

     **매출 비율**을 구한다고 가정해 보겠습니다.
     **Sales_Percentage = 
         DIVIDE(
             SUM(Sales[SalesAmount]), // 현재 필터 컨텍스트에서의 매출 합계
             CALCULATE(
                 SUM(Sales[SalesAmount]), // 필터 제거 후 특정 열만 남겨두고 매출 합계 계산
                 ALLEXCEPT(Sales, Sales[ProductID]) // ProductID 필터는 유지, 나머지 필터는 제거
             )
         )**
     • **각 부분의 역할**
     ** (1) SUM(Sales[SalesAmount])**
       현재 **필터 컨텍스트가 ProductID = 1과 Year = 2023**이므로, 

       이 부분은 **2023년의 ProductID = 1 (제품 A)의 매출 합계**를 계산합니다.
       SalesAmount = **1000이므로 이 값이 결과로 반환**됩니다.
     ** (2) CALCULATE(SUM(Sales[SalesAmount]), ALLEXCEPT(Sales, Sales[ProductID]))**
       **ALLEXCEPT(Sales, Sales[ProductID])는 ProductID 필터만 유지**하고, 

       Year에 대한 필터를 포함한 모든 다른 필터는 제거합니다.
       따라서 Year 필터가 제거되면서 **ProductID = 1인 모든 연도의 매출이 계산 대상**이 됩니다.
       ProductID = 1에 대한 SalesAmount는 2023년에는 1000, 2024년에는 1500이므로, 

       이 값들을 합산한 **1000 + 1500 = 2500이 반환**됩니다.
      **(3)** **DIVIDE(...)**
       **DIVIDE(1000, 2500)이므로, 결과는 0.4 (또는 40%)**가 됩니다.

1. **요약** :
1. ALLEXCEPT 함수는 **필요한 열에 대한 필터를 유지**하면서도, **다른 필터 영향을 없애고 싶은 경우 매우 효과적인 함수**입니다.

• **ALLSELECTED: 보고서에서 선택한 필터만 유지**

1. **함수 정의** :
1. ALLSELECTED 함수는 **필터링된 데이터의 특정 컨텍스트를 유지**하면서 **추가적인 계산을 가능**하게 하는 함수입니다. 다른 ALL 관련 함수와 유사하게 필터를 무시하지만, **ALLSELECTED는 보고서의 상위 레벨에서 사용자가 설정한 필터는 유지하는 특징**이 있습니다. 이를 통해 **"사용자가 보고서에서 선택한 필터만 반영된" 계산을 수행**할 수 있습니다.

2. **기본 구문** :
2. ALLSELECTED([Column])
2. ALLSELECTED(Table)

3. **매개변수** :
3. Column: 특정 컬럼의 모든 값에 대해 필터링을 무시하지만, **상위 보고서 레벨에서 사용자가 선택한 필터는 유지**합니다.
3. Table: 전체 테이블에 대해 필터링을 무시하지만, **상위 보고서 레벨의 필터는 유지**합니다.

4. **예시 코드 **:
4. 예를 들어, "매출"이라는 테이블이 있고, 이 테이블에는 "Region"(지역)과 "Sales"(판매액) 컬럼이 있다고 가정하겠습니다. 만약 보고서에 **Region 필터를 걸어 "East"와 "West" 지역만 선택한 상태**에서 **특정 제품의 매출 합계를 구하려고 할 때, ALLSELECTED를 사용하면 보고서의 필터(선택된 지역)만 반영하여 계산**할 수 있습니다.

![Image](https://upload.cafenono.com/image/slashpagePost/20241113/163404_R33O6Kq5GF1HLiryAE?q=80&s=1280x180&t=outside&f=webp)

     **Sales Sum with ALLSELECTED = CALCULATE(
         SUM(Sales[Sales]),
         ALLSELECTED(Sales[Region])
     )**
     • **각 계산 단계**

      (1) **기본 보고서 필터**
       보고서 필터에서 Region의 East와 West를 선택했기 때문에,

       ALLSELECTED는 이 필터를 반영한 상태로 계산을 수행하게 됩니다. 

       이렇게 하면 **North와 South는 계산에서 제외**됩니다.

      (2) **ALLSELECTED 적용**
       **ALLSELECTED가 적용된 상태에서 Product A와 Product B의 합계**를 구합니다.

![Image](https://upload.cafenono.com/image/slashpagePost/20241113/163422_iDH1xFR8V4fMxSSxBV?q=80&s=1280x180&t=outside&f=webp)

      • **결과적으로 ALLSELECTED가 Region에 적용**되었으므로 **North와 South는 무시**되고, 

      보고서에서 선택된** East와 West만 포함하여 계산한 값이 반환**됩니다. 

1. **요약** :
1. ALLSELECTED는 보고서 페이지에서 **사용자가 적용한 Region 필터(East와 West)만 유지**합니다.
1. 최종 계산 결과는 **각 Product별로 East와 West 지역의 합계만 포함**합니다.

•** CALCULATE: 필터 컨텍스트 변경 후 계산**

1. **함수 정의** :
1. CALCULATE는 주어진 수식을 평가하는 동안 **지정된 필터를 적용해 계산을 수행**합니다. **필터를 추가하거나 기존 필터를 변경하여 데이터 집합에서 특정 조건에 맞는 값만을 선택하는 데 활용**됩니다.

2. **기본 구문** :
2. CALCULATE(<expression>, <filter1>, <filter2>, ...)

3. **매개변수** : 
3. expression: 계산의 중심이 되는 수식입니다. 이 수식에 필터가 적용되면서 원하는 값을 계산합니다.
3. filter: 필터는 **하나 이상의 조건을 지정**할 수 있으며, 이 조건을 통해 expression에 포함할 데이터를 제한합니다. 예를 들어, 특정 연도, 지역, 제품에 대한 조건을 필터로 지정할 수 있습니다. 여러 개의 필터를 사용하면 각 조건이 중첩되어 더욱 세밀한 데이터를 추출할 수 있습니다.

4. **예시 코드** :
4. Sales 테이블에 Year, Region, Product, Amount 컬럼이 포함된 데이터를 사용해 설명하겠습니다.
4. 예제 데이터

![Image](https://upload.cafenono.com/image/slashpagePost/20241114/145528_7pc8gOqDGV48VEf8bl?q=80&s=1280x180&t=outside&f=webp)

     **(1) 특정 제품(A)의 판매액 계산**
      **CALCULATE(
        SUM(Sales[Amount]),
        Sales[Product] = "A"
      )**
      설명: **Product가 "A"인 경우만 필터링하여 Amount의 합계를 계산**합니다.
      계산 과정:
      Product = "A"인 행은 1, 3, 4, 6번째입니다.
      해당 행의 Amount 합계는 100 + 200 + 250 + 350 = 900
      **결과: 900**
    ** (2) 2019년, 서울 지역에서의 판매액 계산**
     ** CALCULATE(
        SUM(Sales[Amount]),
        Sales[Year] = 2019,
        Sales[Region] = "서울"
      )**
      설명: **Year가 2019이고 Region이 "서울"인 경우에 한해 Amount 합계를 계산**합니다.
      계산 과정:
      Year = 2019이고 Region = "서울"인 행은 1, 2번째입니다.
      해당 행의 Amount 합계는 100 + 150 = 250
      **결과: 250**
     **(3) 서울 지역 전체 판매액 계산**
     ** CALCULATE(
        SUM(Sales[Amount]),
        Sales[Region] = "서울"
      )**
      설명: Region이 "서울"인 경우에 한해 Amount 합계를 계산합니다.
      계산 과정:
      Region = "서울"인 행은 1, 2, 4, 5번째입니다.
      해당 행의 Amount 합계는 100 + 150 + 250 + 300 = 800
      **결과: 800**
     **(4) 모든 제품(A와 B)에서 2021년 판매액 계산**
      **CALCULATE(
        SUM(Sales[Amount]),
        Sales[Year] = 2021
      )**
      설명: Year가 2021인 모든 행의 Amount 합계를 계산합니다.
      계산 과정:
      Year = 2021인 행은 5, 6번째입니다.
      해당 행의 Amount 합계는 300 + 350 = 650
      **결과: 650**
    ** (5)전체 제품의 판매액을 제품 필터 없이 계산**
     **CALCULATE(
        SUM(Sales[Amount]),
        ALL(Sales[Product])**
      )
      설명: ALL(Sales[Product])을 통해 Product 필터를 제거하여 전체 Amount 합계를 계산합니다.
      계산 과정:
      모든 행의 Amount 합계는 100 + 150 + 200 + 250 + 300 + 350 = 1350
      **결과: 1350**

• **FILTER: 조건에 맞는 테이블 반환**

1. **함수 정의** :
1. FILTER 함수는 **지정된 테이블에서 특정 조건을 만족하는 행을 필터링하여 결과로 반환**하는 함수입니다. 이를 통해 **원하는 조건에 맞는 데이터만 선택**할 수 있습니다. FILTER 함수는 다른 계산 함수와 함께 사용되어 더욱 유용하게 활용될 수 있습니다.

2. **기본 구문** :
2. FILTER(<table>, <expression>

3. **매개 변수** :

     <table>: 필터링하려는 테이블입니다. 

     <expression>: 각 행에 적용할 필터 조건을 정의하는 표현식입니다. **TRUE인 행만 결과에 포함**됩니다.

1. **예시 코드** :
1. Sales라는 테이블이 있고, 다음과 같은 데이터가 있다고 가정해 보겠습니다.

![Image](https://upload.cafenono.com/image/slashpagePost/20241114/152425_iultqaXPmsCLk5lVUU?q=80&s=1280x180&t=outside&f=webp)

     **(1) 기본 예시 **

      이제, FILTER 함수를 사용해서 **Revenue가 1,000 이상인 행들만 선택**해 보겠습니다.
      **FILTER(Sales, Sales[Revenue] >= 1000)**
      이 코드는 Sales 테이블에서 Revenue 값이 1,000 이상인 행들만 반환합니다. 

      위 코드가 실행되면 다음과 같은 결과가 반환됩니다.
      결과 :

![Image](https://upload.cafenono.com/image/slashpagePost/20241114/152442_QVKZDIqodbCO2JN0Y5?q=80&s=1280x180&t=outside&f=webp)

      즉, **조건을 만족하는 행(Revenue >= 1000)만 결과**로 남게 됩니다.
     **(2) 응용 예시 **- 필터링된 데이터로 총 매출 합계 계산하기
      필터링된 데이터에 대해 **총 Revenue 합계를 구하고 싶다면, CALCULATE와 함께 사용**합니다.
      **CALCULATE(SUM(Sales[Revenue]), FILTER(Sales, Sales[Revenue] >= 1000))**
      결과 :
      이 코드를 실행하면 필터링된 결과에서 Revenue의 합계가 계산됩니다:
      Revenue 값이 1,000 이상인 행들: 1,500 (B) + 1,200 (D) + 2,000 (E) = 4,700  
      따라서, **결과는 4,700**이 됩니다.

1. **요약** :
1. 이렇게 FILTER 함수를 사용하여 **특정 조건에 맞는 데이터를 필터링하고, 그 결과를 이용해 계산**을 할 수 있습니다.

• **KEEPFILTERS: 기존 필터 유지**

1. **함수 정의** :
1. KEEPFILTERS 함수는 특정 계산에서 새로운 필터를 추가할 때 기존 필터를 유지하는 역할을 합니다. 이 함수는 복잡하고 정확한 필터 컨텍스트를 만들 때 유용합니다.
1. 보통 DAX에서 CALCULATE 같은 필터 함수를 사용할 때 특정 열이나 테이블에 새 필터를 지정하면, 해당 필터가 기존 필터 컨텍스트를 대체합니다. 하지만 KEEPFILTERS를 사용하면 기존 필터를 대체하는 대신, 기존 필터 위에 새로운 필터를 추가하여 더 정교한 필터링이 가능합니다. 이 기능은 특히 계산된 측정값을 만들 때 유용하며, 기존의 필터를 유지하면서 추가 조건을 더하고 싶을 때 사용됩니다.

2. **기본 구문** :
2. KEEPFILTERS(<expression>)

3. **매개 변수** :
3. expression: KEEPFILTERS를 적용할 DAX 표현식으로, 일반적으로 필터가 적용된 테이블 표현식입니다.

4. **예시 코드** :
4. Sales라는 판매 데이터를 담은 테이블이 있고, 이 테이블에는 ProductCategory, Region, SalesAmount 열이 있습니다. **특정 카테고리의 판매액을 계산**하되, **사용자가 적용한 지역 필터는 그대로 유지**하고 싶다고 가정해 봅시다.

![Image](https://upload.cafenono.com/image/slashpagePost/20241115/165450_CTYXpTm12OiVtd3deg?q=80&s=1280x180&t=outside&f=webp)

    ** (1) KEEPFILTERS 없이 CALCULATE 함수 사용**
      전자제품(Electronics)의 판매액을 계산하는 측정값을 만들지만, 

      이때 Region 필터가 무시되는 경우를 봅시다.
      **SalesSpecificCategory = **

           **CALCULATE(SUM(Sales[SalesAmount]), Sales[ProductCategory] = "Electronics")**
      만약 Region 열에서 North가 필터링 된 상황이라면, 이 필터가 무시되고 

      전체 Electronics 카테고리에 대한 판매액이 계산됩니다.
      **계산 결과: 570 (100 + 150 + 200 + 120)**
      이 값은 **모든 Region을 포함한 Electronics 카테고리의 총합**입니다. 

      **Region 필터가 무시되기 때문**입니다.
     **(2) KEEPFILTERS 사용**
      KEEPFILTERS를 사용하여 Region 필터가 유지되도록 설정해 봅시다.
      **SalesSpecificCategory = **

          **CALCULATE(**

**                SUM(Sales[SalesAmount]), **

**                KEEPFILTERS(Sales[ProductCategory] = "Electronics")**

**          )**
      이제 **Region이 North로 필터링된 상황**이라면, 

      Region 필터가 유지된 상태에서 ProductCategory가 "Electronics"로 필터링됩니다.
      **계산 결과: 300 (100 + 200)**
      이 경우, **Region = North 필터가 유지**되고, 

      그 안에서 **ProductCategory = Electronics만 필터링**되기 때문에, 

      North 지역의 전자제품 판매액 합계인 300만 반환됩니다.

     **(3) 결과 설명** : 
      • **KEEPFILTERS 없이**: **기존 필터(Region = North)가 무시**되고, 

      "Electronics"만 필터링되어 모든 지역의 전자제품 판매액이 계산됩니다.
      • **KEEPFILTERS 사용: Region = North 필터가 유지되고, **

**      그 안에서 "Electronics"가 추가로 필터링**됩니다.

1. **요약** :
1. KEEPFILTERS는 이처럼 **기존의 필터를 존중하며 추가 조건을 적용하고 싶을 때 사용**됩니다.

• **RANK: 순위 계산**

1. **함수 정의** :
1. RANK 함수는 **특정 값이나 조건에 따라 데이터를 정렬하고 순위를 계산하는 기능을 제공**합니다. 이 함수는 주로 특정 조건에 따라 데이터의 순위를 계산하고자 할 때 사용됩니다.

2. **기본 구문** :
2. RANK(<ties>[, <relation> or <axis>][, <orderBy>][, <blanks>][, <partitionBy>][, <matchBy>][, <reset>])

3. **매개변수** :
3. <ties>: 동일한 값(동점)이 있을 때 이를 어떻게 처리할지 설정합니다.
3. <relation> or <axis>: 순위를 매길 기준 또는 축을 지정합니다. 이 값이 지정되지 않으면 기본적으로 특정 테이블 또는 열을 기준으로 합니다.
3. <orderBy>: 순서를 오름차순 또는 내림차순으로 지정할 수 있습니다.
3. <blanks>: 빈 값을 어떻게 처리할지 결정하는 옵션입니다. 빈 값을 포함하거나 제외할 수 있습니다.
3. <partitionBy>: 순위 매김의 범위를 지정하는 데 사용됩니다. **특정 열을 기준으로 그룹화**하거나 데이터의 일부만 순위를 매길 수 있습니다.
3. <matchBy>: 특정 조건에 맞는 데이터만 순위를 매기고 싶을 때 사용합니다.
3. <reset>: 특정 조건에 따라 순위를 다시 시작하게 할 수 있습니다.

4. **예시 코드** :

![Image](https://upload.cafenono.com/image/slashpagePost/20241115/171735_PaHdEXOvkpClPUAIee?q=80&s=1280x180&t=outside&f=webp)

     전체 순위(Overall Rank)와 카테고리별 순위(Category Rank)를 계산하는 함수는 다음과 같습니다:
     • **전체 순위 계산:
     Overall Rank = 
     RANK(
         DENSE,
         ORDERBY([Score], DESC)
     )**
     • **카테고리별 순위 계산:
     Category Rank = 
     RANK(
         DENSE,   -- 동일한 값을 가진 항목에 대해 연속 순위 적용
         ORDERBY([Score], DESC),  -- 점수 기준으로 내림차순 정렬
         PARTITIONBY([Category])   -- 카테고리별로 그룹화하여 순위 계산
     )**
     이 두 함수를 사용하여 계산된 결과는 다음과 같습니다:

![Image](https://upload.cafenono.com/image/slashpagePost/20241115/171752_inPA894qVHNUfLdmYi?q=80&s=1280x180&t=outside&f=webp)

     **결과 해석** :
     • **Overall Rank (전체 순위):**
     Charlie가 95점으로 1위
     Alice와 Frank가 90점으로 공동 2위
     Bob이 85점으로 3위
     Eve가 80점으로 4위
     David가 70점으로 5위
     • **Category Rank (카테고리별 순위):**
     카테고리 A: Charlie가 1위, Alice와 Frank가 공동 2위
     카테고리 B: Bob이 1위, Eve가 2위
     카테고리 C: David가 1위 (유일한 학생)
     **DENSE 방식을 사용하여 동점자가 있을 때 다음 순위를 건너뛰지 않도록** 했습니다. 

     또한, **ORDERBY를 사용하여 점수를 내림차순**으로 정렬했고, 

     카테고리별 순위에서는 **PARTITIONBY를 사용하여 각 카테고리 내에서만 순위를 계산**했습니다.

• **REMOVEFILTERS: 모든 필터 제거**

1. **함수 정의** :
1. REMOVEFILTERS 함수는 **특정 열이나 테이블에 적용된 필터를 제거하는 데 사용**됩니다. 주로 **필터 컨텍스트를 초기화하여 계산의 영향을 받지 않도록 할 때 유용**합니다. 

2. **기본 구문** :
2. REMOVEFILTERS([ColumnName])
2. REMOVEFILTERS(TableName)
2. REMOVEFILTERS()

3. **매개 변수** :
3. ColumnName (선택 사항): 특정 열을 지정하여 해당 열의 필터를 제거합니다.
3. TableName (선택 사항): 특정 테이블을 지정하여 해당 테이블의 필터를 제거합니다.
3. (): 매개변수를 생략하면 모든 필터가 제거됩니다.

4. **예시 코드**
4. Sales 테이블

![Image](https://upload.cafenono.com/image/slashpagePost/20241115/174156_Nq426ic0tbda3hwVLL?q=80&s=1280x180&t=outside&f=webp)

     Product 테이블

![Image](https://upload.cafenono.com/image/slashpagePost/20241115/174212_XW0FKCX9ZF0L1FdaFD?q=80&s=1280x180&t=outside&f=webp)

     상황: **특정 카테고리(Electronics)의 필터가 적용된 상태**
     현재 컨텍스트에서 **Product[Category]가 Electronics로 필터**되어 있다고 가정해봅시다. 

     따라서 CALCULATE 함수가 기본적으로 이 필터를 유지한 상태에서 계산됩니다.
    ** (1) 특정 열의 필터 제거: REMOVEFILTERS(Product[Category])**
      이 경우, Product[Category]에 있는 필터(Electronics)를 제거하고, 

      전체 카테고리의 매출 합계를 구하는 예시입니다.
     ** CALCULATE(
          SUM(Sales[Amount]),
          REMOVEFILTERS(Product[Category])
      )**
      **결과** :
      Product[Category]의 필터가 제거되므로 모든 제품의 Sales[Amount]를 합산하게 됩니다.
      모든 Amount 합계 = 200 + 300 + 150 + 400 + 250 + 100 = 1,400
      따라서 **결과는 1,400**이 됩니다.
      **해석** : 

      특정 열의 필터를 제거함으로써, Product[Category]가 Electronics로 필터되어 있더라도 

      **모든 카테고리의 매출 합계를 계산**할 수 있습니다.
     **(2) 특정 테이블의 필터 제거: REMOVEFILTERS(Product)**
      Product 테이블의 모든 필터를 제거하여 매출 합계를 구하는 예시입니다.
      **CALCULATE(
          SUM(Sales[Amount]),
          REMOVEFILTERS(Product)
      )**
      **결과** : 
      Product 테이블 전체의 필터가 제거되므로, 모든 Sales[Amount]의 합계를 계산하게 됩니다.
      모든 Amount 합계 = 200 + 300 + 150 + 400 + 250 + 100 = 1,400
      **결과는 1,400**이 됩니다.
      **해석**: 

      테이블 전체의 필터를 제거하여 **Product와 관련된 모든 필터가 무시된 상태에서 매출 합계를 계산**
     **(3) 모든 필터 제거: REMOVEFILTERS()**
      모든 필터를 제거하여 전체 매출을 계산하는 예시입니다.
     ** CALCULATE(
          SUM(Sales[Amount]),
          REMOVEFILTERS()
      )**
      **결과** :
      모든 필터가 제거된 상태이므로, 마찬가지로 전체 데이터의 Sales[Amount를 합산하게 됩니다.
      모든 Amount 합계 = 200 + 300 + 150 + 400 + 250 + 100 = 1,400
      **결과는 1,400**이 됩니다.
      **해석**: 

      모든 필터가 제거되므로 **Sales와 Product의 모든 필터를 무시하고 전체 매출 합계를 계산**.

1. **요약** :
1. • REMOVEFILTERS는 주로 **특정 열이나 테이블의 필터를 제거하여 데이터를 비교할 때 유용**합니다. 예를 들어, 특정 필터를 제거한 전체 매출과 현재 컨텍스트 매출을 비교하는 계산을 할 수 있습니다.
1. • **REMOVEFILTERS와 ALL 함수의 차이점**은, **ALL은 필터를 제거하는 동시에 전체 테이블을 반환**할 수 있지만 **REMOVEFILTERS는 단순히 필터 제거에 중점**을 둔다는 점입니다.:

• **SELECTEDVALUE: 선택된 값 반환**

1. **함수 정의** :
1. SELECTEDVALUE 함수는 **지정한 열에서 선택된 단일 값을 반환하는 함수**입니다. 이 함수는 **특정 필터 컨텍스트 내에서 하나의 값만 존재할 때 그 값을 반환**하고, **값이 없거나 여러 값**이 있을 때는 **기본값을 반환할 수 있어 편리**합니다. 주로 필터 된 컨텍스트에서 단일 값을 확인할 때 유용하게 사용됩니다.

2. **기본 구문** :
2. SELECTEDVALUE(<columnName>[, <alternateResult>])

3. **매개 변수** :
3. columnName: 함수가 단일 값을 확인할 열입니다. 필터 컨텍스트에 의해 하나의 값만 남아 있을 경우 그 값을 반환합니다.
3. alternateResult: (선택적) 열에 단일 값이 없거나 여러 값이 존재할 때 반환할 값입니다. 생략 시 기본값은 BLANK()입니다.

4. **예시 코드** :
4. Region 테이블

![Image](https://upload.cafenono.com/image/slashpagePost/20241115/175426_uzeJXIxSYpogiXHGi6?q=80&s=1280x180&t=outside&f=webp)

     **(1) 필터링된 단일 값 반환**
      먼저 SELECTEDVALUE 함수로 단일 값이 필터된 경우를 살펴보겠습니다.
     ** Selected Country = SELECTEDVALUE(Region[Country], "Multiple")**
      **설명** :
      필터로 인해 **Country 열에서 South Korea만 선택**된 경우:
      Selected Country는 South Korea를 반환합니다.
      필터링 없이 여러 국가가 선택된 경우:
      Selected Country는 Multiple을 반환합니다.
      필터링 예

![Image](https://upload.cafenono.com/image/slashpagePost/20241115/175444_ekOujemMRqSU62Tbbx?q=80&s=1280x180&t=outside&f=webp)

      이 경우 SELECTEDVALUE는 **South Korea를 반환**합니다.
      다중 선택 시 결과 예

![Image](https://upload.cafenono.com/image/slashpagePost/20241115/175459_3QshSOfZfrS8sxK9X8?q=80&s=1280x180&t=outside&f=webp)

       이 경우 SELECTEDVALUE는** Multiple을 반환**합니다.
     **(2) 기본값 없이 단일 선택된 값 반환**
      이번에는 기본값을 설정하지 않은 경우입니다.
      **Selected Product = SELECTEDVALUE(Region[Country])**
      **설명** :
      필터로 인해 Country 열에 단일 값이 있을 때는 그 값을 반환합니다.
      여러 값이 있을 경우 BLANK()를 반환합니다.
      필터링 예

![Image](https://upload.cafenono.com/image/slashpagePost/20241115/175513_MEt0z5B9Fmp8HzHd8b?q=80&s=1280x180&t=outside&f=webp)

      이 경우 Selected Product는 **Canada를 반환**합니다.
      다중 선택 시 결과 예

![Image](https://upload.cafenono.com/image/slashpagePost/20241115/175526_0yWrHKSittzeCwhiNV?q=80&s=1280x180&t=outside&f=webp)

      이 경우 Selected Product는 **BLANK()를 반환**합니다.
     **(3) 기본값을 활용한 공백 대체 **
      특정 고객이 선택되었는지 확인하는 경우와 비슷하게, 기본값을 사용해 값이 없거나, 

      여러 값이 있을 때 "No Country Selected"를 반환하도록 설정할 수 있습니다.
      **Selected Country = SELECTEDVALUE(Region[Country], "No Country Selected")**
      **설명** :
      필터로 인해 Country 열에서 단일 값이 선택된 경우 그 값을 반환합니다.
      아무 값도 선택되지 않거나 여러 값이 선택된 경우 "No Country Selected"를 반환합니다.
      필터링 예

![Image](https://upload.cafenono.com/image/slashpagePost/20241115/175543_e4l6Yf74nzjNo2kZvA?q=80&s=1280x180&t=outside&f=webp)

      이 경우 Selected Country는 **USA를 반환**합니다.
      다중 선택 시 결과 예

![Image](https://upload.cafenono.com/image/slashpagePost/20241115/175555_1r6mTfiqaSSau1MGM0?q=80&s=1280x180&t=outside&f=webp)

      이 경우 Selected Country는 **"No Country Selected"를 반환**합니다.

1. **요약** :
1. 이와 같이 SELECTEDVALUE는 **필터링된 결과에 단일 값이 남아 있을 때 그 값을 반환**하고, **단일 값이 없으면 지정된 기본값이나 BLANK()를 반환하는 방식으로 동작**합니다.

For the site tree, see the [root Markdown](https://slashpage.com/powerbicokr.md).
