基于由列F1组合的列F2的聚合,列F1的计数不同

时间:2016-08-31 11:00:29

标签: excel cube dax

我有一张表Table1:

F1 | F2
-------
a  | 1
a  | 2
b  | 1
c  | 2

我想定义一个允许我生成表格的度量MyMeasure:

F2 | Count
----------
1  | 2
2  | 1

其中Count中的值来自CUBEVALUE函数,如:

=CUBEVALUE("ThisWorkbookDataModel","[Measures].[MyMeasure]","[Table1].[F2].&[1]")
=CUBEVALUE("ThisWorkbookDataModel","[Measures].[MyMeasure]","[Table1].[F2].&[2]").

MyMeasure的逻辑应该是:

1)在F1中找出每组的最小值F2(a - > 1,b - > 1,c - > 2)。

2)F1中与前一点的指定值不同的计数项目。

我能够使用数据模型中的辅助列来完成它,但我想通过一个度量来实现它。

最近的尝试是:

=COUNTROWS(
    GENERATE(
        all(Table1[F2])
        ,SUMMARIZE(
            all(Table1),Table1[F1],"sth",min(Table1[F2])
        )
    )
)

据我了解,我正在弄乱上下文,结果我得到了:

F2 | Count
----------
1  | 6
2  | 6

在T-SQL中,我可以使用查询生成输出:

select distinct
    t1.F2
    ,count(*) over (partition by t1.F2)
from (select distinct F2 from Table1) t1
    right join (select F1, min(F2) as MyMin from Table1 group by F1) t2
    on t1.F2 = t2.MyMin

2 个答案:

答案 0 :(得分:1)

我把我的两分钱放进去,你可以创建一个计算表,它返回不同的[F2]值和两列中最小值的计数。我不确定您是否可以从一个度量中获得最小值。

CalculatedTable =
GROUPBY (
    GROUPBY ( Table, Table[F1], "Minimum", MINX ( CURRENTGROUP (), Table[F2] ) ),
    [Minimum],
    "MinCount", COUNTAX ( CURRENTGROUP (), [Minimum] )
)

如果有帮助,请告诉我。

答案 1 :(得分:0)

我可能误解了你的问题,但是我会在Table1的第三列中使用数组公式来实现它,然后你可以很容易地将F2作为数据模型的一部分求和:

{=IF([@F2]=MIN(IF([F1]=[@F1],[F2])),1,0)}