在建立日历表时,我遇到了意想不到的困难。
如何将日期转换为季度的第一天?以下是一些示例:
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
)
)
唯一的选择似乎是向日历表添加计算列。但是,如果可以将其弄平,那为什么不把它弄平呢?
答案 0 :(得分:1)
答案 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
)