【问题标题】:PowerBI - Run Rate with Start and End DatesPowerBI - 带有开始和结束日期的运行率
【发布时间】:2022-02-02 16:01:19
【问题描述】:

我有一个如下所示的数据表:

OneTime (T/F) PLSavings ImplementationDate EndDate LengthofBenefit MonthlyBenefit
True 337,500 2/10/2021 11/14/2024 1 337,500
False 100,000 8/1/2021 7/31/2024 35 2,857.14
False 8,000 1/1/2021 12/31/2021 11 727.27

我也有一个日期表。我能够计算累计每月总数,但我正在努力如何计算结束日期,因为福利应该下降。同样,如果 OneTime = True,则总数应仅适用于每月实施日期。使用上面的示例数据,结果应如下所示:

Month & Year Monthly Benefits YTD Benefits
January 2021 $727.27 $727.27
February 2021 $338,227.27 $338,954.54
March 2021 $727.27 $339,681.81
April 2021 $727.27 $340,490.08
May 2021 $727.27 $341,136.35
June 2021 $727.27 $341,863.62
July 2021 $727.27 $341,590.89
August 2021 $3,584.38 $345,175.27
September 2021 $3,584.38 $348,759.65
October 2021 $3,584.38 $352,344.03
November 2021 $3,584.38 $355,928.41
December 2021 $3,584.38 $359,512.79
January 2022 $2,857.14 $2,857.14

如果有帮助,我一直在使用几种方法来计算累积总数,以尝试以此为基础:

VAR MinDate = MIN(SCM_BenefitTracker[ImplemenationDate])
VAR MaxDate = MAX(SCM_BenefitTracker[EndDate])
VAR DateList = 1
RETURN
CALCULATE(
    SUM(SCM_BenefitTracker[Monthly Benefit]),
    FILTER('Date Table - Imp', 'Date Table - Imp'[Date] <= MaxDate &&
    'Date Table - Imp'[Date] >= MinDate)
)
VAR CumulativeTotal = CALCULATE( [Total PL Savings],
                        FILTER( ALLSELECTED( 'Date Table - Imp' ), 'Date Table - Imp'[Date] <= MAX ('Date Table - Imp'[Date] ) ) )
RETURN

【问题讨论】:

    标签: powerbi dax


    【解决方案1】:

    我们可以使用表变量的方法并生成。 如果您有非常庞大的数据集,您应该注意内存使用情况。

    MonthlyBenefits = 
    var _CurrMonth = SELECTEDVALUE('Calendar'[YearMonth])
    var _virt = SUMMARIZE(GENERATE(SELECTCOLUMNS('OneTime',"ImplementationDate", 'OneTime'[ImplementationDate], "EndDate", 'OneTime'[EndDate], "MonthlyBenefit",'OneTime'[MonthlyBenefit], "OneTime", [OneTime (T/F)])  , FILTER( CALCULATETABLE( ALL('Calendar'[YearMonth], 'Calendar'[Date] ),   _CurrMonth = 'Calendar'[YearMonth]),'Calendar'[Date] >= [ImplementationDate] && 'Calendar'[Date] <= if([OneTime], [ImplementationDate],[EndDate]  ))), [YearMonth],  [MonthlyBenefit])
    return
    
    CALCULATE( SUMX(FILTER(_virt,   _CurrMonth = [YearMonth]), [MonthlyBenefit]))
    
    
    MonthlyAccuBenefits = 
    var _CurrMonth = SELECTEDVALUE('Calendar'[YearMonth])
    var _virt = SUMMARIZE(GENERATE(SELECTCOLUMNS('OneTime',"ImplementationDate", 'OneTime'[ImplementationDate], "EndDate", 'OneTime'[EndDate], "MonthlyBenefit",'OneTime'[MonthlyBenefit], "OneTime", [OneTime (T/F)])  , FILTER( CALCULATETABLE( ALL('Calendar'[YearMonth], 'Calendar'[Date] ),   'Calendar'[YearMonth] <= _CurrMonth ),'Calendar'[Date] >= [ImplementationDate] && 'Calendar'[Date] <= if([OneTime], [ImplementationDate],[EndDate]  ))), [YearMonth],  [MonthlyBenefit])
    return
    
    CALCULATE( SUMX(FILTER(_virt,  [YearMonth] <= _CurrMonth ), [MonthlyBenefit]))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-08-19
      • 2019-09-20
      • 2020-10-05
      • 2022-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多