image.png

image.png

例子1

求占比,难点在于要保证分母不会受到上下文的影响

  1. 销售:销售额 合计 = sum('FactInternetSales'[SalesAmount])
  2. 销售:销售额 占比 = [销售:销售额 合计]/sumx(
  3. all(FactInternetSales), #这里用了all函数,保证外部上下文不起作用
  4. FactInternetSales[SalesAmount]
  5. )

image.png

例子2

求占比,难点在于要保证分母不会受到Name的影响,但是会受到颜色的影响
image.png

  1. # 不受颜色影响的写法
  2. 销售:销售额 占比2 =
  3. var TotalAmount =
  4. sumx(
  5. all(FactInternetSales),
  6. FactInternetSales[SalesAmount]
  7. )
  8. return DIVIDE([销售:销售额 合计],TotalAmount)
  9. # 受颜色影响的写法
  10. 销售:销售额 占比3 =
  11. var TotalAmount =
  12. CALCULATE(
  13. [销售:销售额 合计],
  14. all(DimProductCategory),
  15. ALL(DimProductSubcategory)
  16. )
  17. return DIVIDE([销售:销售额 合计],TotalAmount,BLANK())

筛选器

布尔型筛选器

  1. 销售:销售额 合计:=SUM(FactInternetSales[SalesAmount])
  2. 销售:销售额.黑色 合计:=CALCULATE(
  3. [销售:销售额 合计],
  4. DimProduct[Color]="Black"
  5. )

结果如下:
可以看到【销售:销售额.黑色 合计】在数据透视表中不受颜色影响,却受EnglishProductCategoryName影响,所以可以说明,calculate函数中的布尔型筛选器可以替换掉外部同列筛选上下文的作用,而且calculate函数中的布尔型筛选条件只能只有一个
**
image.png
image.png

表格筛选器

  1. 销售:销售额.标价2倍于标准成本:=CALCULATE(
  2. [销售:销售额 合计],
  3. FILTER(
  4. DimProduct,
  5. DimProduct[ListPrice]>=2*DimProduct[StandardCost]
  6. )
  7. )

image.png
可以看到在表格筛选器里,外部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内:

image.png
image.png
image.png
image.png
image.png