【问题标题】:How to use a measure for each value in a column then sum up the results如何对列中的每个值使用度量然后总结结果
【发布时间】:2019-09-05 17:07:23
【问题描述】:

我创建了一个度量来计算机器上的人工/操作时间。我的措施对每台机器都非常有效。但是,当我想获得整个机队的总人工/运营小时数时,该措施并没有给我正确的结果

我认为我的问题是我没有在计算总工时和总使用时数的度量中指定机器。但是,我不知道如何将其合并到 DAX 中。

我用了几个小时:

Hours Used = 
  var __MinVal = MIN(SMU_Usage_Lookup[LTDSMU])
  var __MaxVal = MAX(SMU_Usage_Lookup[LTDSMU])

return
  __MaxVal - __MinVal

SMU_Usage_Lookup 表如下所示

Machine  Date      LTDSMU
A        1/1/2016  1
B        1/1/2016  42
A        1/2/2016  6
B        1/2/2016  53
A        1/3/2016  11
B        1/3/2016  62
C        1/3/2016  513
C        1/4/2016  523

当我创建一个表格视觉对象并引入机器时,我得到了正确的结果。

Machine  Hours Used  Labor Hours  Man/Op Hours
A        10          1            .10
B        20          5            .25
C        10          2            .20

我的问题是如果我为所有机器输入总计,或者只是去掉机器列。我得到了这样的东西

Hours Used  Labor Hours  Man/Op Hours
522         8            .02

这是不正确的,我知道发生了什么。我的衡量标准是计算使用的时间,就好像每台机器只是一台一样。无论机器如何,它都从 Max LTDSMU 中减去 Min LTDSMU。我需要它做的是添加每台机器的使用时间。所以在这种情况下是 10 + 20 + 10。我需要显示我的结果

Hours Used  Labor Hours  Man/Op Hours
40          8            .2

提前致谢。如果您需要更多说明,请告诉我。

【问题讨论】:

    标签: powerbi dax


    【解决方案1】:

    将其包装在 SUMX 中。我会给出函数的定义,但你的问题标题已经完美地做到了。

    Hours Used = 
    SUMX (
      VALUES ( 'SMU_Usage_Lookup'[Machine] ),
      CALCULATE (
        var __MinVal = MIN(SMU_Usage_Lookup[LTDSMU])
        var __MaxVal = MAX(SMU_Usage_Lookup[LTDSMU])
        return
          __MaxVal - __MinVal
      )
    )
    

    这里不需要 VAR,因此您也可以按如下方式重构和缩小:

    Hours Used = 
    SUMX (
      VALUES ( 'SMU_Usage_Lookup'[Machine] ),
      CALCULATE ( MAX ( 'SMU_Usage_Lookup'[LTDSMU] ) - MIN ( 'SMU_Usage_Lookup'[LTDSMU] ) )
    )
    

    如需更多阅读,请查看this question for what CALCULATE is doing there

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-11-25
      • 2020-07-07
      • 1970-01-01
      • 1970-01-01
      • 2016-11-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多