【问题标题】:Aggregate on measure in powerbi?在powerbi中聚合度量?
【发布时间】:2021-05-09 04:00:00
【问题描述】:

所以我创建了一些度量,例如:

Fruit Fruit Measure Value
banana sweetness 90
banana sweetness 80
banana tartness 15
banana tartness 20
peach sweetness 70
peach sweetness 65
peach tartness 35
peach tartness 40
apple sweetness 65
apple sweetness 60
apple tartness 30
apple tartness 25
kiwi sweetness 20
kiwi sweetness 15
kiwi tartness 85
kiwi tartness 90

等等等等

[编辑]澄清:

基本上,我有一个类别Fruit 和一个关联的Fruit Measure,并且我创建了以下度量来获得每种水果的多个甜度/酸度值的总和。我还取了列总数的百分比(因为甜度/酸度值在不同的范围内,并且本质上不具有可比性)。例如:%ColTotal = bananaSweetness/TotalFruitSweetness => 170/(170 + 135 + 125 + 35) = .3656,如下:

SumPerFruit =
SUMX ( VALUES ( Table[Fruit Measure] ), CALCULATE ( SUM ( Table[Value] ) ) )
PercentageofColTotal_SumPerFruit =
DIVIDE (
    [SumPerFruit],
    SUMX (
        VALUES ( Table[Fruit Measure] ),
        CALCULATE ( SUM ( Table[Value] ), ALLSELECTED ( table[Fruit] ) )
    )
)

计算结果如下:

Fruit Fruit Measure SumPerFruit PercentageofColTotal_SumPerFruit
banana sweetness 170 .3656
banana tartness 55 .1029
peach sweetness 135 .2903
peach tartness 75 .2206
apple sweetness 125 .2688
apple tartness 55 .1618
kiwi sweetness 35 .0753
kiwi tartness 175 .5147

[编辑] 了解有关 SummaryFruitMeasure 的更多说明

现在,上述措施只是将每种水果的多个甜度/酸度值合并为每种水果的两个值 - 一个用于酸味,一个用于甜味。理想情况下,我只想有一个数值平均值,可以总结水果的甜度/酸度值。因此,我只想取如下平均值:

BananaSummaryMeasure = (BananaTartness + BananaSweetness)/2 => (.3656 + .1029)/2

所以我试图得到每个水果的PercentageofColtotal_SumPerFruit 平均值,如下所示:

SummaryFruitMeasure =
SUMX (
    VALUES ( Table[Fruit] ),
    CALCULATE ( DIVIDE ( SUM ( Table[PercentageofColTotal_SumPerFruit] ), 2 ) )
)

预期结果为:

Fruit SummaryFruitMeasure
banana .23425
peach .255545
apple .2153
kiwi .295

但是,SUM(Table[PercentageofColTotal_SumPerFruit]) 部分出现如下错误:

无法找到表“Table”中的列PercentageofColTotal_SumPerFruit,或者可能无法在此表达式中使用。

所以我假设它不能在这个表达式中使用,因为它是一个度量。我该如何解决这个问题?我应该使用SUMMARIZECOLUMNS 或类似的东西吗?我不确定是否可以在PercentageofColTotal_SumPerFruit 上进一步聚合?

另外,我必须使用度量,因为实际数据会被过滤。

[编辑]我也研究过类似this 的东西,但结果是一个表格,我想在这个结束时进行测量..

【问题讨论】:

  • 还要小心:ALLSELECTED 不应用于从其他度量中的迭代器调用的度量中。 sqlbi.com/articles/the-definitive-guide-to-allselected
  • SummaryFruitMesure 打算代表什么?它是如何解释的?
  • @AlexisOlson 我已经添加了一些说明,谢谢
  • 也许是一个愚蠢的问题,SUMX(Table, [PercentageofColTotal_SumPerFruit]) 不是为你做的吗?我只是略过你的问题,所以我可能错过了它的重点:)。

标签: powerbi dax


【解决方案1】:

可以有 2 种方法,具体取决于数据的粒度。它们可以像这样被可视化。第一个度量(度量一个)始终显示您想要的结果,无论您是否将水果度量放在视觉中。第二个没有,您可以在水果级别以及测量级别看到它。

Measure one =
CALCULATE (
    DIVIDE (
        SUMX (
            VALUES ( Fruit[Fruit Measure] ),
            DIVIDE (
                CALCULATE ( SUM ( Fruit[Value] ) ),
                CALCULATE ( SUM ( Fruit[Value] ), ALLSELECTED ( Fruit[Fruit] ) )
            )
        ),
        COUNTROWS ( VALUES ( Fruit[Fruit Measure] ) )
    ),
    ALLSELECTED ( Fruit[Fruit Measure] )
)

Measure two =
DIVIDE (
    SUMX (
        VALUES ( Fruit[Fruit Measure] ),
        DIVIDE (
            CALCULATE ( SUM ( Fruit[Value] ) ),
            CALCULATE ( SUM ( Fruit[Value] ), ALLSELECTED ( Fruit[Fruit] ) )
        )
    ),
    COUNTROWS ( VALUES ( Fruit[Fruit Measure] ) )
)

我决定使用 COUNTROWS()(而不是简单的除以 2),使其适用于任意数量的 Fruit Measure 值。

在第二个度量中,VALUES ( Fruit[Fruit Measure] ) 可以放入一个变量中,因为它被使用了两次,以使其看起来不那么重复。

我的建议是使用Measure two 之类的东西,因为它更灵活(而且相当优雅),但这取决于您的报告要求。

编辑

实际上,Measure two 是不必要的复杂。应该这样简化:

Measure three =
AVERAGEX (
    VALUES ( Fruit[Fruit Measure] ),
    DIVIDE (
        CALCULATE ( SUM ( Fruit[Value] ) ),
        CALCULATE ( SUM ( Fruit[Value] ), ALLSELECTED ( Fruit[Fruit] ) )
    )
)

为此道歉。

为了回答您关于 SUM(Table[PercentageofColTotal_SumPerFruit]) 给出错误的问题,您可以使用 SUMX 中的度量,例如SUMX(Table, [PercentageofColTotal_SumPerFruit])。请注意,在此上下文中,我指的不是此操作结果的正确性。

EDIT2

这是基于评论对Measure one 的另一种看法。这次它基于所有水果计算值,而不考虑切片器的选择/过滤。

Measure one = 
CALCULATE (
    AVERAGEX (
        VALUES ( Fruit[Fruit Measure] ),
        DIVIDE (
            CALCULATE ( SUM ( Fruit[Value] ) ),
            CALCULATE ( SUM ( Fruit[Value] ), ALL ( Fruit[Fruit] ) )
        )
    ),
    ALL ( Fruit[Fruit Measure] )
)

【讨论】:

  • 非常感谢这个答案,花了一些时间来处理和理解。在这种情况下,MeasureOne 绝对是更符合我需要的那个,但我必须进行一些修改,因为我需要能够在不重新计算值的情况下直观地过滤包括/排除某些水果。
  • 感谢您的奖励。让我修改我的答案(和测量一个)以显示相同的值,而不考虑过滤。
【解决方案2】:

您可以在度量中使用summarize

SummaryFruitMeasure =
SUMX (
    SUMMARIZE(
       Table, 
       Table[Fruit],
       Table[Fruit Measure],
       "PercentageTotal", [PercentageofColTotal_SumPerFruit]
    ),
    DIVIDE ( SUM ( [PercentageTotal] ), 2 )
)

【讨论】:

    【解决方案3】:

    您的 DAX 过于复杂,让您感到困惑。特定的错误是您不能在除表列之外的任何内容上使用 SUM(度量不是列)。

    我会推荐这个:

    SumValue = SUM ( Table[Value] )
    
    PercentOfTotal =
        DIVIDE (
            [SumValue],
            CALCULATE ( [SumValue], ALLSELECTED ( Table ) )
        )
    

    无论您是否喜欢甜食/酸味,使用这两个都应该有效。

    【讨论】:

    • 谢谢,但我这样写 DAX 的原因是因为酸度/甜度值的比例不同,所以我用PercentageofColTotal_SumPerFruit 列转换为列总数的百分比来制作它们可比。我知道我不能 SUM 衡量,但希望有一些方法可以通过 SUMMARIZE 等解决这个问题,因为我想计算 PercentageofColTotal_SumPerFruit 列上每个水果的平均值
    猜你喜欢
    • 1970-01-01
    • 2021-12-05
    • 1970-01-01
    • 2019-09-20
    • 2020-04-12
    • 1970-01-01
    • 1970-01-01
    • 2022-12-09
    • 2017-10-07
    相关资源
    最近更新 更多