【问题标题】:Calculate previous year based on this year condition根据今年情况计算上一年
【发布时间】:2018-01-18 01:12:53
【问题描述】:

假设我有一个名为 Orders 的表格,其中包含按日期在国家/地区由经销商销售的单位数量

国家/地区 ResellerID 日期单位 3 1 5-17 7 3 1 5 月至 16 日 4 3 2 5 月至 16 日 3 2 3 5 月-16 日 5 2 3 5月-17 8

我必须根据切片器选择将特定月份的总销量与去年相应月份的总销量进行比较。这相对容易,我使用下面的公式来做到这一点

UnitsLastYear = CALCULATE(SUM(Orders[Units]),SAMEPERIODLASTYEAR(Orders[Date]))

所以对于 5 月 17 日,我选择了切片机:
今年 = 15
去年 = 12

但是,计算去年的价值还有另一个条件,那就是我应该只选择在当年选定月份销售任何东西的经销商,所以在这个例子中,ResellerID = 2 应该从去年的计算中排除,而去年应该有价值9

有没有人可以帮助如何转换这个计算以反映这个条件?

【问题讨论】:

    标签: powerbi dax


    【解决方案1】:

    尝试将其修改为以下内容:

    = CALCULATE(SUM(Orders[Units]),
                SAMEPERIODLASTYEAR(Orders[Date]),
                Orders[ResellerID] IN VALUES(Orders[ResellerID]))
    

    这只会对出现在当前过滤器上下文中的[ResellerID] 值求和。由于 5 月至 17 日没有ResellerID = 2,因此将其排除在上一年的计算之外。

    【讨论】:

    • 如果可以的话,我会给有用的加 10 分而不是 1 分。看起来它正在工作,但我不明白为什么。好吧,我明白这是上下文的事情,但我不完全理解为什么如果你有这部分 Orders[ResellerID] IN VALUES(Orders[ResellerID]) 那么第一个参考是在没有在切片器中选择上下文的情况下获取完整的值集和对同一个表和列的第二个引用只取切片器中选择的月份的值,为什么我假设第一个引用取的是去年的上下文。你能解释一下吗?谢谢
    • @nothingman 函数VALUES() 返回当前过滤器上下文中的所有不同值。既然你选择了 5 月 17 日,VALUES(Orders[ResellerID]) = {1, 3}。所以代码Orders[ResellerID] IN VALUES(Orders[ResellerID]) 表示ID 必须是13。第一个引用没有采用完整的值集,它只是识别您要过滤的列。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-12-13
    • 1970-01-01
    • 1970-01-01
    • 2011-05-18
    • 1970-01-01
    • 1970-01-01
    • 2023-03-16
    相关资源
    最近更新 更多