

例子1
求占比,难点在于要保证分母不会受到上下文的影响
销售:销售额 合计 = sum('FactInternetSales'[SalesAmount])销售:销售额 占比 = [销售:销售额 合计]/sumx(all(FactInternetSales), #这里用了all函数,保证外部上下文不起作用FactInternetSales[SalesAmount])

例子2
求占比,难点在于要保证分母不会受到Name的影响,但是会受到颜色的影响
# 不受颜色影响的写法销售:销售额 占比2 =var TotalAmount =sumx(all(FactInternetSales),FactInternetSales[SalesAmount])return DIVIDE([销售:销售额 合计],TotalAmount)# 受颜色影响的写法销售:销售额 占比3 =var TotalAmount =CALCULATE([销售:销售额 合计],all(DimProductCategory),ALL(DimProductSubcategory))return DIVIDE([销售:销售额 合计],TotalAmount,BLANK())
筛选器
布尔型筛选器
销售:销售额 合计:=SUM(FactInternetSales[SalesAmount])销售:销售额.黑色 合计:=CALCULATE([销售:销售额 合计],DimProduct[Color]="Black")
结果如下:
可以看到【销售:销售额.黑色 合计】在数据透视表中不受颜色影响,却受EnglishProductCategoryName影响,所以可以说明,calculate函数中的布尔型筛选器可以替换掉外部同列筛选上下文的作用,而且calculate函数中的布尔型筛选条件只能只有一个
**

表格筛选器
销售:销售额.标价2倍于标准成本:=CALCULATE([销售:销售额 合计],FILTER(DimProduct,DimProduct[ListPrice]>=2*DimProduct[StandardCost]))

可以看到在表格筛选器里,外部FC是起作用的,内部FC没有,RC是[ListPrice]>=2*[StandardCost],这块的行上下文转变成了筛选上下文
即FC+RC是共同起作用的
销售:销售额.黑色 合计:=CALCULATE( [销售:销售额 合计], DimProduct[Color]=”Black” ) |
FC外: FC内: |
|---|---|
| 销售:销售额.黑色 合计-FILTER:=CALCULATE( [销售:销售额 合计], FILTER(DimProduct, DimProduct[Color]=”Black”) ) |
FC外: FC内: |
| 销售:销售额.黑色 合计-FILTER+ALL:=CALCULATE( [销售:销售额 合计], FILTER( ALL(DimProduct), DimProduct[Color]=”Black” ) ) |
FC外: FC内:忽略表上所有FC RC内: |
| 销售:销售额.黑色 合计-FILTER+ALL(Color):=CALCULATE( [销售:销售额 合计], FILTER(ALL(DimProduct[Color]), DimProduct[Color]=”Black”) ) |
FC外: FC内:忽略Color/保留Color除外的其他FC RC内: |





