Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
RSS
Power Query. Индексация строк в пределах каждой группы., Знаю как сделать формулами Excel, но не могу дотумкать как решить проблему в запросе.
 
Доброго дня.
Уважаемые, столкнулся с такой проблемой:
Имеется список машинок и установленных на них колес, каждое колесо - отдельная строка в таблице фактов.
Что нужно: в рамках каждой машинки и каждого вида колеса на этой машинке нужно пронумеровать каждое колесо по порядку, чтобы получить в результате уникальный идентификатор для каждой строки сцепкой.
В примере желтым цветом обозначен столбец, который я знаю как сделать формулами в Эксель при помощи "растягивающихся" диапазонов, но пока не понимаю как мне получить его в Power Query.
Заранее спасибо.
Вот горшок пустой, он предмет простой...
 
Код
let
    Source = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],
    #"Grouped Rows" = Table.Group(Source, {"Авто", "Код номенклатуры"}, {{"tab", each Table.AddIndexColumn(_, "Index", 1,1), type table}}),
    #"Expanded {0}" = Table.ExpandTableColumn(#"Grouped Rows", "tab", {"Index"}, {"Index"})
in
    #"Expanded {0}"
F1 творит чудеса
 
Вот это скорость!.
Щас заценим.
Круто, все работает, аналогичный прием Николай недавно публиковал.
Но получается я дал не полные исходные данные. Исправляюсь и извиняюсь.
В таблице есть еще один столбец, в котором имеются пробеги, они в группировке не участвуют, но их в результирующей таблице нужно сохранить.
Изменено: PooHkrd - 23 ноя 2017 16:13:20
Вот горшок пустой, он предмет простой...
 
Доброе время суток
Цитата
PooHkrd написал:
но их в результирующей таблице нужно сохранить.
Так он после группировки и не терялся. На шаге #"Expanded {0}" в настройках (шестерёнка) добавьте нужные столбцы для отображения.
 
Все прекрасно работает! Максим, как всегда огромное спасибо! И вам, Андрей, за подсказку тоже.

Значит я был не прав, это не по аналогии примера от Николая.
Только я вообще не понял по какому принципу в функцию Table.AddIndexColumn передается именно тот кусок таблицы, который относится к сгруппированным строкам, ведь знак подчеркивания, который итератор, должен передавать в неё всю таблицу целиком.
Где я не прав?

З.Ы. Кажется начинаю понимать, Table.Group сам фильтрует список строк, которые передает аггрегирующей функции, дальше мы можем с каждым куском таблицы творить что хотим, после чего можно вытянуть все в общую таблицу обратно.
Максим, очень круто, и ведь я что-то подобное на DAX сочинял, а вот тут не догадался.
Изменено: PooHkrd - 23 ноя 2017 18:15:37
Вот горшок пустой, он предмет простой...
 
Цитата
PooHkrd написал:
Table.Group сам фильтрует список строк, которые передает аггрегирующей функции
да, этот немного запутывает, так как отличается от логики других функций итераторов таблицы, когда в обработку передается только одна строка. Но если в группировке сделать встроенный выбор "Все строки", то вид формулы будет примерно такой:
Код
each _
, а в результате получаем в ячейку кусок таблицы, сгруппированной (отобранной) по заданным столбцам. Соответственно, понимаем, что _ обозначает сгруппированный набор строк в этой функции, а не одну строку или всю таблицу целиком.
F1 творит чудеса
 
Кто ни будь может подсказать как проставить индекс по продажам, при это чтоб была группировки по городам.
то ни будь может подсказать как проставить индекс по продажам, при это чтоб была группировки по городам.

Пример:                                                                                                          
Скрытый текст

Буду очень сильно благодарен за помощь.
Изменено: Hunterhomer - 12 окт 2018 10:27:52
 
Так в посте №2 приведен код именно это и проделывающий, в чем проблема его применить?
Вот горшок пустой, он предмет простой...
 
Там не много ни то, мне необходимо чтоб к большему числу ставился наименьший Индекс то есть 1, а к наименьшему 3 и т.д.
В посте №2 идет к меньшему ставить 1 и далее по нарастающей.

Не могу понять куда поставить сортировку чтоб к большему числу в колонке "Продажи" проставлялось наименьшее значение Индекс, и далее по увеличению
 
Всегда удивляло, в чем такая проблема прикрепить файл пример к сообщению?
Вот вариант с обратной сортировкой.
Код
let
    Источник = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],
    #"Измененный тип" = Table.TransformColumnTypes(Источник,{{"Город", type text}, {"Магазин", type text}, {"Продажи,шт.", Int64.Type}}),
    #"Сгруппированные строки" = Table.Group(#"Измененный тип", {"Город"}, {{"Таблица", each Table.AddIndexColumn(Table.Sort(_,{{"Продажи,шт.", Order.Descending}}), "Индекс", 1, 1), type table}}),
    #"Развернутый элемент Таблица" = Table.ExpandTableColumn(#"Сгруппированные строки", "Таблица", {"Магазин", "Продажи,шт.", "Индекс"}, {"Магазин", "Продажи,шт.", "Индекс"})
in
    #"Развернутый элемент Таблица"
Вот горшок пустой, он предмет простой...
 
Спасибо большое PooHkrd, очень сильно помог
 
Наверное, создавать новую тему на схожий вопрос не лучший вариант.

Помогите!
Я сделал индексацию внутри групп, как подсказали в данной теме. Но мне необходимо сделать следующий шаг. Внутри группы три максимальных значения индекса , и три минимальных значения заменить на null.
Три минимальных значения заменить не проблема, тем же, условным столбцом.
Три максимальных также хотел заменить на null с помощью условного столбца: Если "индекс" > "максимальный индекс - 4", тогда null.
Проблема в том, что не получается получить максимальный индекс внутри групп.

Файл загрузил в следующем сообщении.
Изменено: runeft - 13 мар 2019 14:03:05
 
Цитата
runeft написал:
Файл загружается на 90% (((
 
runeft, это пожалуй уже другой вопрос. Лучше создать новую тему и прикрепить пример, в котором не удалена таблица, которая является источником запроса.
Вот горшок пустой, он предмет простой...
 
Возможно, PooHkrd прав, и лучше создать новую тему, но добавлю сюда, раз уж сделал. runeft, думаю, разберётесь.
Код
let
    Source = Excel.CurrentWorkbook(){[Name="Таблица1__3"]}[Content],
    group = Table.Group(Source, {"В2В"}, {"temp", each [a = List.MinN([#"Index.1"],3)&List.MaxN([#"Index.1"],3),
                                                        b = Table.TransformColumns(_, {"Index.1", each if List.Contains(a,_) then null else _})][b]}),
    expand = Table.ExpandTableColumn(group, "temp", {"Номенклатуры", "Основной менеджер", "Цена.1", "Index.1"})
in
    expand
 
Да, действительно, удалил источник не заметив. Создам новую тему.
 
Добрый день!
Дорогие участники форума, подскажите, как решить вот такую задачку на обработку в Power Query.
Есть таблица с ключевыми полями дата начала акции, дата окончания акции, товар и тд.
Среди таких акций встречаются пересекающиеся по периоду.
То есть, например, начало следующей акции попадает в интервал предыдущей, но дата окончания позже, позиция соответственно та же.
Нужно сделать из 2-ух строк одну, где будет в качестве ключевых полей даты начало акции первой и окончание акции второй.
Также, если дата окончания одной акции совпадает с датой начала другой акции, тоже нужно сделать одну строку с началом одной акции и окончанием второй.
Табличка во вложении.

Буду очень благодарна если подскажите, или натолкнёте на решение, заранее спасибо!
 
Татьяна Комолова, ваш вопрос вообще никак не пересекается с названием темы. Создайте свою отдельную тему с описанием вашей проблемы. А еще помимо в файле-примере помимо того что есть неплохо бы отобразить желаемый результат с кратким описанием алгоритма, почему так а не иначе.
Вот горшок пустой, он предмет простой...
 
Татьяна Комолова, а что надо группировать чтоб проиндексировать?
И раз дотумкались сделать формулами, то покажите результат
 
PooHkrd, Михаил, благодарю за внимание!
Создала отдельную тему.
Я новичок, пробую, эту задачку пока решить не получается, решила спросить знатоков.
Ещё раз благодарю за отзывчивость!
Страницы: 1
Читают тему (гостей: 2)
Наверх