首页 文章

DAX - 根据保留时间/行层次结构的财务日历查找上一年的等价物

提问于
浏览
1

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

WordsTable

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

FiscalDatesTable

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过滤器引起的问题,但不确定还有什么可以尝试 .

无论选择何种时间维度,期望的结果都将为我提供正确的上一年度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

1 回答

  • 0

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

    如果有人发现它有用,这是方法 .

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

相关问题