Страницы: 1
RSS
Ролинг суммы в динамике дат, Сумма за определенные месяцы (идущие порядковым номером) от даты создания документа.
 
Уважаемые форумчане,
Прошу Вашей помощи. Ранее не сталкивался с подобной задачей. Необходимо посчитать через меру в Power Pivot сумму значений за 3 и 4 месяцы, идущие по порядку в зависимости от даты создания файла. Тяжело для меня это объяснить, сделал пример и указал ожидаемый результат в примере.
Пример во вложении.

Если необходимы дополнительные пояснения - прошу сказать об этом.

С Уважением,
Виталий
 
А почему тема в "Курилке"?
 
Цитата
написал:
А почему тема в "Курилке"?
Ошибся с веткой. Подскажите, вы сможете помочь и перенести вопрос в ветку по Excel? Или нужно самому вручную переносить ветку?
 
Я перенесу, но только после того, как Вы объясните, зачем процитировали меня? В чём смысл? На чём хотели сделать акцент?
 
Цитата
Виталий Бермес написал:
в зависимости от даты создания файла. Тяжело для меня это объяснить
У меня есть комп, где отсутствует такая плоская круглая батарейка, которая отвечает за время. Благодаря этому работают все программы, созданные очень давно. Так что дата создания файла - понятие очень относительное. Из примера нифига непонятно, чего Вам нужно. Сформулируйте пояснения понятней и разместите в соответствующем разделе сайта ("Вопросы"). Если нужно посчитать сумму в ячейках с красной границей - сочувствую. С таким подходом единственный выход - сложить значення двух ячеек, выбранных пользователем вручную. Либо макрос, который будет искать красные границы или что там еще Вы хотите...
 
Юрий,

Это профессиональное. Когда работаешь в Outlook я всегда вижу предыдущее сообщение и отвечания на него получается сохраняется цепочка писем. В месенджерах вотсап и телеграм также, когда идут сообщения, всегда выбираю то, на которое хочу ответить и отвечаю на него. Здесь мышенально получилось также.  
Изменено: Виталий Бермес - 03.06.2022 05:11:59
 
_Igor_61, в папке на компьютере есть 4 файла эксель, каждый назван именем в виде даты, когда он был создан. Т.е. если файл был создан 05.03.2022 значит имя файла будет 05.03.2022.

2) Через Power Query я собираю все 4 файла в однин.
3) Добавляю календарь и связываю поле дата в календаре с датой продажи в файле (пункт 2)
4) Вывожу сводную таблицу в эксель в строках выводится название файла (в виде и с типом дата) п.1, в столбы вывожу календарь, год и месяц (дата продажи)
5) В значения мне необходимо через формулу созданную в Power Pivot вывести значение которое будет считаться так:
сумма продаж (п.2) считается как сумма за 2 и 3 месяц идущий с имени\даты файла. Т.е. если в строке идет 12.01.2022, то 2 и 3 месяц по порядку будут март и апрель, соответственно в значения должна быть сумма за март и апрель (2+5). И т.к. далее, в феврале 2 и 3 месяцем будут апрель и май.
Изменено: Виталий Бермес - 03.06.2022 05:22:19 (Удалил картинку, вставилась не корроектно)
 
Вопрос, в календарный месяц попадает одна строка данных или может быть несколько? В примере для 12 января у Вас 4 строки  = 4 разных месяца. От этого зависит подход к решению задач. Если все просто, и одна строка = один месяц, то тут можно ранг по датам использовать и фильтровать ранг больше 2-х. Если на один месяц приходится несколько строк данных, то нужно будет создавать виртуальную таблицу с группировкой по месяцам, а уже затем делать ранг и т.д. Как у Вас данные формируются?
 
Цитата
написал:
для 12 января у Вас 4 строки  = 4 разных месяца.
Владимир, объясните еще раз пож-та, то что указал выше? Не могу понять вопрос.

С Уважением,
Виталий
 
Смотреть скрин: это пример так составлен, что в столбце "дата" на каждый месяц одна строка данных? Для такого подхода можно ранг применить по строкам, но если в столбце "дата" будет несколько строк, относящихся к одному календарному месяцу, то другой подход нужен (более сложный).
 
Vladimir Chebykin, Спасибо, теперь я понял. Честно сказать даже не подумал об этом. По факту в одном месяце несколько строк данных. Поэтому реализуем более сложный вариант. Можете более подробно подсказать, может быть даже на примере, как это реализовать?

Заранее, спасибо.
 
Виталий Бермес, сделал с помощью вычисляемого столбца в таблице "Тест". Суть следующая: для каждой даты выводим номер месяца, а затем считаем кол-во уникальных месяцев с номером меньше либо равному текущему. По сути таким образом получили ранг месяцев от 1 и до .... Далее просто в мере фильтруем этот ранг месяцев и все. На что обращаем внимание в первую очередь - столбец "порядк № месяца". Это № месяца с учетом года. Это необходимо, чтобы на пересечении разных лет мера корректно считалась. Думаю, разберетесь.
 
Vladimir Chebykin, большое спасибо. Буду разбираться!
Первое, что бросилось в глаза, в таблице остались как раз величины за 3 и 4 месяцы (а остальные пропали), а как сделать чтобы была одна цифра, их сумма?
 
Цитата
Виталий Бермес написал:
а как сделать чтобы была одна цифра, их сумма?
вопрос не понятен. От руки набросайте, что хотите в конечном итоге увидеть
 
Виталий Бермес,
Вычисляемый столбец:
Код
month number =
VAR curSource = 'Test'[Source.Name]
VAR firstDateInSource =
    CALCULATE (
        MIN ( 'Test'[Дата] );
        ALL ( 'Test' );
        'Test'[Source.Name] = curSource
    )
VAR firstYM =
    YEAR ( firstDateInSource ) * 12
        + MONTH ( firstDateInSource )
VAR result =
    1
        + YEAR ( 'Test'[Дата] ) * 12
        + MONTH ( 'Test'[Дата] ) 
        - firstYM
RETURN
    result

Мера:
Код
Sum:=CALCULATE ( SUM ( 'Test'[Количество] ); 'Test'[month number] IN { 3; 4 } )
Изменено: surkenny - 03.06.2022 18:21:50
 
Vladimir Chebykin, Спасибо вам большое, разобрался сам, все отлично работает.

Вы мне помогли решить первую часть задачи (посчитать прогноз продаж). Теперь буду пытаться решить вторую (взять аналогичные периоды прогноза но только с фактами продаж.


Surkenny, очень интересно также попробовать ваше решение.

Спасибо.
 
Vladimir Chebykin,

Посмотрите пож-та, во вложении файл, добавил в него еще факт продаж. Прописал меру через if, чтобы факт продаж считался только за те месяцы, где есть прогноз (предыдущая формула, которую вы помогли поставить). Но итог считается некорректно. Он показывает сумму вообще за весь период. Что нужно изменить в мере, чтобы факт продаж считался только за то время когда есть прогноз?

С Уважением,
Виталий
 
Можно так:
Код
Продажи_test :=
CALCULATE (
    SUM ( 'Продажи'[Ко-во] );
    FILTER (
        'Calendar';
        CALCULATE ( [мера 1]; ALLEXCEPT ( 'Calendar'; 'Calendar'[порядк № месяца] ) )
    )
)
 
surkenny, Спасибо Вам огромное, все работает! :)  
 
surkenny, нужна Ваша помощь. Начал работать с мерой, которая считает "Продажи_test" и выявил определенный баг. Из-за того, что мера ссылается на [мера 1] во второй части формулы в сводную таблицу выводится факт продаж только по тем товарам, по которым значение мера 1 не пустое.

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

С Уважением,
Виталий
Изменено: Виталий Бермес - 06.06.2022 09:50:05 (Изменил конкретный товар на обобщенное представление)
 
Цитата
Виталий Бермес написал:
выявил определенный баг
Это не баг. Вам необходимо немного поучить DAX. Иначе так самостоятельно и не сможете писать меры, считающие именно так, как Вам нужно.
Так нужно?
Код
Продажи_test :=
CALCULATE (
    SUM ( 'Продажи'[Ко-во] );
    FILTER (
        'Calendar';
        CALCULATE (
            [мера 1];
            ALLEXCEPT ( 'Calendar'; 'Calendar'[порядк № месяца] );
            ALL ( 'Test' )
        )
    )
)
Изменено: surkenny - 06.06.2022 10:15:25
 
surkenny, да, именно так! Благодарю :D  
 
Виталий Бермес, не так :)
Вот корректно:
Код
Продажи_test:=CALCULATE (
    SUM ( 'Продажи'[Ко-во] );
    FILTER (
        'Calendar';
        CALCULATE (
            [мера 1];
            ALLEXCEPT ( 'Calendar'; 'Calendar'[порядк № месяца] );
            ALL ( 'Test'[Модель] )
        )
    )
)
 
surkenny, еще раз спасибо!:) Сегодня обратил внимание, что, что-то было не так, но вы это исправили быстрее)
Страницы: 1
Читают тему (гостей: 1)
Наверх