Уважаемые форумчане, всем здравия! Есть данные по работе с поставщиками и условиями оплат. Необходимо общую сумму заказа разделить на 2 платежа: первый и второй в зависимости от условий работы поставщика. Далее представить все это дело в читабельном виде в сводной таблице, где все платежи разделяются по дням с обязательным указанием: первый или второй платеж. Я эту задачку решил в power pivot с помощью расчетов в "вычисляемых столбцах" модели данных (пример с расчетами во вложении), но проблема в том, что при применении любого фильтра в сводной она очень долго пересчитывает данные: по несколько минут. Происходит это из-за того, что в настройках сводной (списки полей) я перенес значения из поля"столбцы" в поле "строки", иначе сводная не читабельна. У меня рабочий файл в 1000 строк примерно и он долго думает, в примере во вложении этого не заметно, но все расчеты там приведены аналогичные. Подозреваю, чтобы ускорить работу сводной необходимо перевести расчеты из "вычисляемых столбцов" в меры, но я не смог. Может кто-то сможет решить данную задачу?
power pivot: перенос вычислений из "вычисляемых столбцов" в меры.
18.01.2018 13:23:24
|
|
|
|
18.01.2018 14:00:36
На первый взгляд у вас там в условных столбцах слишком много излишних условий, для примера в столбце Дата первого платежа, вместо:
Не исключено, что тормоза при расчетах именно из-за избыточных условий, попробуйте для начала упростить формулы в расчетных столбцах на основе предложенного мной, и проверьте быстродействие. После этого можно будет сочинять меры.
Изменено:
Вот горшок пустой, он предмет простой...
|
|||||||||
|
|
18.01.2018 14:04:21
Vladimir Chebykin, сложно оценить на сколько это поможет, потому что у меня файл пример не подвисает, какие бы фильтры я не ставил, но я бы сделал для начала следующее:
- создал таблицу "УсловияОплаты" - так будет проще управлять в дальнейшем расчетами, соответственно расчет можно сразу перенести в меры. - упростил формулы для дат платежей
Модель немного подросла и не влазит даже в архиве по размеру, поэтому |
|||
|
|
18.01.2018 14:10:32
PooHkrd, StepanWolkoff, спасибо за советы, попробую так сделать. Отпишусь по результату.
|
|
|
|
18.01.2018 14:25:30
Вычисляемый столбец не пересчитывается при обновлении фильтров, в отличие от меры. Поэтому на изменение фильтров он реагировать должен быстро.
Однако он увеличивает размер модели данных (много уникальных значений) и хранится в оперативке, что может сказаться на поворотливости. Но вроде бы тоже не тот случай. В вашем случае вычисляемый столбец не обязателен, но я уверен, что причина в чем-то другом - в общей громоздкости сводной в реальном файле, например, или в параллельных пересчетах формул на листе, и т.п. мелкие дополнения: вполне достаточно в вычисляемом столбце так (иначе у вас ошибка разных типов данных вылезает):
Далее мерами:
Столбцы "сумма оплаты", "первый платеж, руб.", "второй платеж, руб." можно удалить (хотя с суммой это и не обязательно)
Изменено:
F1 творит чудеса
|
|||||||
|
|
18.01.2018 14:27:22
все немного об одном и том же написали:)
F1 творит чудеса
|
|
|
|
19.01.2018 11:55:16
описываю полученные результаты. Первым делом я оптимизировал формулы согласно всем вашим советам выше: добавил коэффициенты и доп. таблицу "условия оплаты", но проверка показала, что результат не изменился - время ожидания обработки сводной примерно 3 мин..что очень долго. Тогда я стал искать причины в других местах, прислушавшись к Максим Зеленский, В итоге я обнаружил, что все дело в дополнительной связи в модели данных. у меня было два поля с заказом: в основной таблице с данными и отдельная таблица справочник. Так вот, в сводной было значение из таблицы-справочник, заменив его полем из основной таблицы время расчетов сократилось до 11 сек.! Далее я сделал меры по примеру Максим Зеленский, и время обработки сократилось еще практически в 2 раза - до 6 сек!. Вообщем всем: PooHkrd, StepanWolkoff, Максим Зеленский, спасибо - благодаря Вам проблема решена!
|
|
|
|