Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
DAX: процентное сравнение данных от месяца к месяцу за определенные дни, например с 1 по 15 число каждого месяца
 
Добрый день!
Существует отдельный срез по годам и месяцам и отдельный срез для дней (прикладываю файл).
Составила меру для сравнение данных из месяца к месяцу за одинаковые промежутки дней, например, выбираю в срезе с днями с 1-15 число и сравниваются только эти дни по продажам. и Все идет гладко, но, когда выбираю сравнение с 1-30 сравнение февраля к январю идет не корректно, сравнивает почему-то данных из января с 1-28, хотя надо с 1-30. ОЧЕНЬ прошу помощи:

Monthly Growth %  =

VAR HasDaySelection = ISFILTERED('_Calendar_дата_стадии'[Дата].[День])

RETURN

// Если нет выбора конкретных дней, использую простой метод сравнения месяцев

IF(

   NOT HasDaySelection,

   VAR CurrentValue = [Сделки, шт без отказов]

   VAR PreviousValue =

       CALCULATE(

           [Сделки, шт без отказов],

           PREVIOUSMONTH('_Calendar_дата_стадии'[Дата])

       )

   RETURN

       IF(

           NOT ISBLANK(CurrentValue) && NOT ISBLANK(PreviousValue),

           DIVIDE(CurrentValue - PreviousValue, PreviousValue, 0),

           BLANK()

       ),

   

   // Если выбраны конкретные дни, использую сложный метод сравнения

 VAR SelectedDayStart = 1

VAR SelectedDayEnd = 30 // Максимальный день, который может быть выбран

// Находим реальные даты в выбранном периоде

VAR MinDate = MIN('_Calendar_дата_стадии'[Дата])

VAR MaxDate = MAX('_Calendar_дата_стадии'[Дата])

// Фильтр для текущего периода (учитываем только дни, которые существуют в месяце)

VAR CurrentValue =

   CALCULATE(

       [Сделки, шт без отказов],

       FILTER(

           ALL('_Calendar_дата_стадии'[Дата]),

           '_Calendar_дата_стадии'[Дата] >= MinDate &&

           '_Calendar_дата_стадии'[Дата] <= MaxDate &&

           DAY('_Calendar_дата_стадии'[Дата]) >= SelectedDayStart &&

           DAY('_Calendar_дата_стадии'[Дата]) <= SelectedDayEnd

       )

   )

// Для предыдущего месяца берем соответствующие дни (с учетом разной длины месяцев)

VAR PreviousMonthDates =

   GENERATE(

       FILTER(

           SUMMARIZE(

               CALCULATETABLE(

                   '_Calendar_дата_стадии',

                   FILTER(

                       ALL('_Calendar_дата_стадии'[Дата]),

                       '_Calendar_дата_стадии'[Дата] >= MinDate &&

                       '_Calendar_дата_стадии'[Дата] <= MaxDate &&

                       DAY('_Calendar_дата_стадии'[Дата]) >= SelectedDayStart &&

                       DAY('_Calendar_дата_стадии'[Дата]) <= SelectedDayEnd

                   )

               ),

               '_Calendar_дата_стадии'[Дата]

           ),

           TRUE

       ),

       VAR CurrentDate = '_Calendar_дата_стадии'[Дата]

       VAR PrevMonth = DATE(YEAR(CurrentDate), MONTH(CurrentDate)-1, 1)

       VAR DaysInPrevMonth = DAY(EOMONTH(PrevMonth, 0))

       VAR DayToTake = MIN(SelectedDayEnd, DaysInPrevMonth)

       VAR PrevDate =

           IF(

               DAY(CurrentDate) <= DaysInPrevMonth,

               DATE(YEAR(PrevMonth), MONTH(PrevMonth), DAY(CurrentDate)),

               DATE(YEAR(PrevMonth), MONTH(PrevMonth), DaysInPrevMonth)

           )

       RETURN ROW("PrevDate", PrevDate)

   )

VAR PreviousValue =

   CALCULATE(

       [Сделки, шт без отказов],

       FILTER(

           ALL('_Calendar_дата_стадии'[Дата]),

           CONTAINS(PreviousMonthDates, [PrevDate], '_Calendar_дата_стадии'[Дата])

       )

   )

RETURN

   IF(

       NOT ISBLANK(CurrentValue) && NOT ISBLANK(PreviousValue) && PreviousValue <> 0,

       DIVIDE(CurrentValue - PreviousValue, PreviousValue, 0),

       BLANK()

   ))

Изменено: Angelina_90 - 13.07.2025 20:38:32
Вывод суммы остатков в Power BI
 
Цитата
написал:
Предлагаю такое решение вашей задачи.
спасибо, попробую таким способом!  
Вывод суммы остатков в Power BI
 
Граждане, всем добрый день!
Помогите разобраться, почему мера не корректно считает итоги.
Суть: есть таблица с объектами и статусами по дням изменения.
Надо на каждую дату найти количество уникальных объектов по статусу "свободно".
НО данный статус не всегда есть в определенной дате, он может быть в предыдущей дате, и такой объект тоже надо считать, если другой статус его не перебил.
Например, объект имеет статус 2 (то есть Свободно) 22.04.2024, далее 25.04.2024 он меняет статус на другой, например 4.
Получается, что этот объект 22.04.2024, 23.04.2024, 24.04.2024 у нас должен отражаться в остатках, а 25.04.2024 уже нет.

Написала меру, которая протягивает статус до следующего не равного 2. Мера отрабатывает правильно, но сумму дает неверную
В результате должно получиться так:
22.04.2024 - остаток 21,
23.04.2024 - остаток 85,
24.04.2024 - остаток 109,
25.04.2024 - остаток 177 и тд. (руками высчитывала)

файл по ссылке https://disk.yandex.ru/d/6w5Lj98F-351Ng
Изменено: Angelina_90 - 07.07.2024 15:35:43
Страницы: 1
Наверх