RayI, если не принципиально, что подытоги (квартал, год) будут справа, то давайте реализуем.
В ЛС написал цену и вопрос.
В ЛС написал цену и вопрос.
26.04.2024 07:25:36
Дмитрий Никитин, я же и не придирался, учитесь, конечно
Второй пункт я написал, скорее, для общего случая, где аналог столбца «индекс» будет не уникальным внутри проекта. То есть задублируется при равенстве и индексов. |
|
|
25.04.2024 23:41:12
Было же когда-то Power View в excel (до Power BI), может там можно было… upd:
Правда, вроде, там только pandas…
Изменено: |
|||||||
|
25.04.2024 23:34:50
Дмитрий Никитин, норм, но
CALCULATE(SUM('Таблица1'[Значение])) Замените на просто 'Таблица1'[Значение] Во-первых, с точки зрения производительности. Иначе Вы будете всю таблицу фильтровать по контексту текущей строки, чтобы вытащить значение из текущей строки. Зачем?) Во-вторых, что будет в Вашем расчете в случае двух полностью одинаковых строк в данных (являющихся последними по индексу)? Подумайте. |
|
|
25.04.2024 20:17:45
Александр, не знаю, как Вам нужно решить. А точнее, будет ли зависеть от срезов результат. То есть пользователь выбрал Индексы 1-2, то у всех нужно найти максимальный среди 1-2.
Если нет, то оптимальнее решить вычисляемым столбцом (он один раз вычислится) и простой мерой:
Если же зависит, то (будет менее производительной):
|
|||||||
|
25.04.2024 09:06:52
Neostt,
|
|||
|
24.04.2024 23:06:06
PQ + PP и тут есть Но у Вас комплексная задача. Поэтому либо разбейте на подзадачи и спрашивайте помощь в чем-то конкретном (как, такую -то обработку реализовать в pq, пыталась так, но не выходит; как написать такую-то меру), либо обращайтесь в платную ветку, чтобы Вам решили. P.S. Может, кто-то и запарится в образовательных целях в бесплатной ветке |
|||
|
24.04.2024 14:52:33
По делу: ну вы разницу в часах узнали. Как Вы это FORMATом хотите перевести? Ну ладно, тривиально же разделить это число на 24, взять целую часть - это дни, из этого числа вычесть дни*24 - получились часы. Как бы конкатенировать это не должно вызвать трудности. Но откуда взяться минутам, если результат уже округлен до часов? 30 мин может выйти, если четное число значений, но все же С другой стороны, полезно знать, что любая дата в exce/Power BI - это число. При этом 1 день составляет 1. "0" соответствует датавремя 30.12.1899 00:00:00 "1" - 31.12.1899 00:00:00 и тд. Короче. Предлагаю длительность вычислять точно:
По сути мы получим некоторое число. 1,5 - значит 1 день 12 часов, 2,2 - 2 дня 4 часа 48 минут. Далее довольно просто привести в нужный вид:
*Сидорова в Ижевске проверьте, там конец раньше начала. |
|||||||
|
23.04.2024 16:26:31
voler83, в смысле не встречали? А как Вы называете data, typed, addClmn в запросе? Они отображаются справа с наименованием "Примененные шаги".
По сути data, typed, addClmn - это имена полей записи. Код выше с использованием синтаксического сахара let ... in эквивалентен коду
Так вот. Код выше будет создавать таблицу, типизировать 3 раза: один раз просто для этой таблицы и 2 раза для расчета значения суммы по столбцу для каждой из строк. Сумма по столбцу будет вычислена 2 раза. Если бы было 1000 строк, то таблица создавалась бы 1001 раз, 1000 раз вычислялась сумма. Чтобы этого пересчета не было, не скалярные поля можно было бы буфферизовать. То есть обернуть второй "шаг" в Table.Buffer (или List.Buffer для списков) * Правда сумма все равно будет вычисляться столько раз, сколько строк в данных. Просто предыдущие шаги не будут пересчитываться:
Но буфферизация больших объемов данных тоже занимает время и немало ресурсов. И в данном случае вообще не нужна. Скалярные значения PQ не пересчитывает каждый раз, когда к ним обращаешься. "Скалярным" значением в данном случае будет даже запись, не только просто значение для какого-то поля. То есть оптимальным будет такой код (когда значение суммы вычисляется в отдельном "шаге"):
Изменено: |
|||||||||
|
23.04.2024 14:59:18
voler83, лучше значение номера и длительности в отдельное поле записи вынести (имена шагов, которые перед =, - это поля записи весь запрос - запись, а в in указывается, значение какого поля вынести), иначе итератор Table.Addcolumn для каждой строки будет заново получать таблицу из шага «Измененный тип», то есть каждый раз читать csv, менять тип и тд. Это очень замедлит запрос.
Надеюсь, понятно
Изменено: |
|
|
22.04.2024 22:45:51
hotster-bobster, а Вы справку по ВПР читали? Это риторический вопрос
У Вас код aaaa-bbbb-ccc. Такого значения нет в первом столбце второй таблицы. |
|
|
22.04.2024 22:06:17
MINA25, сам.
На ваших данных (если они всегда такие правильные - идет товар без штук, потом те же товары со штуками) можно проще: тупо заполнить вниз цену, потом добавить столбец цена*количество, удалить старый столбец, новый переименовать. Это можно тупо кнопками. Я же усложнил (выделяя из наименований товар без штук, группируя по этому наименованию, сортируя и заполняя ценой из первой строки, умноженной на количество в соответствующей строке). Такой код именно кнопками не сделаете:( |
|
|
21.04.2024 19:15:12
Если честно, я не знаю решения для excel, кроме вывода меры и скрытия этого столбца. Оно есть? Тогда поделитесь Можно еще в PQ именно для этой первой сводной без вычислений (там же только измерения) создать плоскую таблицу с id и значениями всех нужных измерений. И просто из нее тащить измерения в визуал. В любом случае, я очень редко что-то сложное делаю в PP, а в PBI с этим кейсом проблем нет. Или Вы про двунаправленную фильтрацию? Всех тонкостей в PBI я точно не помню, так как после санкций меньшая часть проектов в PBI, но ощущаю всю ее боль в Fine BI. Потому что там в модели только двунаправленная фильтрация (не совсем так, но не буду углубляться).
Изменено: |
|||
|
21.04.2024 19:01:14
1. На вкладке данные нет планов. Из нужно откуда-то взять, поэтому добавил таблицу планов. Если планы поменяются, в ней изменить. 2. На вкладке данные нет соответствия сортов виду продукции. Поэтому пришлось добавить справочник товаров рядом с планами. Если из 1С выгружать с видом продукции, то можно справочник генерировать из этой таблицы. 3. Теперь Вам просто нужно в таблицу на вкладке данные вставлять данные. Хоть из 1С, хоть откуда. Можно вообще из 1С грузить в csv/txt и тащить оттуда. 4. Просто нажимаете «Обновить все» на вкладке «Данные» (сверху эта вкладка) - получаете обновление всей модели данных и сводной. Какие еще доп манипуляции?) * Можете вообще усовершенствовать и тащить данные из 1С с периодами. Добавить срез по периодам и простым переключением смотреть результаты по любому периоду. Или построить диаграмму динамики или любой необходимый Вам визуал. Просто поизучайте power query + power pivot. ** А вот в формульном решении уже будут доп манипуляции. У Вас же список сортов и видов продукции разным может быть. То есть нужно «сводную» рисовать ручками и менять при изменении данных.
Изменено: |
|||
|
21.04.2024 16:04:03
Александр, а в чем баг?
В Power pivot не предусмотрена двунаправленная фильтрация. Если представить простую модель с одной таблицей фактов (N) и двумя связанными с ней справочниками (1), то справочники никак не фильтруют друг друга. Направление фильтрации указано стрелочками на связях. Если расположить, к примеру, в строках измерение из первого справочника и из второго, то для каждого уникального значения из первого справочника будут все уникальные значения из второго. В Power BI, кроме двунаправленной фильтрации, которую лучше вообще не использовать, пока не изучите рее работу, можно фильтровать визуал по значению меры. В excel - нельзя. Просто вытащите на визуал какую-то меру. P.S. Я не очень понимаю ситуацию, когда описанное плохо. Может, модель подкорректировать (убрать излишнюю нормализацию, к примеру)?
Изменено: |
|
|
21.04.2024 14:09:44
Если Вам кто-то написал в ЛС без того, чтобы отписаться тут, - сообщите ники данных пользователей. В таком случае Вы сильно рискуете не получить решение на предоплаченную задачу. P.S. Пусть формулисты меня поправят, но, по-моему, только формулами (без VBA/PQ) задачу полноценно не решить.
Изменено: |
|||
|
20.04.2024 22:33:08
Коллеги, я вмешаюсь
Очевидно, что лучше (почти всегда, кроме сложных случаев с приоритетом производительности) написать шаблонную меру. Не важно, что будет влиять на контекст фильтра: даты, недели, месяцы, кварталы, .. . В любом случае мера должна вычислять значение за весь год. В таком случае идеально подходит ALLEXCEPT('фактЗаявки','спрКалендарь'[Год]) . Дмитрий Никитин, а Вам посоветую купить книги Феррари/Руссо Ощущение, что Вы пока даже очевидных подсказок не понимаете (без подсказки, это может быть действительно не так просто) и мыслите не “функциональным языком bi”. Тут и теорию изучить нужно, и мыслить образно что ли.
Изменено: |
|
|
19.04.2024 19:56:08
Что-то мне кажется, что
Но особо не вникал Могу ошибаться.
Изменено: |
|
|
17.04.2024 09:30:11
Почему просто не сделать Date.AddMonths([Дата приема], 3)? Да, 28.10.1998, 29.10.1998 и 30.10.1998 будут 28.02.1999 Если уж хотите по-вашему, то
Но смотрите, что дает Ваша формула (и последний эквивалентный код в PQ): для более поздней даты истечение срока раньше P.S. Вообще, поэтому сроки обычно задаются в днях, а не месяцах.
Изменено: |
|||||
|