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]
)
)
)
我有 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]
)
)
)