DAX - 根据保留 time/row 层次结构的会计日历查找上一年的等价物

DAX - Finding Previous Year Equivalent, based on Fiscal Calendar retaining time/row hierarchy

我有 2 个表,它们具有由 'FiscalWeekEndDate' 值定义的多对一关系,就像这样;

单词表

FiscalWeekEndDate  | WordGroup   | IndexedVolume
01/01/2017         | Dining      | 1,000
01/01/2017         | Shopping    | 2,000
08/01/2017         | Dining      | 2,000
08/01/2017         | Sports      | 5,000

财政日期表

FiscalWeekEndDate | FiscalWeek | FiscalMonth | FiscalQuarter | FiscalYear
01/01/2017        | 21         | 5           | 2             | 2017
08/01/2017        | 22         | 5           | 2             | 2017

我正在尝试在 DAX(上一年)中创建一个简单的 PY 等效度量,它适用于时间层次结构的所有级别 - 即所选财政周、月、季度或年的 PY。我不想要 YTD(年初至今)指标。

这是我目前所拥有的;

Previous Year Indexed Volume:=
CALCULATE([IndexedVolume], 
FILTER(ALL('FiscalDatesTable'),'FiscalWeeksTable'[FiscalWeek]= 
MAX('FiscalDatesTable'[FiscalWeek]) && 'FiscalDatesTable'[FiscalYear]  = 
MAX('FiscalDatesTable'[FiscalYear]) - 1))

返回这种类型的结果;

Fiscal Year 2017: 7,000
Fiscal Quarter 2: 7,000
Fiscal Month 5: 7,000
Fiscal Week 22: 7,000
Fiscal Week 21: 3,000

基本上,会为月、季度或年维度返回最大财政周值 (22: 7,000)。我知道这是我的 DAX 过滤器的问题,但不确定还可以尝试什么。

无论选择的时间维度如何,所需的结果都会给我正确的 Previous Year IndexedVolume 值。即如下所示;

Fiscal Year 2017: 10,000
Fiscal Quarter 2: 10,000
Fiscal Month 5: 10,000
Fiscal Week 22: 7,000
Fiscal Week 21: 3,000

经过几个小时的研究,我终于通过在逻辑中引入 'PreviousFiscalWeekEndDate' 来破解它。

如果有人觉得有用,这里是方法。

Previous Year Indexed Volume:=
CALCULATE([IndexedVolume],
FILTER (
    ALL ( 'FiscalDatesTable' ),
    CONTAINS (
        VALUES ( 'FiscalDatesTable'[PreviousYearFiscalWeekEndDate] ),
        'FiscalDatesTable'[PreviousYearFiscalWeekEndDate],
        'FiscalDatesTable'[FiscalWeekEndDate]
    )
  )
)