DAX将日期转换为季度的第一天

时间:2019-12-03 09:42:43

标签: powerbi dax

在建立日历表时,我遇到了意想不到的困难。

如何将日期转换为季度的第一天?以下是一些示例:

2019-02-01 > 2019-01-01
2019-03-31 > 2019-01-01
2019-04-02 > 2019-04-01

函数STARTOFQUARTER在我的日历中不起作用。我不知道为什么。

Calendar = 
GENERATE (
    CALENDAR (
        DATE ( 2016,  1,  1 ),
        DATE ( 2020, 12, 31 )
    ),
    VAR VarDates = [Date]
    var YQ_date  = STARTOFQUARTER( [Date] ) -- this does not work

    RETURN
        ROW (
            "day"     , VarDay,
            "YQ_date" , YQ_date
        )
)

唯一的选择似乎是向日历表添加计算列。但是,如果可以将其弄平,那为什么不把它弄平呢?

3 个答案:

答案 0 :(得分:1)

要使STARTOFQUARTER函数正常工作,您需要在日期表中使用该函数希望返回的日期。

因此,在提供的示例中,您需要添加日期2019-01-012019-04-01

类似这样的东西:

enter image description here

答案 1 :(得分:1)

如果要使用一个DAX表达式构建日历表,则不能使用STARTOFQUARTER函数,因为它不适用于内存表。

不过,您可以使用类似方法来解决此问题:

Calendar = 
GENERATE (
    CALENDAR (
        DATE ( 2016;  1;  1 );
        DATE ( 2020; 12; 31 )
    );  
    ROW (
        "YQ_date"; DATE( Year( [Date] ); ROUNDUP( MONTH ( [Date] ) / 3; 0 ) * 3 - 2; 1)
    )
)

答案 2 :(得分:1)

作为添加的列怎么样?

Calendar =
ADDCOLUMNS (
    CALENDAR ( DATE ( 2016, 1, 1 ), DATE ( 2020, 12, 31 ) ),
    "YQ_date", EOMONTH ( [Date], -1 - MOD ( MONTH ( [Date] ) - 1, 3 ) ) + 1
)