【问题标题】:Calculate cumulative sum of summarized table column计算汇总表列的累计总和
【发布时间】:2020-01-02 22:12:41
【问题描述】:

我在 PowerBI 上计算列的累积总和时遇到问题。

我有一个很大的报价表,我想对其进行帕累托分析。在许多教程之后,我按报价和销售额的总和创建了一个汇总表。所以表定义为:

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])
        )
    )

但是结果表不正确:

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

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

  • 第一行:1.5M
  • 第二行:2.1M
  • 第三行:2.6M 以此类推

但是(也许)因为我的数据结构和(当然)缺乏关于 PowerBI 工作原理的知识,我没有得到正确的结果...

【问题讨论】:

    标签: powerbi dax cumulative-sum


    【解决方案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]
        )
    

    无需预先汇总到汇总表。我们可以按照上述措施处理。

    这假设有一个名为“Fact”的事实表和一个包含不同报价的表“Offer”。

    根据您在“优惠”上的其他过滤器所做的操作,您可能需要改为执行以下操作:

    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 并将金额相加。

    这是一个示例:

    【讨论】:

    • 我要感谢你写得这么仔细!
    猜你喜欢
    • 2017-10-05
    • 1970-01-01
    • 1970-01-01
    • 2022-01-27
    • 2015-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多