计算汇总表列的累积总和

时间:2019-08-29 15:32:14

标签: powerbi dax cumulative-sum

我无法在PowerBI上计算列的累加和。

我有一个很大的报价表,我想在上面进行pareto分析。经过许多教程,我按要约及其销售额的总和创建了一个SUMMARIZED表。因此表定义为:

summary = SUMMARIZE(big_table; big_table[offer]; "offer sales"; sum(big_table[sales]))

我发现的许多论坛和stackoverflow答案都将我引向以下公式来计算列上的累加总和:

cum_sales = 
    CALCULATE(
        sum([offer_sales]);
        FILTER(
            ALLSELECTED(summary);
            summary[offer_sales] <= max( summary[offer_sales])
        )
    )

但是结果表不正确:

sample results

我需要的只是简单地按销售额降序排列报价,然后将当前行的销售额添加到上一行的销售额中,

所以我排除了更接近的数字:

  • 第一行:1.5M
  • 第二行:2.1M
  • 第三排:2.6M,等等

但是(也许)由于我的数据结构以及(肯定)缺乏有关PowerBI工作原理的知识,我没有得到正确的结果...

1 个答案:

答案 0 :(得分:1)

Total Amount = SUM ( 'Fact'[Amount] )
Offer Visual Cumulative = 
VAR OfferSum =
    ADDCOLUMNS (
        ALLSELECTED ( 'Offer'[Offer] ),
        "amt", [Total Amount]
    )
VAR CurrentOfferAmount = [Total Amount]
VAR OffersLessThanCurrent =
    FILTER (
        OfferSum,
        [amt] <= CurrentOfferAmount
    )
RETURN
    SUMX (
        OffersLessThanCurrent,
        [amt]
    )

无需预先汇总到汇总表。我们可以按照上面的方法来处理。

这假设一个名为“事实”的事实表,以及一个包含“要约”的不同要约的表。

根据您对“要约”上其他过滤条件的要求,可能需要执行以下操作:

Offer Visual Cumulative = 
VAR OfferSum =
    ADDCOLUMNS (
        ALLSELECTED ( 'Offer'[Offer] ),
        "amt", CALCULATE ( [Total Amount], ALLEXCEPT ( 'Offer', 'Offer'[Offer] ) )
    )
...

其余的度量将相同。

该措施在其VAR中相当自我记录。第一个VAR OfferSum是带有列('Offer'[Offer],[amt])的表。这将包括当前视图中显示的所有报价。 CurrentOfferAmount是视觉对象当前行/轴标签上的要约金额。 OffersLessThanCurrent接受OfferSum并对其进行过滤。最后,我们迭代OffersLessThanCurrent并加总金额。

这里是一个示例: measure in visual