Перейти к указанной строке в Power Query.xslx (40,2 КиБ, 310 скачиваний)
На днях на одном форуме появился вопрос "Как в Power Qwery перейти к определенной строке таблицы в редакторе запросов?"
Вопрос хоть и не сложный, но мне он показался интересным и поэтому я решил его рассмотреть подробнее.
Для начала определимся - зачем? Как правило нужно это для того, чтобы посмотреть данные конкретной строки, добраться до которой прокруткой тот еще квест. Скажем, это будет строка номер
Все, мы перескочили на нужную строку. В Power Query такого счастья нет и без всяческих ухищрений придется прокручивать таблицу мышкой до мозолей на пальцах.
Этот вариант для тех, кто привык все делать кнопками и не пользоваться расширенным редактором.
Добавляем в нашу таблицу столбец индекса с 1:
Добавить столбец
и потом в добавленном столбце индекса просто отбираем при помощи фильтра нужный номер строки. Если строка слишком далеко, то надо раскрыть кнопку фильтра -Числовые фильтры -Равно. И указать номер нужной строки:
На мой взгляд самый простой и самый эффективный способ. Но имеет один недостаток: у нас добавляется лишний столбец и меняется итоговое отображение результата запроса. А это не очень хорошо, если строку нам надо время от времени смотреть и анализировать, но при этом так же иметь возможность работать с изначальной таблицей дальше.
Этот вариант подразумевает добавление шага через расширенный редактор. Как попасть в расширенный редактор:
Главная
Вариант отображения конкретной строки через расширенный редактор имеет одно преимущество перед Способом 1(через столбец индекса и фильтр) - мы можем просто создать шаг запроса с нужной строкой, который никак не будет влиять на итоговое отображение самого запроса. Это даст возможность в любой момент перейти на этот шаг и посмотреть строку и при этом работать с таблицей дальше в любом виде.
Для примера возьмем простой запрос к таблице из той же книги:
let Source = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content], #"Changed Type" = Table.TransformColumnTypes(Source,{{"Наименование", type text}, {"Производитель", type text}}) in #"Changed Type" |
В итоге в запрос загрузится таблица:
И далее есть несколько способов отображения нужной строки. Я буду показывать на примере вывода 10-ой строки.
Прописываем собственный шаг в расширенном редакторе после загрузки таблицы(хотя это может быть любой шаг запроса, во время которого нам необходимо получить конкретную строку):
let Source = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content], Skip_row = Table.Skip(Source,9), #"Changed Type" = Table.TransformColumnTypes(Source,{{"Наименование", type text}, {"Производитель", type text}}) in #"Changed Type" |
Что делает функция
let Source = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content], Skip_row = Table.FirstN(Table.Skip(Source, 9), 1), #"Changed Type" = Table.TransformColumnTypes(Source,{{"Наименование", type text}, {"Производитель", type text}}) in #"Changed Type" |
И еще один момент: в запросе выше мы добавили шаг Skip_row. И перейдя на этот шаг непосредственно из визуального редактора PowerQuery мы можем видеть только нашу строку, при этом результат запроса останется прежним. Если же цель запроса именно отбор конкретной строки, то надо этот шаг сделать последним и указать что именно его выводить как итоговый:
let Source = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content], #"Changed Type" = Table.TransformColumnTypes(Source,{{"Наименование", type text}, {"Производитель", type text}}), Skip_row = Table.FirstN(Table.Skip(Source, 9), 1) in Skip_row |
Главная
Главная
Здесь использовать будем тот же запрос, что и выше:
let Source = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content], #"Changed Type" = Table.TransformColumnTypes(Source,{{"Наименование", type text}, {"Производитель", type text}}) in #"Changed Type" |
В PowerQuery к записям можно обращаться напрямую по их номерам. Только стоит всегда помнить, что нумерация здесь начинается с 0. Поэтому, если нам необходима строка
let Source = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content], row = Source{9}, #"Changed Type" = Table.TransformColumnTypes(Source,{{"Наименование", type text}, {"Производитель", type text}}) in #"Changed Type" |
Думаю, здесь все вполне понятно:
-
-
Но при таком варианте мы увидим не таблицу, а запись. А разница здесь в том, что по сути мы увидим нашу строку в "перевернутом"(транспонированном) виде:
Чтобы получить строку в привычном виде так, как она есть в таблице, можно использовать функцию
let Source = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content], FromRecords_row = Table.FromRecords({Source{9}}), #"Changed Type" = Table.TransformColumnTypes(Source,{{"Наименование", type text}, {"Производитель", type text}}) in #"Changed Type" |
В итоге получим то, что и требовалось:
В приложенном к статье файле Вы найдете один запрос со всеми описанными решениями и комментариями напротив них.
Перейти к указанной строке в Power Query.xslx (40,2 КиБ, 310 скачиваний)