Страницы: 1
RSS
Прогнозирование в Power Pivot. Подсчеты на последующие месяцы
 
Уважамые знатоки! Нужна помощь!
Есть данные выгруженные из Power Query.
Нужно спрогнозировать рузультат на последующие месяцы.
 
Доброе время суток.
Не выйдет. Нет в DAX функций, позволяющих использовать начальное/предыдущее состояние вычислений. Это только в Power Query можно сделать на List.Generate, List.Accumulate.
 
Андрей VG,
Я язык М практически не знаю! А как это можно сделать в Query на моем примере?
Мне в Power Pivot удалось просчитать только на 1 месяц через NEXTMONTH, а дальше никак!
 
Цитата
Наталья Сакорская написал:
а дальше никак!
Естественно, можете пояснить почему у вас в данных, для первого начального Base 116000 31.12.2020
Есть по две записи на январь (строки 3, 15) и февраль (строки 4 и 16) - каков в этом смысл? Почему нет данных по группе дат, к которым относится начальное Base?
 
Андрей VG,
Поняла, что не правильно указала данные из запроса.
В примечаниях уточнилась и добавила еще 2 поля.
Запрос создавался из нескольких перекрестных таблиц.
ПОМОГИТЕ!
 
Андрей VG, ну, чисто технически, если горизонт прогнозирования скажем на год и помесячный, то можно сварганить 12 мер, каждая из которых использует результат предыдущей. Мутор, но работать будет.
Вот горшок пустой, он предмет простой...
 
Цитата
PooHkrd написал:
Мутор, но работать будет.
Да, да, конечно. При желании, можно и развёртку найти и, задействовав PRODUCT, чего-то накрутить в трёх циклах - это действительно так надо? Это же статика - статику лучше в Power Query делать, как мне кажется. DAX конечно шустрый, но грузить таким образом...
Код
let
    calcNeed = (subTable) => 
    let
        setOrder = Table.Sort(Table.Distinct(subTable, {"Date"}), {"Date"}),
        items = List.Buffer(Table.ToRecords(setOrder)),
        itemCount = List.Count(items),
        generate = List.Generate(
            () => [i = 0, rec = items{i}, value = rec[Base]],
            each [i] < itemCount,
            each [i = [i] + 1, rec = items{i}, value = [value] * (1 - rec[Churn]) + rec[Sales]],
            each [[rec], [value]]
        ),
        toTable = Table.FromRecords(generate),
        expandRecords = Table.ExpandRecordColumn(toTable, "rec", Table.ColumnNames(subTable))
    in
        expandRecords,
    Source = Excel.CurrentWorkbook(){[Name="Data"]}[Content],
    typed = Table.TransformColumnTypes(Source,{{"Serv", type text}, {"Type", type text}, {"Base", type number}, {"Date", type date}, {"Sales", type number}, {"Churn", type number}}),
    calc = Table.Group(typed, {"Serv", "Type"}, {"temp", calcNeed}),
    result = Table.ExpandTableColumn(calc[[temp]], "temp", Table.ColumnNames(typed) & {"value"}),
    #"Changed Type" = Table.TransformColumnTypes(result,{{"Serv", type text}, {"Type", type text}, {"Base", type number}, {"Sales", type number}, {"Churn", type number}, {"value", type number}, {"Date", type date}})
in
    #"Changed Type"
 
Андрей VG, ну, я, например, прогноз в Пивоте считаю, ибо источник в 5 млн строк. PQ на таком объеме загнется, хоть источники и текстовые. Да и логика прогнозирования рекурсии не подразумевает. К тому же если нужно что-то подкрутить в локальной группе номенклатуры, то пересчет происходит за минуту-две. В PQ опухнешь ждать после изменения каждого параметра, а играться все время в "песочнице" тоже не охота, на её приготовления тоже время тратить надо.
Вот горшок пустой, он предмет простой...
 
Цитата
PooHkrd написал:
ибо источник в 5 млн строк. PQ на таком объеме загнется
Ну, тут смотреть надо, что и как.. Но не настаиваю на единственности верности своего предположения. Вся моя практика (за небольшим исключением) - это решение задач на форуме, что, соответственно, не позволяет выявить овраги. :)
Изменено: Андрей VG - 22.03.2021 11:07:35
 
Андрей VG,
Да!!!! Я в этом, наверное, разбираться буду неделями!
Буду проверять на реальных данных.
Чувствую свою ничтожность.....  8-0  
 
Цитата
PooHkrd написал:
если горизонт прогнозирования скажем на год и помесячный

а какой при этом алгоритм прогнозирования? NEXT ведь использует линейный метод, ошибка не накопится если прогноз на прогнозе строить?
 
Если грубо, то у меня есть полный список потребителей (грузовики) и история расхода на них, раскидываю их по схожим признакам в категории (марки ТС/год выпуска) очищаю от сезонности и рассчитываю потребление в среднем (запчастей) на 1 ТС на 100 км пробега, потом беру прогноз по потребителям кто зайдет, кто выйдет (что продадим/купим) и умножаю средний расход на будущий автопарк/пробег, накидываю обратно сезонность. Отдельно прогнозируется ЗЧ для проведения ТО (тут вообще адресный расчет в разрезе каждого грузовика)/шин/АКБ. прогноз на прогнозе не строю - нет. Ошибка конечно бывает, но для планирования годового бюджета и закупок ЗЧ на ближайшие месяц-два такого алгоритма вполне достаточно чтобы и склад не распух и машины долго в ожидании ЗЧ не простаивали.
Изменено: PooHkrd - 23.03.2021 13:23:04
Вот горшок пустой, он предмет простой...
 
PooHkrd,тоесть по сути ваш прогноз это средняя сумма расходов на 1 ТС на 100 км умноженную на количество и на плановый пробег?

так здесь NEXT вообще не понадобится, а я имел ввиду если строить меру основанную на другой мере (NEXT на NEXT) то будет немного неточно
 
Blood81, с этим не спорю. Но если ТС так хочет, то кто я такой чтобы переубеждать?
Вот горшок пустой, он предмет простой...
Страницы: 1
Наверх