为事实表创建 2 个度量

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

我有 3 个表:一个用于带有生产日期字段的发货,该字段链接到日历表(字段日期)。日历表还链接到退货表(字段退货日期),并且与退货表(生产日期)也具有非活动关系,如下所示。

我将创建一个包含度量值的表,其中特定年份的前几年的发货数量为 0,并且是特定年份和下一年的总价值

我尝试在下图中更好地解释。 例如,在 2020 年,我发货了 2500 件,2018 年和 2019 年的度量显示为 0,2020 年到 2023 年的度量显示为 2500 件

我创造了

QSpedita = 
    CALCULATE(
        [Quantità spedita], ('Calendar Lookup'[Year]=2018)
    )

但它仅适用于 2018 年,我应该需要为每年创建不同的度量,而不是我需要一个识别过滤器上下文的公式。 你有什么建议吗?

谢谢你

Production Year 2018    2019    2020    2021    2022    2023
2018            5000    5000    5000    5000    5000    5000
2019            0       7000    7000    7000    7000    7000
2020            0       0       2500    2500    2500    2500
2021            0       0       0       5000    5000    5000
2022            0       0       0       0       2750    2750
2023            0       0       0       0       4125    4125
powerbi dax measure
1个回答
0
投票

您可以使用一个变量来存储当前过滤器上下文中的年份,该年份由日历表的年份属性确定,另一个变量来存储发货表中的生产年份。

然后检查 ProductionYear 是否大于 CurrentYear :

A/如果为 true,则表示评估的年份早于生产年份,因此返回 0。

B/如果小于或等于当前年份,则计算从生产年份到当前年份(包括当前年份)的所有年份的发货数量总和。您可以看到 ALL() 删除了日历表上的任何现有过滤器,并且 CALCULATE 函数内的 FILTER 条件将保证仅从生产年份到当前年份的年份包含在总和中。

 QuantityShippedAdjusted = 
    VAR CurrentYear = MAX('Calendar Lookup'[Year])
    VAR ProductionYear = MAX('Shipments'[Production Year])
    RETURN
        IF(
            ProductionYear > CurrentYear,
            0,
            CALCULATE(
                SUM('Shipments'[Quantity Shipped]),
                FILTER(
                    ALL('Calendar Lookup'),
                    'Calendar Lookup'[Year] >= ProductionYear && 'Calendar Lookup'[Year] <= CurrentYear
                )
            )
        )
© www.soinside.com 2019 - 2024. All rights reserved.