Индексирование недели в таблице дат, созданной DAX - PullRequest
0 голосов
/ 01 апреля 2020

Я хочу, чтобы с помощью DAX была создана таблица дат для мощного отчета BI, в котором он будет иметь недельные индексы с номерами от 0, -1, -2 и т. Д. c до go, и сравнивать недели. Я нашел ниже в Интернете (я не помню где)

    DATE = 
  GENERATE (
    CALENDAR( DATE( YEAR( TODAY() ) - 2, MONTH( TODAY() ), DAY( TODAY()) ), TODAY()),
    VAR startOfWeek = 1 // Where 1 is Sunday and 7 is Saturday, thus a 3 would be Tuesday    
    VAR currentDay = [Date]
    VAR days = DAY( currentDay )
    VAR months = MONTH ( currentDay )
    VAR years = YEAR ( currentDay )
    VAR nowYear = YEAR( TODAY() )
    VAR nowMonth = MONTH( TODAY() )
    VAR dayIndex = DATEDIFF( currentDay, TODAY(), DAY) * -1
    VAR todayNum = WEEKDAY( TODAY() )
    VAR weekIndex = INT( ROUNDDOWN( ( dayIndex + -1 * IF( todayNum + startOfWeek <= 6, todayNum + startOfWeek, todayNum + startOfWeek - 7 )) / 7, 0 ) )
  RETURN ROW (
    "day", days,
    "month", months,
    "year", years,
    "day index", dayIndex,
    "week index", weekIndex,
    "month index", INT( (years - nowYear ) * 12 + months - nowMonth ),
    "year index", INT( years - nowYear )
  )
)

Этот отчет должен обновляться ежедневно, но я заметил, что сегодня Индекс VAR Week не рассчитывается правильно. Сегодня 4/1/2020, поэтому я ожидаю, что 3/29/2020 - 01.04.2020 будет иметь недельный индекс 0, однако только 4/1/2020 и 3/31/2020 имеют недельный индекс 0.

Я немного поигрался с этой формулой и, похоже, не могу получить что-то, что последовательно работало бы для отчета, который ежедневно обновляется. Вероятно, я собираюсь просто начать использовать значения недели ISO и года ISO для сравнения, но я потеряю некоторые функции, которые дает мне номер индекса недели. Кто-нибудь может помочь с рабочей формулой?

Спасибо!

1 Ответ

0 голосов
/ 01 апреля 2020

Индекс недели можно вычислить проще, вы можете изменить его на:

VAR weekIndex = ROUNDDOWN((dayIndex + todayNum - startOfWeek - 6)/7;0)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...