【问题标题】:Distinct count of column F1 based on aggregation of column F2 groupped by column F1基于 F1 列分组的 F2 列聚合的 F1 列不同计数
【发布时间】:2017-01-07 22:29:12
【问题描述】:

我有一张桌子 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 (a -> 1, b -> 1, c -> 2) 中的每个组找到最小值 F2。

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

【问题讨论】:

    标签: excel cube dax


    【解决方案1】:

    我投入了两美分,您可以创建一个计算表,该表返回不同的 [F2] 值以及它们在两列中的最少出现次数。我不确定您是否可以仅从一项度量中获得最小值。

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

    如果这有帮助,请告诉我。

    【讨论】:

      【解决方案2】:

      我可能误解了您的问题,但我会使用 Table1 的第三列中的数组公式来解决,然后您可以轻松地将其作为数据模型的一部分按 F2 求和:

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

      【讨论】:

        猜你喜欢
        • 2017-08-28
        • 1970-01-01
        • 2017-01-25
        • 1970-01-01
        • 2020-05-04
        • 1970-01-01
        • 2021-08-10
        • 1970-01-01
        • 2020-06-17
        相关资源
        最近更新 更多