随着时间的推移每周Deltas

时间:2018-05-23 19:37:37

标签: powerbi

我正在尝试跟踪租户的每个功能的许可证号码的差异。我的数据结构如下:

╔══════╦══════════╦══════════╦══════════╗
║ Date ║ Customer ║ Feature1 ║ Feature2 ║
╠══════╬══════════╬══════════╬══════════╣
║ 5/16 ║ A        ║      500 ║      400 ║
║ 5/23 ║ A        ║     1000 ║      300 ║
╚══════╩══════════╩══════════╩══════════╝

我希望每周能够看到Feature1和Feature2(以及Feature3等)的差异和增量。在我的例子中,客户A的Feature1在5/16和5/23之间有500的差异。

最初的想法是创建一个列来计算每个记录的前一周并从那里开始尝试。我理解为每个特征创建一个计算列,以这种方式创建一个循环依赖:

  

FeatureDelta = CALCULATE(MAX(表[Feature1]),过滤器(表,表[日期] =更早(表[Prv周])&& Table [Customer] = EARLIER(Table [Customer]))) - CALCULATE(MAX(表[Feature1]))

我想展示一些增量功能。有没有办法在PowerBI中做到这一点?

1 个答案:

答案 0 :(得分:1)

尝试使用MAXX(FILTER(...),...)代替CALCULATE(MAX(...),...)

Delta1 = 
    VAR PrevDate = MAXX(FILTER(Table2, Table2[Date] < EARLIER(Table2[Date])), Table2[Date])
    RETURN IF(ISBLANK(PrevDate),
               BLANK(),
               Table2[Feature1] -
               SUMX(FILTER(Table2, Table2[Date] = PrevDate), Table2[Feature1]))

如果删除导致循环依赖的行上下文,则可以使用CALCULATE

Delta1 = 
    VAR PrevDate = CALCULATE(MAX(Table2[Date]),
                       ALLEXCEPT(Table2, Table2[Customer]),
                       Table2[Date] < EARLIER(Table2[Date]))
    RETURN IF(ISBLANK(PrevDate),
               BLANK(),
               Table2[Feature1] -
               CALCULATE(SUM(Table2[Feature1]),
                   ALLEXCEPT(Table2, Table2[Customer]),
                   Table2[Date] = PrevDate))

我假设您希望让客户远离行上下文。如果没有,您只需使用ALLEXCEPT(Table2, Table2[Customer])替换ALL(Table2)