【问题标题】:Sum the value of one column based on the maximum value of another column根据另一列的最大值对一列的值求和
【发布时间】:2018-07-13 00:41:10
【问题描述】:

我需要一个度量来从每列conta 下方的表pcsa 中添加列SaldoConta 中的最后一个非空白值。

定义最后一个非空白的标准是AnoMes列中具有最大值的标准。

conta   ano mes AnoMes  SaldoConta
110 2017    2   201702   112,56   
110 2017    0   201700   112,56   
111 2017    4   201704   70,47   
111 2017    0   201700   78,06   
111 2017    1   201701   70,47   
111 2017    2   201702   70,47   
112 2017    8   201708   100,00   
112 2017    3   201703   242,16   
112 2017    10  201710   100,00   
112 2017    2   201702   200,00   
112 2017    11  201711   100,00   
112 2017    12  201712   100,00   
112 2017    5   201705   240,75   
112 2017    1   201701   200,00   
112 2017    4   201704   242,16   
112 2017    0   201700   100,00   
112 2017    9   201709   200,00   
112 2017    6   201706   683,67   
112 2017    7   201707   200,00   
113 2017    2   201702   72 865,90   
113 2017    0   201700   21 114,37   
113 2017    3   201703   55 572,24   
113 2017    1   201701   39 967,48   
114 2017    11  201711   0,00   
114 2017    0   201700   92,59   
114 2017    8   201708   46,40   
114 2017    7   201707   84,50   
115 2017    0   201700   12,00   
116 2017    0   201700   8,27   

我已经尝试了一百万种不同的 DAX 表达式,但似乎无法得到我想要的。

它应该只添加 AnoMes 中的最后一个非空白值,因此对于 conta 110,它应该是 112,56

所以,上表应该是:

conta   ano mes AnoMes  SaldoConta
110 2017    2   201702   112,56   
111 2017    4   201704   70,47   
112 2017    12  201712   100,00   
113 2017    3   201703   55 572,24   
114 2017    11  201711   0,00   
115 2017    0   201700   12,00   
116 2017    0   201700   8,27   

【问题讨论】:

  • 你能给出至少几行你期望的输出吗?
  • 请看我上面的编辑,谢谢!
  • 最后,您是指每个联系人的最大 AnoMes?
  • @Degan 是的,没错

标签: powerbi dax


【解决方案1】:

如果您将conta 作为矩阵或表格视觉对象中的行,则可以按如下方式定义Last SaldoConta

= SUMX(FILTER(pcsa, pcsa[AnoMes] = MAX(pcsa[AnoMes])), pcsa[SaldoConta])

如果您没有conta 的过滤上下文,或者您需要正确分类汇总,那么您需要做更多的工作,但思路是一样的。

Last SaldoConta = 
    VAR Summary = SUMMARIZE(pcsa,
                      pcsa[conta],
                      "LastSaldoConta",
                      SUMX(
                          FILTER(pcsa, pcsa[AnoMes] = MAX(pcsa[AnoMes])),
                          pcsa[SaldoConta]))
    RETURN SUMX(Summary, [LastSaldoConta]) 

SUMMARIZE 中,我们为每个不同的conta 值创建过滤器上下文,并计算最后一个SaldoConta。然后我们总结所有这些。

【讨论】:

  • 那不行,因为它将获取列“AnoMes”的绝对最大值,因此返回 100(我上面第二个表的第三行)。
  • 我不确定我是否理解。我完全匹配你的输出。您是否尝试创建计算列而不是度量?
  • 不,我需要一个措施。问题是我在视觉上没有“conta”,因此没有行上下文。因此,例如,您在卡片中的度量返回 100,因为它获得了“AnoMes”的绝对最大值,我需要每个“conta”的最大“AnoMes”行。
  • 行得通,谢谢!如果我需要在“pcsa”表中添加额外的过滤器怎么办?例如,仅包含以 11 或 'ColumnA' = "Xpto" 开头的 'conta' 值?我是否需要在汇总表中包含这些列?我再问一个问题。
  • 我不这么认为。摘要仍会在您拥有的任何过滤器上下文中进行评估。这就是为什么它不仅适用于总数,而且适用于矩阵视觉中的每个conta(摘要仅在该上下文中返回一个单行表)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-01-16
  • 2021-10-16
  • 2021-05-25
  • 1970-01-01
  • 2021-07-25
  • 1970-01-01
  • 2018-01-02
相关资源
最近更新 更多