Бюджет MTD с финансовым календарем

У меня есть простая таблица бюджета, которая показывает мне недельный бюджет: Неделя - Бюджет - Статья

Теперь я хотел бы получить промежуточный итог для сравнения МПД. Для этого делю недельный бюджет на количество рабочих дней:

Budget per Day = DIVIDE([Budget], [# Working Days per Week])

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

Budget MTD = 
CALCULATE (
    SUMX (
        'Calendar',
        [Budget per Day]
    ),
    FILTER (
        ALL ( 'Calendar' ),
        'Calendar'[Fiscal Year]
            = VALUES ( 'Calendar'[Fiscal Year] )
            && 'Calendar'[Fiscal Month Number]
                = MAX ( 'Calendar'[Fiscal Month Number] )
            && 'Calendar'[Date]
                <= MAX ( 'Calendar'[Date] )
            && 'Calendar'[IsWorkingDay] = 1
    )
)

Почему-то я всегда получаю Бюджет на весь месяц. Чего здесь не хватает?

Я думаю, мне как-то нужно добавить что-то вроде < = СЕГОДНЯ, верно?

Эта мера будет использоваться в матрице с фильтром для текущего месяца.

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
0
181
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Поскольку вы используете матрицу с месяцем в строках, MAX( 'Calendar'[Date] ) вернет последний день месяца в текущей строке. Если Calendar[Date] имеет тип Datetime и содержит реальную дату, можно просто добавить условие на TODAY(), как показано ниже.

Budget MTD =
CALCULATE(
    SUMX(
        'Calendar',
        [Budget per Day]
    ),
    FILTER(
        ALL( 'Calendar' ),
        'Calendar'[Fiscal Year]
            = VALUES( 'Calendar'[Fiscal Year] )
            && 'Calendar'[Fiscal Month Number]
                = MAX( 'Calendar'[Fiscal Month Number] )
            && 'Calendar'[Date]
                <= MAX( 'Calendar'[Date] )
            && 'Calendar'[Date]
                <= TODAY()
            && 'Calendar'[IsWorkingDay] = 1
    )
)

Но это просто изменит значение МПД за последний месяц, текущий. Если вместо этого мы хотим отфильтровать каждый месяц, чтобы вычислить MTD до того же дня текущего месяца, то можно добавить столбец 'Calendar'[Fiscal Month Day Number] в таблицу календаря с номером дня с начала месяца (I Я предполагаю, что это может отличаться от дня даты)

Budget MTD =
VAR fiscalYear =
    MAX( 'Calendar'[Fiscal Year] )
VAR fiscalMonthNumber =
    MAX( 'Calendar'[Fiscal Month Number] )
VAR currentFiscalMonthDayNumber =
    CALCULATE(
        MAX( 'Calendar'[Fiscal Month Day Number] ),
        'Calendar'[Date]
            = TODAY(),
        ALL( 'Calendar' )
    )
RETURN
    CALCULATE(
        SUMX(
            'Calendar',
            [Budget per Day]
        ),
        ALL( 'Calendar' ),
        'Calendar'[Fiscal Year] = fiscalYear,
        'Calendar'[Fiscal Month Number] = fiscalMonthNumber,
        'Calendar'[Fiscal Month Day Number] <= currentFiscalMonthDayNumber,
        'Calendar'[IsWorkingDay] = 1
    )

Другие вопросы по теме