【问题标题】:Sum MAX values of a column对列的 MAX 值求和
【发布时间】:2019-07-09 20:52:59
【问题描述】:

情况

我有一列(退款)记录每天的 MAX 值,这样我就不会重复退款。

refund =
var calcul = 
        CALCULATE(
            SUM(Query1[amount]),
            USERELATIONSHIP(Query1[created_at], DateTable[Date]),
            Query1[kind] = "refund",
            Query1[status] = "success"       
            )

这适用于每一天,但总数是该列的最大值

目标

我需要这个度量来计算净销售额。我已经有了销售总额衡量标准,但我的退款公式在汇总后不起作用。

我尝试了什么(感谢 Alexis Olson):

refund =
var calcul = 
        CALCULATE(
            SUM(Query1[amount]),
            USERELATIONSHIP(Query1[created_at], DateTable[Date]),
            Query1[kind] = "refund",
            Query1[status] = "success"       
            )
    return 
        SUMX(DISTINCT(Query1[orderId]), calcul)

但是输出是意外的。它基本上采用每个值并将其乘以当天订单 ID 的不同计数(是否退款)

所以我尝试将其除以订单 ID 的不同计数,但同样的问题是总行取最大值。

这是我使用下面提供的解决方案得到的输出:

关系:

Query1[created_at] DateTable[Date](非活动)

Query1[orderDate] DateTable[Date](活动)

我的回报衡量标准:

Returns = 
CALCULATE(
    MAX(Query1[amount]),
    USERELATIONSHIP(Query1[created_at], DateTable[Date]),
    Query1[kind] = "refund",
    Query1[status] = "success"       
    )

【问题讨论】:

  • 您的Returns 度量是什么样的?另外,Day 是表列吗(如果是,是什么表)?
  • day 不是表格列。我的日期列来自我的 DateTable:DateTable = ADDCOLUMNS( CALENDAR(DATE(2018,01,01),TODAY()-1),

标签: powerbi dax


【解决方案1】:

您已经非常接近可行的方法了。尝试将calcul 更改为汇总表,而不是像这样的单值标量:

refund =
VAR Summary =
    SUMMARIZE (
        Query1,
        Query1[orderId],
        "MaxValue", CALCULATE (
            MAX ( Query1[amount] ),
            USERELATIONSHIP ( Query1[created_at], DateTable[Date] ),
            Query1[kind] = "refund",
            Query1[status] = "success"
        )
    )
RETURN
    SUMX ( Summary, [MaxValue] )

【讨论】:

  • 由于某种原因,它不会计算其他特定日期的值,就好像 USERELATIONSHIP 不再工作一样。然而,最大值的总和有效......
  • 在不查看数据或可视化的情况下很难进行调试。只是在黑暗中拍摄。
  • 我用其他信息更新了我的问题,希望这会有所帮助
  • @RogerSteinberg 看起来Day 是您试图总结的粒度级别。尝试在SUMMARIZE 中使用Day 而不是orderId
  • 与用户关系被覆盖的问题相同
【解决方案2】:

解决我的问题的一种方法是在汇总之前使用CALCULATETABLE,然后 使用上面 Alexis 建议的 SUMX

Returns = 
VAR sumary = 
    CALCULATETABLE(
        SUMMARIZE(
            Query1,
            Query1[orderId],
            "maxValue",CALCULATE(
                MAX(Query1[amount]),
                Query1[kind]= "refund",
                Query1[status] = "success"
            )
        ),USERELATIONSHIP(Query1[trx_date],DateTable[Date]))
    RETURN
        SUMX(sumary,[maxValue])

【讨论】:

    猜你喜欢
    • 2013-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-11
    • 1970-01-01
    • 2015-10-08
    • 1970-01-01
    相关资源
    最近更新 更多