Страницы: 1
RSS
Вычисление среднего значения за период (месяцы) в сводной таблице
 
Уважаемые форумчане!

Пожалуйста, подскажите конструкцию вычисления среднего значения "Average Rate" за период (месяцы).
Есть две таблички: первая набор "Pirep" по "Chapter" и "Month", вторая набор "FC" по "Month".
Вычисление "Pirep Rate" происходит следующим образом, из таблицы "Pirep" берется сумма "Pirep" за месяц, умножается на 1000 и делится на сумму "FC" за месяц из таблицы "Utiliuzation".
Теперь нужно вычислить среднее значение "Average Rate" =  сумма "Pirep Rate" за все месяцы / количество месяцев.
Таблички со сводной таблицей и желаемым результатом вложены.
Изменено: ac1-caesar - 07.03.2019 14:22:57 (коррекция формулировки)
 
Что-то никак не могу логику вычислений понять ... :)  
 
Пойду на другой форум за помощью... :(  
 
Угрожаете? Обиделись? :)
детский сад
 
ac1-caesar, а с какой целью вы меры называете сложными названиями, после чего в сводной их переименовываете в простые? Как помогающим угадывать какой формулой вы формируете значения в сводной?
Вот даже такие нюансы влияют на скорость помощи. Если вы предоставили удобную и понятную модель, и остается только решить указанную вами проблему, то вопросов нет. А теперь помощники должны придумывать что и где вы имели ввиду. Лично у меня на это ни времени ни желания нет.
Вот горшок пустой, он предмет простой...
 
Цитата
vikttur написал:
Угрожаете? Обиделись?
Чтобы потом модераторы не писали, что тема дублирована на другом форуме.
 
PooHkrd, не могу с Вами согласиться. Все названия корректны и описывают назначение.
Цитата
ac1-caesar написал:
нужно вычислить среднее значение "Average Rate" =  сумма "Pirep Rate" за все месяцы / количество месяцев.
Не знаю куда проще.
 
Обратите внимание на картинку: как называются меры в сводной и как в модели данных. По-разному, значит вы меняли их названия в сводной. Зачем? Почему нельзя было сразу назвать меру, так как вам нужно? Как теперь определить какая мера в сводной соответствует какой мере в модели данных? По смыслу? Увольте. Если хотите помощь - уважайте чужое время делайте понятные примеры - и будет вам счастье.
Вот горшок пустой, он предмет простой...
 
Уважаемый PooHkrd, Вы уже давно разобрались что к чему. Но продолжаете задавать вопросы - "зачем".
Затем, что к примеру создавая меру вычисляющая сумму "Pirep", невозможно назвать уже существующим именем столбца, поэтому и названо "SumOfPireps".
В первом своем посте все корректно описано. Не нравится названия мер в моем примере, переназовите как нравится. Важно что сами таблицы созданы, меры вычисления созданы, сводная построена. Нужен всего лишь алгоритм необходимого вычисления.
А конкретно подкорректировать меру "AveragePirepRate" чтобы она таки вычисляла среднее значение меры "PirepRate" за все месяцы.
Изменено: ac1-caesar - 13.03.2019 21:38:18
 
Согласен с PooHkrd, для себя конечно можно называть и переименовывать как угодно, но на форум лучше давать понятный пример максимально просто и понятно (хотя то, что ТС показывает в примере, что должно быть в итоге, уже огромный  +).
По теме: думаю не получится решить задачу в том ключе, каком хочет ТС. У Вас есть расчет меры вида:
Код
=DIVIDE([SumOfPireps]*1000;[SumOfFC_Utilization])

Вы сначала хотите сделать расчет мерой за месяц, затем итоги по месяцам сложить и разделить на кол-во месяцев. В народе подобный метод называется посчитать "СРЕДНЕЕ ПО СРЕДНЕМУ". С математической точки зрения это не правильно, поэтому такую логику реализовать не получится.
Поправьте меня, если я не прав.
Изменено: Vladimir Chebykin - 14.03.2019 07:15:15
 
Цитата
Vladimir Chebykin написал:
Вы сначала хотите сделать расчет мерой за месяц, затем итоги по месяцам сложить и разделить на кол-во месяцев.
Vladimir Chebykin, да совершенно верно. Возможно с математической точки зрения не верная логика, но результат получить нужно. Если у Вас есть видение и возможность, поправьте пожалуйста либо логику вычисления, либо существующий алгоритм.
 
Цитата
ac1-caesar написал:
поправьте пожалуйста либо логику вычисления, либо существующий алгоритм
Если хотите суммировать значения нескольких периодов, так может стоит и исходные меры изменить и считать значения за указанный промежуток времени?
Пример:
1. в мере "SumOfPireps" сумму считать не за конкретный месяц а за весь выбранный период.
2. аналогично в мере "SumOfFC_Utilization" сумму считать не за конкретный месяц а за весь выбранный период
тогда уже вы может среднее посчитать за выбранный диапазон месяцев.

Но для реализации такого механизма нужен календарь! Я Вам уже писал об этом в предыдущих Ваших темах о его важности при работе с несколькими таблицами.
 
Vladimir Chebykin, следуя Вашему предложенному примеру, если брать сумму за весь период "SumOfPireps" и "SumOfFC_Utilization", то вычисления "PirepRate" будут некорректны (см. вложенный пример колонки "Total Pirep", "Total FC", "Ex. Rate"). Тут именно нужно посчитать "PirepRate" за каждый месяц, потом собрать их сумму за весь период и разделить на количество месяцев в периоде чтобы получить "Average Rate".
Кстати, не могли бы Вы скинуть любой пример использования календаря? Спасибо.
Изменено: ac1-caesar - 14.03.2019 10:06:20
 
По сути, для вычисления меры "AveragePirepRate", нужна конструкция вроде
Код
=DIVIDE(SUMX(Pireps;[PirepRate]);3)
количество месяцев вручную прописано, но нужно динамическое значение, так как период может содержать больше или меньше.
Изменено: ac1-caesar - 14.03.2019 10:16:35
 
Цитата
ac1-caesar написал:
Кстати, не могли бы Вы скинуть любой пример использования календаря? Спасибо.
вот здесь в Вашей теме ссылка от Андрей VG, есть пример с календарем
Цитата
ac1-caesar написал:
нужно посчитать "PirepRate" за каждый месяц, потом собрать их сумму за весь период
Вот именно это я и имел ввиду про метод "СРЕДНЕЕ ПО СРЕДНЕМУ", когда по готовому вычислению делают еще дополнительное вычисление. Вы хотите в мере произвести следующие последовательные операции:
1. вывести итог за месяц по каждому значению строки сводной
2. просуммировать полученные результаты за указанный период и вычислить среднее.
Я до конца не уверен в нижеследующем, но проблема заключается в том, что Power Pivot не умеет создавать виртуальную (сгруппированную) сводную таблицу с произведенными вычислениями, чтобы по ней еще  наложить какие-либо вычисления. Виртуальная "плоская" таблица - пожалуйста, а виртуальная сводная - нет. Либо я еще не дорос до таких знаний в Power Pivot.
Изменено: Vladimir Chebykin - 14.03.2019 11:18:35
 
Цитата
ac1-caesar написал:
Вы уже давно разобрались что к чему.
Это не так - я даже не пытался, когда увидел, что имена в сводной и в модели не совпадают - у меня просто не было на это времени. Работаю я, а формулы эти - это так, хобби.
Я не учу вас жить - жизнь сама научит. Но, вы получили бы решение вашей проблемы на пару дней раньше.
Предлагаю как-то так:
Код
AveragePirepRate:=CALCULATE(
   DIVIDE(
      SUMX(Pireps;[PirepRate]);
      CALCULATE(
         COUNTROWS(VALUES(Pireps[Month]));
         ALL(Pireps)
      )
   );
   ALL(Pireps[Month])
)

Это без календаря. Если бы с календарем, то внутреннего CALCULATE можно было бы избежать.
Изменено: PooHkrd - 14.03.2019 12:41:04
Вот горшок пустой, он предмет простой...
 
PooHkrd, вот спасибо, работает! Правда не совсем понимаю логику построения... :(  
 
Цитата
ac1-caesar написал: Чтобы потом модераторы не писали, что тема дублирована на другом форуме.
Для этого достаточно самостоятельно указывать ссылки на дубли тем.
 
Цитата
Vladimir Chebykin написал:
вот здесь в Вашей теме  ссылка  от  Андрей VG , есть пример с календарем
Да, вспомнил, спасибо. Буду разбираться.
 
Цитата
ac1-caesar написал:
Правда не совсем понимаю логику построения
Взял за основу меру от Владимира, вместо цифры 3 подставил значение
Код
CALCULATE(
     COUNTROWS(VALUES(Pireps[Month]));
     ALL(Pireps)
)

Здесь при помощи функции CALCULATE снимаю фильтры сводной таблицы ALL(Pireps) и в этом контексте считаю количество уникальных значений по столбцу Pireps[Month]. Это будет количество месяцев. Если, скажем вы захотите наложить на этот столбец фильтрацию, то вместо ALL надо будет использовать ALLSELECTED.
Дальше полученное внутри DIVIDE выражение помещаю в контекст со снятой фильтрацией со столбца Pireps[Month], что позволяет рассчитывать её одинаковой для всех месяцев в сводной.
Вот горшок пустой, он предмет простой...
 
PooHkrd, вот за детализацию и пояснение огромное спасибо! Это очень полезно.
Страницы: 1
Наверх