【问题标题】:Subtracting values from the same column but different rows in power bi从 power bi 中的同一列但不同行中减去值
【发布时间】:2021-01-28 16:40:09
【问题描述】:

我正在计算“封闭列”的差异。所有数据都在一列中,我正在计算所有行的 Row2-Row1 之间的差异。我得到的结果是一些积极的价值和一些消极的价值。正值是正确的,但负值是不正确的。我正在应用公式

diff = 
Table3[Value] - 
CALCULATE(
    SUM (Table3[Value]), 
    FILTER(
        Table3, 
        Table3[Index] = EARLIER(Table3[Index])- 1
    )
).
 

Screenshot of my formula

Output after applying formula, -ve and +ve values

请帮助我如何更正我的 -ve 值?

Month        Week           Month End     Closed    Open   GT     IN    
01/2020      W01-2020       N             71        178    249    71
01/2020      W02-2020       N             284       189    473    213   
01/2020      W03-2020       N             550       210    760    266   
01/2020      W04-2020       N             861       185    1046   311   
01/2020      W05-2020       Y             1185      205    1390   324   
02/2020      W06-2020       N             370       206    576    370   
02/2020      W07-2020       N             665       209    874    295   

【问题讨论】:

  • 在此处以表格格式而不是图像格式添加示例数据。还要以表格格式添加您的预期输出。
  • 这些是 excel 中的列。 IN 列(最后一列)是计算列。我在 Row1= 中应用了公式 =IFERROR(IF(D2="","",D2),"") = 输出为 71。对于 Row2=IFERROR(IF(A3=A2,D3-D2,D3)," ")= 213。以下行相同。现在,在 power bi 中,我有相同的列报告月、报告周、月末、关闭、打开和 GT,我想应用它们的公式,以便我可以将值作为 IN 列。
  • 这是您的示例输入数据吗?
  • 是的,这是我的输入数据
  • 此数据不足。什么是索引?是每周增加1的ID吗?为什么第 6 周的 IN 370?是因为你每个月都会重置罐子吗?请更新问题。

标签: powerbi dax powerbi-desktop powerbi-datasource


【解决方案1】:

Power Query Editor中,我在数据中添加了一个从1开始的Index列,输出如下-

现在,创建以下度量以获取当前行中的前行关闭值-

prev_row_closed_value = 
CALCULATE(
    SUM (your_table_name[Closed]), 
    FILTER(
        ALL(your_table_name), 
        your_table_name[Index] = MIN(your_table_name[Index]) - 1
    )
)

要计算差异,请使用以下度量-

diff = 

MIN(your_table_name[Closed]) - 
CALCULATE(
    SUM (your_table_name[Closed]), 
    FILTER(
        ALL(your_table_name), 
        your_table_name[Index] = MIN(your_table_name[Index]) - 1
    )
)

这是上述测量的输出-

【讨论】:

    【解决方案2】:

    在 Dax 中,您可以使用以下公式。

    在第一步中,我们创建一个列来按顺序获取您的周列:

    YearWeek = CONVERT(RIGHT(Sheet1[Week], 4) & MID(Sheet1[Week],2,2),INTEGER)
    

    这是为您的年份和月份创建一个整数值。接下来,我们可以使用它来减去之前的关闭金额,我们首先在正确的月份进行过滤。请注意,我假设这是一个日期列。

    In = 
    var curMonth = Sheet1[Month]
    var curYW = Sheet1[YearWeek]
    var filterMonthYW = FILTER(Sheet1, curMonth = Sheet1[Month] && curYW > Sheet1[YearWeek])
    var MaxYW = CALCULATE(MAX(Sheet1[YearWeek]), filterMonthYW)
    return Sheet1[Closed] - CALCULATE(MAX(Sheet1[Closed]), FILTER(filterMonthYW, MaxYW = Sheet1[YearWeek] ))
    

    Sheet1 是你的桌子..

    最终结果:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多