仅在PowerBI中生成季度的日期表

时间:2018-11-02 22:51:31

标签: calendar powerbi dax

我正在尝试使用PowerBI中的DAX生成一个表以用作日期表,但是在这种情况下,我试图生成一个四分之一列表,而不是传统的天数列表,特别是一刻钟。

我尝试过使用CALENDAR生成日期,然后将其转换为季度,但是我似乎找不到找到将生成的日期转换为季度第一天的方法。

QTRMatrix = 
ADDCOLUMNS(
    STARTOFQUARTER(CALENDAR(MIN(Bookings[InvoiceMonth]),TODAY())),
    "Period", "Quarter"
)

这给了我一个错误说明:

  

“函数'STARTOFQUARTER'不能与ADDCOLUMNS或SUMMARIZE函数添加的列一起使用。”

我也尝试了在没有ADDCOLUMNS的情况下进行此操作,该错误会产生与上述相同的错误。

有人可以建议我如何做到这一点吗?

1 个答案:

答案 0 :(得分:0)

以下DAX将产生一个非常有用的日历表:

只需为您的时间范围创建两个量度:

Min Date :=
MIN( ‘Table’[Date] )

Max Date :=
MAX(‘Table’[Date] )

然后根据以下日期构建日历:

Dates :=
VAR MinDate = [Min Date]
VAR MaxDate = [Max Date]

VAR BaseCalendar =
    CALENDAR ( MinDate, MaxDate )
RETURN
    GENERATE (
        BaseCalendar,
        VAR BaseDate = [Date]
        VAR YearDate =
            YEAR ( BaseDate )
        VAR MonthNumber =
            MONTH ( BaseDate )
        VAR YrMonth =
            100 * YEAR ( BaseDate )
                + MONTH ( BaseDate )
        VAR Qtr =
            CONCATENATE ( "Q", CEILING ( MONTH ( BaseDate ) / 3, 1 ) )
        VAR YrMonthQtr =
            100 * YEAR ( BaseDate )
                + MONTH ( BaseDate )
                & CONCATENATE ( "Q", CEILING ( MONTH ( BaseDate ) / 3, 1 ) )
        VAR YrMonthQtrDay =
            100 * YEAR ( BaseDate )
                + MONTH ( BaseDate )
                & CONCATENATE ( "Q", CEILING ( MONTH ( BaseDate ) / 3, 1 ) )
                & DAY ( BaseDate )
        RETURN
            ROW (
                "Day", BaseDate,
                "Year", YearDate,
                "Month Number", MonthNumber,
                "Month", FORMAT ( BaseDate, "mmmm" ),
                "Year Month", FORMAT ( BaseDate, "mmm yy" ),
                "YrMonth", YrMonth,
                "Qtr", Qtr,
                "YrMonthQtr", YrMonthQtr,
                "YrMonthQtrday", YrMonthQtrDay
            )
    )

要获取季度的第一天,只需添加一个计算列以标记每个季度的第一天。