|
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用 · 内置多项VBA编程加强工具 ★ 免费下载 ★ ★ 使用手册★
场景PowerBI,单Data表模型,外部可视化切片包含Data[Time]和Data[Type]="B",求问以下两种度量值在计算流程上有何不同:- Correct = CALCULATE(DISTINCTCOUNT(Data[Name]),FILTER(Data,Data[Type]="A"))
复制代码- Wrong = CALCULATE(DISTINCTCOUNT(Data[Name]),FILTER(ALL(Data[Type]),Data[Type]="A"))
复制代码 我理解的Correct流程:
1.Calculate计算外部筛选上下文,得到Data子集1(筛选Time与Type="B");
2.代入外部上下文,计算Filter,此时Filter拿到的Data就是子集1,在此基础上叠加Type="A"(维持Time筛选,将Type改为同时筛选"B"和"A"),由于Type有且仅有一种,Filter返回空集;
3.Calculate在空集中计算参数一,得到Blank()。
我理解的Wrong流程:
1.Calculate计算外部筛选上下文,得到Data子集1(筛选Time与Type="B");
2.代入外部上下文,计算Filter,由于参数一的写法是ALL(单列),此时的参数一是所有Type的去重复集合,同时ALL清除了Type="B"的筛选,改为Type="A",由于各列独立筛选,因而Time筛选没有变化(即此时筛选Time与Type="A"),得到子集2;
3.Calculate在子集2中计算结果,得到同时满足Time与Type="A"的不重复Name个数。
PS:筛选Time是通过切片器选择的时间段,筛选Type则是通过在可视化中点击图形完成。
求问以上两种理解有什么问题,尤其是Wrong实际的计算流程如何,百思不得其解,求指点。
问的原因是我发现在某些情况下Wrong的值很奇怪,与我预期的完全不同,尝试模拟数据又因为不知道错在哪里,无法复现这个错误,不能上传文件还请谅解!
|
|