Создать таблицу дат только для кварталов в PowerBI - PullRequest
0 голосов
/ 03 ноября 2018

Я пытаюсь сгенерировать таблицу с использованием DAX в PowerBI для использования в качестве таблицы дат, однако в этом случае вместо традиционного списка дней я пытаюсь сгенерировать список кварталов, в частности, первую дату четверть.

Я пытался использовать CALENDAR для генерации дней, а затем преобразовывать их в кварталы, однако я не могу найти способ преобразовать сгенерированные дни в первый день квартала.

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

Это дает мне сообщение об ошибке:

«Функция 'STARTOFQUARTER' не может использоваться со столбцами, добавленными функциями ADDCOLUMNS или SUMMARIZE."

Я также пробовал это без ADDCOLUMNS, который выдает ту же ошибку, что и выше.

Может кто-нибудь сообщить, как мне этого добиться?

1 Ответ

0 голосов
/ 03 ноября 2018

Следующий 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
            )
    )

Чтобы получить первый день квартала, просто добавьте вычисляемый столбец, который помечает первый день каждого квартала.

...