Выбрать дату в календареВыбрать дату в календаре

Страницы: 1 2 След.
Среднее значение в "Итогах" на основании уникальных значений
 
Prosvetov,

Огромное спасибо!
Как же всё просто оказалось!
Среднее значение в "Итогах" на основании уникальных значений
 
gling, спасибо, но, что-то я не могу разобраться в вашем примере совсем.
Зачем "план-факт", операции и т.д., если мне нужно - только среднее значение за год на основании количеств уникальных товаров?
Поясните, пожалуйста, свой пример или, возможно, вы приложили не тот файл?
Среднее значение в "Итогах" на основании уникальных значений
 
Добрый день,
Прошу помочь с решением следующей задачи:
1. Есть Таблица с списком, допустим, проданных товаров за период (Дата | Id товара | Кол-во | Цена | Сумма)
2. Необходимо рассчитать количество уникальных товаров, проданных за месяц
3. Среднее количество проданных уникальных товаров за год.

В файле - пример таблицы, где в каждой строке собрано количество уникальных товаров, проданных за месяц.
Код
Мера: Кол-во уникальных товаров за месяц:= DISTINCTCOUNT('Таблица[Id товара])
Но, используя эту меру, в "Итогах" я получаю количество уникальных товаров за год. А как определить среднее значение, на основании ежемесячных итогов?

Заранее благодарю за ответы.
Расчет значений за предыдущий год в сводной таблице
 
Ок, закончили.
Еще раз, спасибо!
Расчет значений за предыдущий год в сводной таблице
 
Alex, ОГРОМНОЕ спасибо!
Дополнительный вопрос, если позволите, а то я совсем запутался, .

Итоговую меру:
М1:
Код
=CALCULATE([Вся прибыль]; 'Заказы'[Id]<=5; SAMEPERIODLASTYEAR('Calendar'[Date]))
, по идее, можно переписать как
М1А
Код
=CALCULATE([Вся прибыль]; FILTER(ALL('Заказы');'Заказы'[Id]<=5); SAMEPERIODLASTYEAR('Calendar'[Date]))
, согласно "Руссо М., Феррари А., Подробное руководство по DAX,, стр. 167"

А мера:
М2:
Код
=CALCULATE([Вся прибыль]; FILTER('Заказы';'Заказы'[Id]<=5); SAMEPERIODLASTYEAR('Calendar'[Date]))
отличается от М1А лишь отсутствием функции ALL().

При этом, М2 всегда "пустая" (в случае установленного фильтра по году).
Почему? Как влияет на исходный контекст фильтра первый аргумент в М2?
Расчет значений за предыдущий год в сводной таблице
 
Alex, спасибо за ответ, но, все равно непонятно.
Если Вас не затруднит, то как, в таком случае, должен выглядеть аргумент фильтра CALCULATE или вся формула меры целиком?
Расчет значений за предыдущий год в сводной таблице
 
Alex, согласен, сглупил. Конечно, это - "ошибка". (в "нервном порыве" написал, когда ничего не получалось).
До этой "ошибки" формула была следующей:
Прибыль ПГ:=CALCULATE([ВСЯ Прибыль];filter('Заказы';'Заказы'[Id]<=5);SAMEPERIODLASTYEAR('Calendar'[Date]))

Но при такой формуле в мера не вычислялась вовсе. Как я понимаю, из-за того, что Sameperiod...пытался наложиться на даты из таблицы "Прибылей". А т.к. связи между ними нет, то и - пусто.

Другой вариант формулы был:
Прибыль ПГ:=CALCULATE([ВСЯ Прибыль];filter('Заказы';'Заказы'[Id]<=5 && SAMEPERIODLASTYEAR('Calendar'[Date])))

Но при такой, как раз "дублируются" данные - одинаковые, что за текущий, что за предыдущий годы.

"Сработал" такой вариант: Прибыль ПГ:=CALCULATE([Прибыль ТГ];SAMEPERIODLASTYEAR('Calendar'[Date]))
Но, непонятно, что не так со вторым вариантом?
Расчет значений за предыдущий год в сводной таблице
 
Не влезло "вложение" с первого раза (более 300 Кб). Прилагаю в Архиве (уж, простите).
Расчет значений за предыдущий год в сводной таблице
 
Добрый день,
Прошу помочь разобраться как отразить в сводной таблице корректные данные за предыдущий год.
Исходные данные:
1. Таблица "заказы", с данными о заказах с некой "опорной датой" (Id заказчика, Id заказа, опорная дата, стоимость заказа)
2. "Опорная дата" связана с "Календарем"
3. Дополнительно существует еще несколько таблиц, допустим, две, которые связаны с основной таблицей "Заказов" по Id заказа.
3.1. Одна таблица - оплаты по Id заказа
3.2. Другая таблица - расходы по Id заказа
3.3. Даты в этих таблицах не имеют значения
4. Прибыль рассчитывается как разница между "Оплатами" и "Расходами"

Необходимо создать сводную таблицу, в которой бы все было сведено по Заказчику (строки). Столбцы - Даты (в частности, ГОДЫ из Календаря).
В значения необходимо иметь возможность вывести данные о Прибыли в текущем и предыдущим году с учетом дополнительных фильтров.

Если накладываю только один фильтр на "Прибыль" вроде Sameperiodlastyear('Каленадь'[дата]), то вроде как считает, как надо. Если дополнительно накладываю фильтр на заказы, то значения для Прибылей становятся одинаковыми, что за текущий, что за предыдущие годы.

Пример - во вложении.

В чем моя ошибка?
Заранее благодарю за конструктивные ответы.
Power Pivot. Средняя загрузка в день (за месяц) в зависимости от количества дней занятости
 
Alex,

Спасибо за наводку, такая книга есть, правда, застрял на 4-й главе с контекстом/строкой. Никак не дается :)
Power Pivot. Средняя загрузка в день (за месяц) в зависимости от количества дней занятости
 
Alex, surkenny,

Сейчас смотрю на решения и вижу - да, всё, оказывается, не так и сложно. Ход решения понятен.

...еще было бы здорово научиться, как находить решения для подобных задач.
Этому можно научиться или это врожденное? ;)

Еще раз, благодарю.
Power Pivot. Средняя загрузка в день (за месяц) в зависимости от количества дней занятости
 
surkenny, спасибо за ответ!
Power Pivot. Средняя загрузка в день (за месяц) в зависимости от количества дней занятости
 
Alex, благодарю за ответ! Разобрался, помогло :)

Один доп. вопрос:
Цитата
написал:
на большом объеме производительность будет так себе
- это, скорее, относится к предложенному Вами решению или сама "задача" не предполагает оптимального решения в силу своей "специфичности"?
Power Pivot. Средняя загрузка в день (за месяц) в зависимости от количества дней занятости
 
Добрый день,

прошу помочь советом с решением следующей задачи:
1. Есть таблица (см. Пример.xlsx), в которой обозначены работы (ID) и даты, в которые эти работы были проведены.
2. Необходимо рассчитать: среднее количество работ, которыми занимались в месяц.
3. Возможно, для созданной меры есть более простое написание, нежели сделанное через Filter(...), см. Пример.

Описание "Примера":
1. Таблица слева - исходные данные
2. Таблица справа - сводная (из PP)
3. Таблица внизу ("Сводная (по месяцам)") - требуемый итог.

Создал меру, которая показывает по дням "была ли работа" или нет. Но, данная мера при сворачивании месяца также отражает общее количество уникальных работ, без учета количества дней, в которые этими работами "занимались".

А хотелось бы создать меру так, чтобы она отражала именно среднее количество работ в месяц с учетом количества дней "отданных" конкретной работе.
+ При отсутствии в "Строках" сводной таблицы фильтра по ID работ, таблица бы также отражала среднее суммарное значение количества работ за месяц/квартал/год (в зависимости от варианта фильтра по "столбцам").

Заранее благодарю за конструктивные советы.
Построение графика в Эксель (гистограмма с накоплением + разделение по годам)
 
Спасибо за вариант.

Наверное, так и попробую сделать (наложением), т.к., видимо, других вариантов нет.
Построение графика в Эксель (гистограмма с накоплением + разделение по годам)
 
Подобный вариант не совсем подходит, т.к. позволяет визуально сравнить только один месяц за разные годы. Если смотреть на данные за весь год, то сгруппированные помесячно данные затрудняют увидеть картину за год в целом, особенно, когда данные - за весь год (12 месяцев).

Как вариант, было бы здорово, например, если один год, допустим, текущий вывести в виде гистограммы с накоплением, а остальные - графиками с накоплением.
Тем самым, видна была бы картина в целом за год + данные за предыдущие годы в виде референса.

В любом случае, спасибо за отклик. :)
Построение графика в Эксель (гистограмма с накоплением + разделение по годам)
 
Добрый день,
Прошу помочь советом.
Есть большая таблица вида: Дата/Категория/Тип/Количество (в PP) + Таблица дат.
Необходимо построить график так, чтобы:
1. Ось х - месяцы
2. Ось у - значения с накоплением по категориям и типам (гистограмма с накоплением)
3. Каждый год - это отдельная гистограмма на одном и том же графике.

Как ни стараюсь, только годы и складываются в "гистограмму с накоплением".

Во вложении - пример графика (от руки).

Заранее благодарю за конструктивные ответы.
Оптимизация скорости вычисления количества рабочих дней выполнения работ в PQ
 
Цитата
написал:
1. List.Buffer списка рабочих дней, отсортированного по возрастанию
2. Ищем позиции дат начала и окончания в списке рабочих дней с помощью List.PositionOf с опцией Occurrence.First
3. Разница позиций даст искомый рез-т
Спасибо за оперативный ответ.
Всё "взлетело" (по скорости).
Благодарю еще раз. Тему можно закрывать.
Оптимизация скорости вычисления количества рабочих дней выполнения работ в PQ
 
Добрый день,
Сразу прошу прощения, что не прикладываю файл с примером, т.к. вопрос больше теоретический.
  1. Есть большая таблица (более 100 тыс. строк) со списком работ, выполненных за год. Для каждой "работы" указана дата/время начала и окончания выполнения (Id работы, <... дополнительные данные по работе>, ДатаВремяНачалаВыполнения, ДатаВремяОкончания).
  2. Есть отдельная таблица со списком всех рабочих дней в году.
  3. Необходимо вычислить количество рабочих дней для каждой выполненной работы. Далее вычисляется общее количество часов/минут для получения чистого рабочего времени, в течение которого работа была выполнена.
Проблема — очень медленная скорость вычисления количества рабочих дней для каждой работы.

Порядок вычисления:
1. Добавляется столбец со списком всех календарных дней, в течение которых выполнялась работа:
Код
List.Dates(Date.From([DateTimeBegin]) + #duration(1,0,0,0), Number.From(Date.From([DateTimeEnd])) - Number.From(Date.From([DateTimeBegin])), #duration(1,0,0,0))
2. Затем добавляется еще один столбец, в котором собирается список только рабочих дней.
Код
List.Select([список из п1.], each List.Contains("Таблица, содержащая только столбец с рабочими днями", _))

Понимаю, что происходит каждый элемент одного списка сравнивается с каждым элементом другого. И это, скорее всего, и влияет на скорость.
Пробовал другой вариант для п.2 через List.Intersect() но скорость вычислений примерно такая же.

Хотел спросить совета, может быть возможен другой, более быстрый алгоритм для расчета рабочих дней?
Как вариант, создавать список для сравнения не рабочих дней, а нерабочих. Их - меньше, стало быть и скорость будет чуть выше?

Или же есть еще более быстрый вариант?

Заранее благодарю за конструктивные ответы.
Создание "промежуточной" сводной таблицы в Power Pivot, получить промежуточные сводные данные для последующей фильтрации и агрегирования
 
Благодарю за ответ.
Тему можно закрывать.
Создание "промежуточной" сводной таблицы в Power Pivot, получить промежуточные сводные данные для последующей фильтрации и агрегирования
 
Благодарю за ответ, surkenny.

1. Буду рад дождаться Вас "у компа", чтобы получить вариант с решением задачи через PQ, т.к. очень интересует также и такой вариант.
Цитата
surkenny написал:
Sviman144 ,
1. Есть более быстрый вариант: группировка по id, в агрегации 2 столбца: сумма по минутам и просто вся таблица. Затем фильтруете по сумме > 60 и разворачиваете из столбца с таблицей дату и сумму.
2. Не у компа.
2. А можно, в принципе, получить еще один столбец в таблице PP, где бы для каждой строки рассчитывалась общая сумма выполнения заявки? В строках, где Id заявок дублируется, также, получается, дублировалась сумма. (получается, альтернатива столбцу в PQ)

3. Спасибо. Так - "работает"! Но слышал, что добавление столбцов вместо мер менее правильный вариант, т.к. производительность "мер" гораздо выше нежели "доп. столбцов".
Изменено: Sviman144 - 16.05.2024 11:57:21
Создание "промежуточной" сводной таблицы в Power Pivot, получить промежуточные сводные данные для последующей фильтрации и агрегирования
 
Цитата
написал:
А так?Код=
var a = SUMMARIZE('Таблица1';'Таблица1'[StageId];"tmp";IF(SUM('Таблица1'[Итого, мин.])>60;SUM('Таблица1'[Итого, мин.]);BLANK()) )

return SUMX(a;[tmp])
Круто! Не знал, что "так" можно с "мерами" :)
Спасибо!
Создание "промежуточной" сводной таблицы в Power Pivot, получить промежуточные сводные данные для последующей фильтрации и агрегирования
 
Цитата
Михаил Л написал:
IF(SUM('Таблица1 1'[Итого, мин.])>60;SUM('Таблица1 1'[Итого, мин.]);BLANK())
Спасибо, так - похоже, но:
1. Общий итог в новом столбце отражает полному количеству минут (с учетом тех заявок, которые не удовлетворяют критерию).
2. Если добавить еще один столбец, группирующий заявки (например, по отделу), то в конечной сводной сумма считается также общая, без учета критерия

Создание "промежуточной" сводной таблицы в Power Pivot, получить промежуточные сводные данные для последующей фильтрации и агрегирования
 
Surkenny, спасибо за ответ, но, по-моему, это немного не то. Не хотелось бы в итоговой сводной таблице использовать дополнительные столбцы или срезы.
Хотелось бы получить нужную "сумму" непосредственно уже в Power Pivot. Такое возможно?

"Исходная" таблица создается изначально в PQ как результат запроса к БД.

По идее, формула должна быть что-то вроде:
Код
мера := CALCULATE(
SUM ( 'Таблица1'[Итого, мин.] );
SUM ( 'Таблица1'[Итого, мин.] ) > 60
)
, но такая - не работает. :)

Пробовал добавить доп. столбец в PQ с формулой вроде:
Код
Table.AddColumn(Источник, "tmp", each List.Sum(Table.SelectRows(Источник (x) => x[StageId]  = _[StageId])[#"Итого, мин."]))
,но оооочень долго считает результат. Может быть есть более быстрый вариант, как "выделить" только те заявки, у которых сумма выполнения больше определенного времени, в том же PQ, если в PP это нереально?
Изменено: Sviman144 - 15.05.2024 19:49:57
Создание "промежуточной" сводной таблицы в Power Pivot, получить промежуточные сводные данные для последующей фильтрации и агрегирования
 
Добрый день,

Прошу помочь советом в следующей ситуации:
1. Есть некий набор данных - идентификатор заявки (StageId), дата создания заявки (Дата заявки) и время выполнения заявки.
2. Одна заявка может выполняться несколько раз

Необходимо получить некий промежуточный результат - таблица вида: StageId, Суммарное время выполнения с тем, чтобы в результирующую таблицу отобрать только заявки, общая длительность которых, например, больше 60 минут.

Пробовал сделать промежуточную таблицу в Power Pivot через Summarize:
Код
мера:=SUMMARIZE('Таблица1';'Таблица1'[StageId];"tmp";sum('Таблица1'[Итого, мин.]))
, но неизменно получаю, что "выражение ссылается на несколько столбцов".

Подскажите, пожалуйста, что не так делаю.
Заранее благодарю за конструктивные ответы.
Связи между таблицей дат и данными для расчета мер в диапазоне дат, Как связать таблицу дат с данными, если в данных - несколько временных значений
 
Большое спасибо.
Задача, благодаря вам, решена.
Тему можно закрывать :).
Связи между таблицей дат и данными для расчета мер в диапазоне дат, Как связать таблицу дат с данными, если в данных - несколько временных значений
 
Спасибо.
Т.е. "Таблицу дат" необязательно связывать с таблицами? Достаточно того, чтобы она была, чтобы можно было формировать сводную таблицу в разрезе заданных периодов?
Связи между таблицей дат и данными для расчета мер в диапазоне дат, Как связать таблицу дат с данными, если в данных - несколько временных значений
 
Добрый день,
Прошу помочь конструктивным советом для решения задачи: Определить суммарную стоимость заказов в производстве в каждом заданном периоде (неделя, месяц, год) с учетом ранее выполненных отгрузок по ним.

Т.е. необходимо создать сводную таблицу, которая бы суммировала общую стоимость заказов в производстве за указанные периоды, допустим, неделя, месяц за вычетом текущих и более ранних отгрузок по ним.

Есть две таблицы:
№1. список заказов, даты начала/конца производства, а также стоимость заказов
№2. список отгрузок по этим заказам (дата + сумма отгрузки).

Через обычные таблицы + формулы, в принципе, получается, но трудоемко и нет гибкости для получения результатов в разных временных интервалах.
Хотелось бы сделать через Power Pivot (если возможно). Но, непонятно, как таблицу дат привязать к нескольким датам в разных таблицах и как правильно создать меры.

В файле-примере:
1. Две исходные таблицы (Заказы, Отгрузки)
2. Справа расписаны результаты вычислений для каждого месяца на основе исходных таблиц
3. Итоги (строка "Результат") в таблице в нижнем правом углу - итоговые значения, которые должны получиться в сводной таблице.

Заранее благодарю за помощь.
Преобразование таблицы в Power Query. Работа со списками
 
Цитата
написал:
посмотрите, что значит аргумент List.Skip(nm) в шагах а0 и а2
Спасибо, обязательно посмотрю, но пока еще разбираюсь с кодом от AlienSx. С функциями и "ручным" написанием кода у меня - "полный аут" (в основном, всё через пункты меню в PQ пытаюсь сделать). Так что, разбираться и разбираться еще :)
Преобразование таблицы в Power Query. Работа со списками
 
Супер! Спасибо!

Тему можно закрывать.
Страницы: 1 2 След.
Наверх