Съдържание

Понякога има ситуации, когато не е известно предварително точно колко и кои редове трябва да бъдат импортирани от изходните данни. Да предположим, че трябва да заредим данни от текстов файл в Power Query, което на пръв поглед не представлява голям проблем. Трудността е, че файлът се актуализира редовно и утре може да има различен брой редове с данни, заглавка от три, а не два реда и т.н.:

Импортиране на плаващ фрагмент в Power Query

Тоест не можем да кажем предварително със сигурност, започвайки от кой ред и колко точно реда трябва да бъдат импортирани. И това е проблем, защото тези параметри са твърдо кодирани в M-кода на заявката. И ако направите заявка за първия файл (импортиране на 5 реда, започвайки от 4-ти), тогава той вече няма да работи правилно с втория.

Би било чудесно, ако нашата заявка може сама да определи началото и края на „плаващия“ текстов блок за импортиране.

Решението, което искам да предложа, се основава на идеята, че нашите данни съдържат някои ключови думи или стойности, които могат да се използват като маркери (характеристики) на началото и края на блока от данни, от който се нуждаем. В нашия пример началото ще бъде ред, започващ с думата Код, а краят е ред с думата Обща сума. Тази проверка на ред е лесна за изпълнение в Power Query с помощта на условна колона – аналог на функцията IF (АКО) в Microsoft Excel.

Да видим как да го направим.

Първо, нека заредим съдържанието на нашия текстов файл в Power Query по стандартния начин – чрез командата Данни – Получаване на данни – От файл – От текстов/CSV файл (Данни – Получаване на данни – От файл – От текстов/CSV файл). Ако сте инсталирали Power Query като отделна добавка, тогава съответните команди ще бъдат в раздела Запитване за захранване:

Импортиране на плаващ фрагмент в Power Query

Както винаги, при импортиране можете да изберете знака за разделител на колони (в нашия случай това е раздел), а след импортирането можете да премахнете автоматично добавената стъпка модифициран тип (Променен тип), защото е твърде рано да присвояваме типове данни на колони:

Импортиране на плаващ фрагмент в Power Query

Сега с командата Добавяне на колона – условна колона (Добавяне на колона — условна колона)нека добавим колона с проверка на две условия – в началото и в края на блока – и показване на различни стойности​​​във всеки случай (например числа 1 и 2). Ако нито едно от условията не е изпълнено, изход нула:

Импортиране на плаващ фрагмент в Power Query

След като кликнете върху OK получаваме следната картина:

Импортиране на плаващ фрагмент в Power Query

Сега да отидем на раздела. Трансформация и изберете екип Запълване – надолу (Трансформиране – Запълване – Надолу) – нашите единици и двойки ще се простират надолу по колоната:

Импортиране на плаващ фрагмент в Power Query

Е, тогава, както може би се досещате, можете просто да филтрирате единиците в условната колона – и ето нашата желана част от данните:

Импортиране на плаващ фрагмент в Power Query

Остава само да повдигнете първия ред до заглавката с командата Използвайте първия ред като заглавки етикет Начало (Начало – Използвайте първия ред като заглавки) и премахнете ненужната по-условна колона, като щракнете с десния бутон върху нейната заглавка и изберете командата Изтриване на колона (Изтриване на колона):

Проблема решен. Сега, когато променяме данните в изходния текстов файл, заявката вече ще определя независимо началото и края на „плаващия“ фрагмент от данните, от които се нуждаем, и всеки път ще импортира правилния брой редове. Разбира се, този подход работи и в случай на импортиране на XLSX, а не TXT файлове, както и когато импортирате всички файлове от папка наведнъж с командата Данни – Получаване на данни – От файл – От папка (Данни — Получаване на данни — От файл — От папка).

  • Сглобяване на таблици от различни файлове с помощта на Power Query
  • Препроектиране на кръстосана таблица до плоска с макроси и Power Query
  • Изграждане на проектна диаграма на Гант в Power Query

Оставете коментар