计算新列的合计金额

问题描述 投票:0回答:1

我有一个这样的数据集:

合同 合同延期 开始日期 合同结束日期 购买金额 新ID合约 新购买金额
ID 1 没有 2023年1月1日 2023年1月5日 1000 ID 1、ID 2、ID 3 1600
ID 2 ID 1 2023年1月3日 2023年1月5日 500 ID 1、ID 2、ID 3 1600
ID 3 ID 2 2023年1月4日 2023年1月5日 100 ID 1、ID 2、ID 3 1600
ID 4 2023年1月1日 2023年1月7日 2000 ID 4、ID 5 2250
ID 5 ID 4 2023年1月3日 2023年1月7日 250 ID 4、ID 5 2250

对于每个合同 ID,都有购买的 SMS 总数(购买金额)。 每个合同都可以通过增加购买的短信数量来延长。我的目标是计算“新 ID 合同”和“新购买金额”列。

例如:合约 ID 3 是合约 ID 2 的扩展,而合约 ID 2 又是 id 1 的扩展。因此,这三个合约的总和为 1600(1000+500+100)。 当“合同延期”填写“否”时,表示相关合同不是另一份合同的延期。当填充时,会显示扩展合约的 ID

所以我应该计算“新购买金额”列中的共享合同的总和以及“新 ID 合同”中的共享合同 ID

我不知道如何设置代码,所以我没有尝试展示。我希望能有一个解决方案。

非常感谢

powerbi dax calculated-columns
1个回答
0
投票

我们可以利用 dax 中的“父子函数”来帮助解决这种情况。
了解 DAX 中父子层次结构的函数

按顺序创建以下计算列(总共 4 个)。

// Need this one to replace "No" in [Contract Extension]
Parent Contract =
  IF([Contract Extension] = "No", BLANK(), [Contract Extension])


// Need this for the PATH
Contract Path =
  PATH( Contract[Contract], Contract[Parent Contract] )


New Amount Purchased = 
  var p1 = PATHITEM([Contract Path], 1)
  return CALCULATE(
    SUM([Amount Purchased]),
    ALL(Contract),
    PATHCONTAINS(Contract[Contract Path], p1)
  )


New ID Contract =
  var pMax = CALCULATE(
    MAX([Contract Path]),
    ALL(Contract),
    PATHCONTAINS(Contract[Contract Path], p1)
  )
  return SUBSTITUTE(pMax, "|", ", ")

© www.soinside.com 2019 - 2024. All rights reserved.