Страницы: 1
RSS
PQ. Преобразование данных для сводной таблицы. Выведение в сводной таблице столбца с кол-во активных покупателей.
 
Здравствуйте. Продолжаю работу над своей отчетной таблицей. У меня есть данные на много тысяч строк. Чтобы отчет не зависал работаю в Power Query. Сейчас пытаюсь решить задачу выведения столбца с количеством активных за текущий месяц покупателей. Активный покупатель - покупатель который совершил хоть 1 покупку в этом месяце. Группировка в сводной таблице будет идти по продавцу. Проблема в том, что 1 покупатель может совершать\оформлять много сделок на покупку. Я думал, что если выведу в PQ новый столбец со статусом покупки (1 - купил, 0 - не купил) то смогу их сосчитать. AlienSx и Artem_1990 - помогли сделать мне такой столбец, за что им отдельно спасибо. Только это, конечно же, никак мне не помогло в моих целях. Я не сообразил сразу этого.  Из-за того что 1 покупатель оформляет много покупок - суммация статусов дает неверные данные. Каким-то образом, надо учитывать статусы покупок только уникальных покупателей. Прошу помочь найти решение, как сохранить PQ, который нужен для всех остальных преобразований, при этом чтобы была возможность выводить в отчет нужные показатели. Файл во вложении. Он сильно урезан по кол-ву строк, столбцов и прочих вычислений.

И еще момент, я полагаю что мне надо определять статус покупателя (активный\неактивный) по заранее выбранному периоду. Я выбрал месяц. Хотя другие показатели, например, сумма покупок, комиссия с покупки, я могу смотреть хоть по дням, хоть по годам, т.е. переключая разные временные срезы. Но, мне кажется, тоже самое проделывать с активными покупателями невозможно. Ведь, чтобы определить статус активности надо просмотреть какой-либо отрезок. А вычисления в PQ проводятся сразу для всех данных, а они статичны. Я не придумал никакой динамичной формулы для этого, поэтому решил считать активных покупателей за 1 мес. Прошу поправить если есть способы другие. Спасибо  
Изменено: Rockfett - 14.03.2024 17:37:41
 
Rockfett, файл не смотрел, но судя по описанию Вам нужно переходить на модель данных (power pivot) и DAX. Там можете сразу динамически считать  активных покупателей, используя срезы за какой период учитывать активных покупателей, без лишних преобразований в pq. Для примера https://biprosto.ru/dax/count-new-constant-lost-klient.html
Изменено: Alex - 14.03.2024 21:37:17
 
Если правильно понял то вот так.
 
Цитата
написал:
Rockfett , файл не смотрел, но судя по описанию Вам нужно переходить на модель данных (power pivot) и DAX. Там можете сразу динамически считать  активных покупателей, используя срезы за какой период учитывать активных покупателей, без лишних преобразований в pq. Для примера  https://biprosto.ru/dax/count-new-constant-lost-klient.html
Спасибо, посмотрю. Я когда выбирал, как решить проблему с тормозами в обычном экселе, изучал как раз - PQ и PT. Тогда я так понял, что PT нужен когда у нас много разных таблиц и их надо сапоставить между собой. Про чудеса дакса я уже много наслышан. Не совсем тогда понятно, зачем нужен тогда PQ.  
 
Цитата
написал:
Не совсем тогда понятно, зачем нужен тогда PQ.
PQ - это ETL (extract, transform, and load)  надстройка для подготовки и преобразования неструктурированных данных в нужный вид, то есть, если нужны дальнейшие расчеты, то в вид плоских таблиц с последующей загрузкой в сводные таблицы или в модель данных. На больших объемах данных (млн записей) скорость расчета в PQ оставляет желать лучшего.
 
Цитата
написал:
Если правильно понял то вот так.
Спасибо. Могли бы объяснить как это работает?

Я пытаюсь использовать ваш метод в реальном файле. Как создать такой шаг

= (x)=>[a=Table.TransformColumns(Table.SelectColumns(x,List.FirstN(Table.ColumnNames(from),3)&{"Статус заявки"}),{"Дата подачи",(x)=>Date.MonthName(x)}),
           b=Table.Group(a,{"Продавец","Дата подачи"},
            {{"Статус заявки",(y)=>if List.Contains(y[Статус заявки],"Купил") then "Купил" else "Не купил"},
             {"Прадажи",(y)=>List.Count(y[Статус заявки])},
             {"Активные покупатели",(y)=>List.Count(
                 List.Distinct(
                   List.Select(List.Combine(List.Select(List.Zip({y[Покупатель],y[Статус заявки]}),(x)=>List.Contains(x,"Купил"))),(x)=> not Text.Contains(x,"Купил"))))}})
           ][b]
 
Ну если коротко, то сгруппировал сначала таблицу по месяцам локально, получил таблицы со всеми работниками по каждому месяцу и их продажи, далее каждую такую таблицу ещё раз группирую ,но уже по работникам , чтобы получить данные по каждому работнику в месяце,ну и собственно говоря считаю его продажи и  активные продажи и ТД. А для понимания кода в первой группировке можете заменить f(x) просто на x и проанализировать.
 
Цитата
написал:
Ну если коротко, то сгруппировал сначала таблицу по месяцам локально, получил таблицы со всеми работниками по каждому месяцу и их продажи, далее каждую такую таблицу ещё раз группирую ,но уже по работникам , чтобы получить данные по каждому работнику в месяце,ну и собственно говоря считаю его продажи и  активные продажи и ТД. А для понимания кода в первой группировке можете заменить f(x) просто на x и проанализировать.
Как в PQ создать шаг, чтобы поместить туда код?  
 
Найдите в интерфейсе кнопку " расширенный редактор".
 
Цитата
написал:
Найдите в интерфейсе кнопку " расширенный редактор".
Эту кнопку знаю. Но чтобы сюда вписать код, надо знать синтаксис и правила. У меня в PQ до этого момента идет много других преобразований. Когда я туда пробовал вставлять ваш кол, он жаловался на разные токены. Видимо, не совпадают действия по отношению к одному источнику. Печаль
 
А GPT мне так сказал:

Откройте Power Query в Excel (в разделе "Данные" выберите "Получить данные" -> "Из других источников" -> "Пустой запрос" или "Из таблицы/диапазона").
2. В меню Power Query выберите "Расширенный редактор" для открытия окна редактора запросов.
3. В окне редактора запросов выберите "Новый источник" -> "Функция" -> "Пустая функция".
4. Введите имя для функции и определите параметры функции, если они есть. Затем введите код функции в окне редактора запросов.
5. После того как функция создана, ее можно использовать в других запросах. Для этого выберите "Добавить столбец" -> "Вызов функции" и выберите созданную функцию из списка.
Таким образом, вы можете добавить функцию в Power Query и использовать ее для преобразования данных в ваших запросах.

Хотя у меня в расширенном редакторе нет кнопки новый источник.
 
От себя добавлю. Если Вам не нужен EXCEL и PQ то лучше скинуть источник и попросить сделать все что нужно, либо тут либо в разделе работа. А если хотите освоить, то нужно разбирать коды , читать спецификацию и практиковаться. Объяснить Вам все, что написано не смогу, потому как не знаю, что у вас там в исходнике.  
Страницы: 1
Читают тему
Наверх