Power BI(DAX)中的自定义日历 - 财务季度的计算列

时间:2016-12-20 17:13:14

标签: powerbi dax

我正在Power Bi中构建自定义日历。

我主要使用美国财年价值,这意味着2017财年将于10月1日(2016-10-01)开始,并将于9月30日(2017-09-30)结束。那么,当前日历年比较到财政年度看起来如下:

df2

为了计算月初至今,季度至今和年初至今的值,我需要一份工作日历。我尝试解决问题的方法是,我创建了计算列。

我设法让财政年度和财政月份编号公式起作用:

===============================================
Calendar YearMonth     ||   Fiscal YearMonth
===============================================
201601                 ||   201604
201602                 ||   201605
201603                 ||   201606
201604                 ||   201607
201605                 ||   201608
201606                 ||   201609
201607                 ||   201610
201608                 ||   201611
201609                 ||   201612
201610                 ||   201701
201611                 ||   201702
201612                 ||   201703

但不幸的是,我似乎无法找出一个公式来获得财政年度季度。我最近的尝试是将DITBETWEEN与DATESBETWEEN一起使用如下:

Fiscal Year = IF(MONTH([DATE]) > 9, YEAR([DATE])+1, YEAR([DATE]))

Fiscal YearMonth No = 
SWITCH( 
    TRUE(),
    MONTH('Calendar'[Date]) = 10, 1,
    MONTH('Calendar'[Date]) = 11, 2,
    MONTH('Calendar'[Date]) = 12, 3,
    MONTH('Calendar'[Date]) = 1, 4,
    MONTH('Calendar'[Date]) = 2, 5,
    MONTH('Calendar'[Date]) = 3, 6,
    MONTH('Calendar'[Date]) = 4, 7,
    MONTH('Calendar'[Date]) = 5, 8,
    MONTH('Calendar'[Date]) = 6, 9,
    MONTH('Calendar'[Date]) = 7, 10,
    MONTH('Calendar'[Date]) = 8, 11,
    MONTH('Calendar'[Date]) = 9, 12
    )

不幸的是我收到了语法错误。

2 个答案:

答案 0 :(得分:1)

由于MONTH()函数返回一个整数值,我认为这就是为什么你通过用DATESBETWEEN()函数包装它来获得语法错误。

相反,只需使用简单的整数运算符。我用这个计算测试了你的数据并且它可以工作:

Fiscal YearQuarter No = 
SWITCH(
    TRUE(),
    MONTH('Calendar'[Date])>=10 && MONTH('Calendar'[Date]) <= 12,1,
    MONTH('Calendar'[Date])>=1 && MONTH('Calendar'[Date]) <= 3,2,
    MONTH('Calendar'[Date])>=4 && MONTH('Calendar'[Date]) <= 6,3,
    MONTH('Calendar'[Date])>=7 && MONTH('Calendar'[Date]) <= 9,4
)

此外,您可能不需要这么长的表达式来计算您的会计月度数字,因为您的会计日历仅比标准日历偏移3个月。尝试使用算术公式替换它。这应该有效:

Fiscal YearMonth No= = 
=IF((MONTH('Calendar'[Date])+3)>12,ABS(12-(MONTH('Calendar'[Date])+3)),(MONTH('Calendar'[Date])+3))

答案 1 :(得分:0)

您可以像这样简单地将日历年更改为会计年度

Fiscal Month = Orders[Order Date].[Month]

Fiscal Year = CONCATENATE("FY ",IF(Orders[Order Date].[MonthNo]>=4 && Orders[Order Date].[MonthNo]<=12,Orders[Order Date].[Year],Orders[Order Date].

[Year]-1))

本财年是根据印度财政年度计算的。