Страницы: 1
RSS
Индексация строк в пределах каждой группы в Power Query, Нарушается сортировка после группировки и нумерации в пределах группы в Power Query
 
Всем доброго дня!

Подскажите, пожалуйста, сталкивался ли кто-то с такой проблемой, что после группировки и определения нумерации в пределах каждой группы в Power Query нарушается ранее определенный порядок сортировки

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

Мне, к сожалению, этот способ почему-то не помог, сортировка нарушается даже после принудительной индексации до группировки
Код
let
    Источник = ФА,
    sort = Table.Sort(ФА,{{"Производство", Order.Ascending}, {"Порядок", Order.Ascending}, {"Index", Order.Ascending}, {"Local Index", Order.Ascending}}),
    ind = Table.AddIndexColumn(sort, "Инд", 1, 1),
    group = Table.Group(ind, {"Производство"}, {{"Количество", each Table.AddIndexColumn(Table.Sort(_,{{"Производство", Order.Ascending}}), "Индекс", 1, 1), type table}})
in
    group

Здесь на форуме видела еще один способ решения проблемы, но вот этот аргумент "sortOrderDefinitionList" в Excel2016, видимо, не поддерживается
Power Query. Индексация строк в пределах каждой группы. (planetaexcel.ru)
Код
Тable.Group(Source, groupColumnNamesList, {"temp", each _
    Table.AddIndexColumn(Table.Sort(_, sortOrderDefinitionList), "Local Index", 1)
})

Может быть кто-то знает еще какие-либо способы как можно решить эту проблему

Заранее благодарна за обратную связь!
 
Добрый, пример вложите
 
Добавила файл-пример
 
А почему бы это
Код
sort = Table.Sort(ФА,{{"Производство", Order.Ascending}, {"Порядок", Order.Ascending}, {"Index", Order.Ascending}, {"Local Index", Order.Ascending}})


не переместить после разворачивания таблицы?
Изменено: mechanix 85 - 23.02.2024 13:09:26
 
Татьяна, индексируйтесь до группировки, сортируйтесь по индексу после (во время) группировки
Пришелец-прораб.
 
В этом то вся суть, если я перемещу этот шаг после разворачивания таблицы, то индекс приклеиться не к тому порядку строк, который был задан при сортировке, а мне необходимо, чтобы к отсортированным на шаге sort строкам корректно приклеился индекс, который определился внутри каждой группы на шаге group
 
AlienSx, не совсем поняла, что вы имеете ввиду. Если не затруднит, можете это на коде показать?
 
Т, см group
Код
let
    Источник = ФА,
    sort = Table.Sort(ФА,{{"Производство", Order.Ascending}, {"Порядок", Order.Ascending}, {"Index", Order.Ascending}, {"Local Index", Order.Ascending}}),
    ind = Table.AddIndexColumn(sort, "Инд", 1, 1),
    group = Table.Group(ind, {"Производство"}, {{"Количество", each Table.Sort(_, {"Инд"})}}),
    exp = Table.ExpandTableColumn(group, "Количество", {"Продукт", "Ресурс", "Порядок", "Index", "Local Index", "Индекс"}, {"Продукт", "Ресурс", "Порядок", "Index", "Local Index", "Индекс"})
in
    exp
Пришелец-прораб.
 
AlienSx, в такой логике индексация после группировки на шаге group идет сквозная т.е. сначала по первому производству и потом продолжается на второе производство, а не начинается для второго производства заново с 1, мне же в данной ситуации необходимо чтобы для каждого производства нумерация начиналась заново с 1 и потом после разворачивания таблицы этот правильный номер приклеился к правильной сортировке, которая получилась на шаге sort  
 
Т,  Я не очень понял зачем Вам всё это надо. Но мне кажется, что шаг group в следующей редакции даст необходимый результат.

Код
group = Table.Group(ind, {"Производство"}, {{"Количество", each Table.AddIndexColumn(Table.Sort(_,{{"Производство", Order.Ascending}, {"Порядок", Order.Ascending}, {"Index", Order.Ascending}, {"Local Index", Order.Ascending}}), "Индекс", 1, 1), type table}}),
 
MadNike, да, в таком варианте написания кода всё работает как нужно!

Большое Вам спасибо за помощь!
Страницы: 1
Наверх