Split Column в Power Query

Раздлянето на колони (split column или на чист български: сплитване) е често срещан проблем за потребителите на Ексел. Например на долната картинка имаме списък с вносителите на автомобили в България и марките, които представляват (списъкът е копиран от сайта на Асоциацията на Автомобилните Производители в България).

Имената на фирмите и марките автомобили обаче са в една колона. А нашето желание е да ги разделим в две – едната за фирмите и другата за марките.

Разбира се в Ексел имаме чудото, наречено Text-to-Columns. С негова помощ лесно можем да разделим фирмите от марките, като използваме за разделител тире (-):

Но редовете, оцветени в оранжево създават известен проблем. Там една фирма представлява няколко марки. А тези в синьо предоставят и допълнителна трудност – там в името на фирмата има тире и разделянето не е точно както го искаме.

Ето тук много полезен е Power Query, където Split Column предоставя много повече възможности от Text-to-Columns в Ексел. Да видим как става:

Данните са вкарани в Power Query (в случая използвам Power BI Desktop, но разликата с Ексел е само в цветовата гама).

Маркираме колоната, десен клик и избираме Split Column -> By Delimiter…

Появява се менюто, където въвеждаме желаните опции

Най-отгоре е Select or enter delimiter, където избираме разделителя. Има няколко предефинирани опции (двоеточие, запетая, интервал и др.), но нас ни интересува Custom–, защото имаме възможност да зададем разделител по избор – в случая тире.

Секцията Split at е интересна. Тук указваме как да бъде разделена колоната. По подразбиране е избрана опцията Each occurrence of the delimiter. Това означава, че Split Column ще раздели колоната на всяко място, където намери разделителя. Точно както се случва с Text-to-Columns в Ексел.

Но, за разлика от Ексел, при Split Columns в Power Query имаме и две други опции:

Left-most delimiter – разделянето става само при най-ляво разположения разделител

Right-most delimiter – разделянето става само при най-дясно разположения разделител.

Точно това е опцията, която трябва да изберем в случая, за да решим проблема със сините редове. Понеже разделянето ще се случи само с най-дясно разположените тирета, в тези редове няма да бъде разделено името на фирмата.

Сега остава да решим проблема с оранжевите колони – когато една фирма внася няколко марки. Понеже повторението е майка на знанието – маркираме втората колона (Column1.2), десен бутон и Split Column -> By Delimiter…

Но избираме за разделител запетая (Comma) и опцията Each occurrence of the delimiter. Това ще раздели колоната на всяко място, където има запетая, т.е. по отделните марки автомобили.

Освен това правим една допълнителна стъпка. Натискаме стрелката пред Advanced Options и слагаме отметка пред Rows. По подразбиране е избрана Columns, т.е. след разделянето Power Query ще създаде нови колони. Но избирайки Rows, указваме, че искаме след разделянето Power Query да създаде нови редове със съответните стойности.

Ето и крайният резултат:

Остава само да подредим малко таблицата като разместим и сложим имена на колоните.

Публикувано в 5 минути Power Query с етикети , , . Постоянна връзка.