Страницы: 1
RSS
PQ Расчёт средневзвешенных результатов по месяцам, где процессы могут выходить за рамки календарного месяца
 
Здравствуйте!

Имеется такая таблица с исходными данными и 3 запросами:
"Календарь" является вспомогательным и берёт данные для отсчёта из запроса "Факты"
"Факты" данный запрос просто сформирован на основании исходных данных
"Среднее" это запрос, который непосредственно вычисляет
Суть в том, что имеется набор процессов, которые могут быть не привязаны к конкретному месяцу,  они могут начинаться в одном и заканчиваться в другом, или же находиться в одном, но не длиться весь месяц. "Result" относиться ко всему временному периоду и на основании запроса Среднее можно увидеть какой был результат за день.

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

Буду благодарна за любую помощь!
 
В сводной таблице «Среднее» не подходит так как оно разделяет не на количество дней в месяце, а на количество записей в запросе «среднее»  
 
Цитата
asnov написал:
с этим возникает проблема, не до конца понимаю каким образом можно прописать формулу
Это же просто в Power Query
Код
// Среднее (2)
let
    Source = Table.AddColumn(Факты, "temp", (rec) =>
        let
            totalMinutes = Duration.TotalMinutes(rec[end] - rec[start ]) + 1,
            step = rec[result] / totalMinutes,
            dateMinutes = Table.FromColumns({List.DateTimes(rec[start], totalMinutes, #duration(0, 0, 1, 0))}, type table [base=DateTime.Type]),
            addStep = Table.AddColumn(dateMinutes, "step", each step),
            addDate = Table.AddColumn(addStep, "Дата", each Date.From([base]), Date.Type),
            stats = Table.Group(addDate, {"Дата"}, {{"weight", each Table.RowCount(_), Int64.Type}, {"value", each List.Sum([step]), Number.Type}})
        in
            stats
    ),
    removeTempColumns = Table.RemoveColumns(Source,{"start", "end", "result"}),
    expand = Table.ExpandTableColumn(removeTempColumns, "temp", {"Дата", "weight", "value"}, {"Дата", "weight", "value"}),
    result = Table.TransformColumnTypes(expand, {{"Дата", type date}, {"weight", Int64.Type}, {"value", type number}}),
    #"Inserted Year" = Table.AddColumn(result, "Год", each Date.Year([Дата]), Int64.Type),
    #"Extracted Month Name" = Table.TransformColumns(#"Inserted Year", {{"Дата", each Date.MonthName(_), type text}}),
    #"Grouped Rows" = Table.Group(#"Extracted Month Name", {"Дата", "Год"}, {{"sum", each List.Sum([value]), type number}}),
    #"Added Custom" = Table.AddColumn(#"Grouped Rows", "avg", each [sum]/Date.DaysInMonth(Date.From("01-"&[Дата]&"-"&Text.From([Год])))),
    #"Removed Columns" = Table.RemoveColumns(#"Added Custom",{"sum"})
in
    #"Removed Columns"
Еще вариант
Изменено: Михаил Л - 15.04.2021 17:50:13
 
Спасибо огромное!
 
Цитата
Михаил Л написал:
просто в Power Query
Можете подсказать, что нужно дописать в «Среднее» если есть несколько видов таких процессов, которые могут происходить в одно и то же время, но оцениваются «Result” по разному и размещаются в фактах. Просто с данным запросом оно находит среднее за месяц при условии, что мы имеем один процесс.
Страницы: 1
Наверх