Страницы: 1
RSS
Power Query. Присвоение ранга по условию., Есть клиенты, которые совершают покупки. Задача присвоить ранг в зависимости от суммы покупки.
 
Добрый день. Пол месяца назад уже выполнял похожую задачу в экселе, не без вашей помощи, разумеется)))) Но, моя таблица достигла предела. На 37 тыс. строк таблица перестала работать (стала зависать). Она имела не только много строк но еще и десятки сложных формул. Я сообразил, что как-то это должно по другому работать и пришел к Power Query. Теперь я строю заново отчет с помощью Power Query. Многое смог освоить самостоятельно, но никак снова не дается ранжирование по условию. Собственно задача, добавить к таблице столбец, где будут указываться ранги клиента, в зависимости от суммы его покупок. Важно что данные не надо группировать. Т.к. после создания образца запроса я планирую делать сводную таблицу, поэтому данные нужны полные. Прошу подсказать в каком направлении копать или где почитать. Что надо приложить для помощи? У меня очень большой исходник - 37 тыс. строк.

Моя таблица представляет из себя что-то вроде: Дата, Имя покупателя, Что купил, Стоимость товара.



В 1 день Иванов сделал покупку на 100 рублей, во 2 день Иванов сделал покупку на 500 рублей. Хочу получить столбец, где у всех строк "Иванов" будет ранг, допустим "1" (Если покупки выше 600 рублей, суммарно по всем его покупкам. А будущем еще и по категории товара).

Я полагаю, что мне надо написать свою функцию. И следом еще 1 вопрос. Правильно ли я понимаю, что все функции в Power Query мы создаем в новом запросе, в расширенном редакторе?  Нашел, что раньше в десктопной версии было встроенное ранжирование. Сейчас его нету.  
Изменено: Rockfett - 04.03.2024 11:39:40
 
Rockfett, ни в какую Вы не хотите пример прикладывать.
По старой памяти сделал файл-пример за Вас.
"Кнопочное" решение во вложении.
Но тут на форуме много спецов, с более изящными решениями.
Кто ясно мыслит, тот ясно излагает.
 
Цитата
написал:
Rockfett , ни в какую Вы не хотите пример прикладывать.По старой памяти сделал файл-пример за Вас."Кнопочное" решение во вложении.Но тут на форуме много спецов, с более изящными решениями.
Спасибо что снова откликнулись на мою проблему. Я хочу пример прикладывать, поэтому спросил)):
Цитата
написал:
Что надо приложить для помощи?
Я думал мне подскажут название нужной мне функции, а дальше я пойду ее изучать самостоятельно.

Я приложил файлик, но, ваш файлик, имеет примерно туже самую суть. Только в моей таблице, более сложной, больше условий. Я буду ранжировать клиентов еще и по статусу сделок. Я сейчас буду изучать ваше решение. Я вижу что вы обошлись без каких либо пользовательских функций. Вы создали несколько запросов, а потом, судя по всему свели их вместе. Я могу быть не точным в формулировках, т.к. пока только пару недель изучаю Power Query/ Это ресурсозатратно, создавать несколько запросов? В месяц мне надо выгружать до 15 тыс. строк в экселе. Объем данных будет постоянно расти. Поэтому, уже наступив на грабли при составлении отчета просто в экселе, я бы хотел сразу встать на правильный путь в работе с большими данными.  
 
Цитата
Rockfett написал:
Вы создали несколько запросов, а потом, судя по всему свели их вместе. Я могу быть не точным в формулировках, т.к. пока только пару недель изучаю Power Query
Руслан, да
Цитата
Rockfett написал:
Это ресурсозатратно, создавать несколько запросов
То что я предложил, быстрее чем формулами, но специалисты по PQ могут предложить более быстрое/элегантное решение Вашей проблемы.
Изменено: Maximich - 04.03.2024 12:49:49
Кто ясно мыслит, тот ясно излагает.
 
Rockfett, Руслан, по Вашему примеру у меня получилось как-то так.
Кто ясно мыслит, тот ясно излагает.
 
Цитата
Rockfett написал:
Я думал мне подскажут название нужной мне функции
"Думать меньше надо, а соображать больше!" Нет какой-то одной функции языка М, которая решила бы вашу задачу. У вас "комплекс мероприятий": посчитать сумму продаж (с учетом отказов?), найти и присвоить соответствующую группу. Вот пока непонятно как сумму продаж для проверки считать. "Проведена" и "Оформление" - это плюс, а "Отказ" - это минус?
Пришелец-прораб.
 
Цитата
написал:
Руслан, по Вашему примеру у меня получилось как-то так.

Прикрепленные файлы
Лист Microsoft Excel.xlsx  (20.97 КБ)
Спасибо. Буду изучать!
 
Цитата
Maximich написал:
как-то так
хардкодинг таблицы с рейтингами - дело не богоугодное, мягко говоря. Хотя, кто не без греха?  :D
Изменено: AlienSx - 04.03.2024 13:58:28
Пришелец-прораб.
 
Цитата
написал:
Нет какой-то одной функции языка М, которая решила бы вашу задачу.
Речь шла о пользовательской функции, которая может быть какой угодно.
Цитата
написал:
Я полагаю, что мне надо написать свою функцию.
Уверен что написание комбинированной функции (группировка, суммация по условию, ранжирование) возможно. А чуть выше, я как раз и спрашивал в каком направлении искать решение.
Цитата
написал:
Вот пока непонятно как сумму продаж для проверки считать. "Проведена" и "Оформление" - это плюс, а "Отказ" - это минус?
Нет. Это, вероятно, не самый понятный пример получился. Магазины взял для простоты. Реальный отчет будет по банковским продуктам. Представим что я анализирую продажи в магазине. Я в говорил о том, что :

Цитата
написал:
Только в моей таблице, более сложной, больше условий. Я буду ранжировать клиентов еще и по статусу сделок.
Допустим, я считаю суммы только у "Проведенных" до конца покупок. Это имеет смысл, т.к. это фактическая прибыль магазина. Вот по этих доходам и должна присваиваться группа. Можно представить вместо статусов совершения покупок любой другой. Например, суммация покупок только в категории "Электротовары", с последующим ражнирование по размеру суммы покупок в этой категории.

Таким образом, тут речь пока не про
Цитата
написал:
это плюс, а "Отказ" - это минус?

При этом, мне нельзя сложить таблицу в группы, т.к. после создания шаблона запроса, я буду загружать таблицу в эксель и строить дальнейший сводник. Поэтому я хочу видеть все строки, что были изначально + новые столбцы полученные на предобработке\преобразовании в запросе PQ. Если я правильно понимаю, PQ для этого и нужен.
 
Цитата
Rockfett написал:
Речь шла о пользовательской функции, которая может быть какой угодно.
это можно
какая угодно функция

а в файле - пример ее применения.
Я позволил себе немного подправить таблицу рангов, чтобы границы были от и до.
Цитата
Rockfett написал:
Допустим, я считаю суммы только у "Проведенных" до конца покупок. Это имеет смысл
имеет. Но тогда почему у Петрова группа 2, хотя ни одной проведенной продажи у него не было?
Цитата
Rockfett написал:
Реальный отчет будет по банковским продуктам.
Что за банк? Вдруг надо срочно бежать и закрывать там счет? А то обсчитают, как бедного Петрова.
И напоследок:
Цитата
Rockfett написал:
Речь шла о пользовательской функции, которая может быть какой угодно.
Цитата
Rockfett написал:
Я думал мне подскажут название нужной мне функции
так вам все-таки название функции нужно было изначально? Вот потому, что вы говорите то, что не думаете и думаете то, что не думаете, вот в клетках и сидите.
Изменено: AlienSx - 04.03.2024 21:34:18
Пришелец-прораб.
Страницы: 1
Наверх