Power Query (cz. 7) – Kolumna strukturalna

PQ7_1Ostatnią opcją dostępną we wstążce Przekształć jest Kolumna strukturalna. Po kliknięciu w tę opcję wyświetlą nam się dwie operacje jakie możemy wykonać na kolumnie strukturalnej: Rozwiń oraz Agreguj. Funkcji tych możemy użyć jedynie na kolumnach zawierających dane typu Table (więcej o typach danych w Power Query można przeczytać tutaj). Ten rodzaj danych można pozyskać na kilka sposobów – na przykład wskazując programowi folder w którym znajduje się kilka plików z danymi, czy też poprzez analizę kodu XML bądź JSON. Do czego może przydać się ta opcja?

 

Rozwiń

Opcja Rozwiń jest dostępna także z poziomu nagłówka kolumny z tabelami – klikając na umiejscowioną tam ikonkę z dwoma strzałkami uzyskamy dokładni ten sam efekt co w przypadku wybrania opisywanej opcji.

PQ7_2

Po kliknięciu w tą ikonkę bądź w funkcję Rozwiń otwiera nam się okno zawierające nazwy kolumn tabeli z pierwszej komórki. Po rozwinięciu kolumny nastąpi scalenie tabel w stosunku do kolumn z pierwszej z nich. W przypadku gdy we wszystkich tabelach znajdują się te same kolumny co w pierwszej z nich, to ich wartości znajdą się w tabeli wynikowej. W przypadku gdy tabele nie zawierają kolumn o tej samej nazwie, w pustym wierszu znajdzie się wartość null.

Funkcjonowanie tej opcji najprościej będzie przedstawić to na prostym przykładzie. Załóżmy, iż do PowerQuery wczytaliśmy następujące tabele:

Tabela nr 1 – wymieniona jako pierwsza w zestawieniu w PowerQuery:

PQ7_3

Tabela nr 2 – zawierająca niektóre kolumny występujące w tabeli nr 1 oraz inne.

PQ7_4

Tabela nr 3 – zawierająca zupełnie inne kolumny w stosunku do tabeli nr 1

PQ7_5

Plik (bądź kilka plików) z powyższymi tabelami wczytujemy do edytora Power Query. Możemy to wykonać za pomocą opcji pobrania danych z pliku (w takim przypadku wskazujemy plik zawierający nasze dane) bądź też z folderu (wybierając folder, w którym znajdują się pliki zawierające nasze dane). Po drobnych przekształceniach możemy uzyskać poniższą (lub podobną),  tabelę zawierającą typ danych Table:

PQ7_6

Po zaznaczeniu kolumny w której zawierają się tabelaryczne dane (w tym wypadku Data) i kliknięciu w opcję Kolumna Strukturalna -> Rozwiń pokaże się nam okno dialogowe, w którym możemy wybrać kolumny które możemy rozwinąć. Znajdziemy tam tylko nazwy z tabeli znajdującej się w pierwszym wierszu (w powyższym przypadku będzie to Tabela1):

PQ7_7Rozwiniecie tej kolumny będzie wyglądało w następujący sposób:

PQ7_8Pierwsze trzy wiersze pochodzą z tabeli 1, więc w każdej komórce znajdują się jakieś dane. Kolejne 4 wiersze są z tabeli 2, która zawierała jakieś dane w kolumnach ID Sprzedawcy, Data oraz Produkt. Pozostałe komórki – w kolumnie Sprzedawca oraz ID transakcji – pozostają puste, tzn. wartość null. Tabela nr 3 w ogóle nie miała kolumn nazywających się tak samo jak w tabeli 1, dlatego też wszystkie komórki w trzech wierszach reprezentujących tą tabelę mają wartość null.

Mechanizm różni się od funkcji scalania tym, iż znikają kolumny z tabeli nr 2 oraz tabeli nr 3 które nie nazywają się tak samo jak kolumny tabeli nr 1. W scalaniu kolumny te również dodawane są do tabeli wynikowej, a tabela nr 1 ma w tych komórkach wartość null.

Agreguj

Oprócz możliwości włączenia tej opcji z pozycji wstążki Przekształcanie, funkcję tą – podobnie jak Rozwiń – można włączyć z pozycji ikonki z dwoma strzałkami znajdującej się w nagłówku kolumny. Trzeba zmienić pozycję zaznaczenia z Rozwiń na Agreguj:

PQ7_9

Po włączeniu przełączeniu tej opcji bądź też po kliknięciu Kolumna strukturalna -> Agreguj ukaże nam się następujące okno dialogowe:

PQ7_10

Mamy kilka opcji agregacji danych –  są one bardzo podobne do tych, które znamy z tabel przestawnych czy też z funkcji Statystyczne w obszarze Kolumna liczb. Wyboru sposobu agregacji dokonujemy klikając w ikonkę trójkąta pojawiającą się obok nazwy kolumny w oknie Agreguj:

PQ7_11

W przypadku, gdy w kolumnie mamy nieliczbowy typ danych, do wyboru mamy jedynie Liczność (wszystkie) oraz Liczność (niepuste):

PQ7_12

Liczność (wszystkie) zlicza komórki w których znajduje się wartość null, natomiast Liczność (niepuste) – pomija je.

Niestety, z niewiadomych przyczyn program nie rozpoznaje liczbowego typu danych przy imporcie danych z niektórych źródeł, np. z plików Excela lub też programu Access. Trudno wskazać przyczynę tego stanu rzeczy. Rozpoznaje za to typy przy pobieraniu danych z portalu Facebook czy też ze źródeł OData (przykładem tego ostatniego może być używana do ćwiczeń popularna baza danych Northwind dostępna pod adresem http://services.odata.org/northwind/northwind.svc/ .

 

Więcej informacji na temat pobierania danych z różnych źródeł znajdziesz w tym artykule.

 

Efektem agregacji danych będzie tabela, w której zamiast typu Table będą znajdowały się wybrane przez nas zagregowane kolumny:

PQ7_13

Przydatność

Choć opcja kolumna strukturalna liczy to, co możemy wyliczyć w inny sposób w Power Query (tj. korzystając z statystycznych przekształceń kolumny liczb) czy też w skoroszycie Excela (np. przy pomocy tabeli przestawnej), to czyni to w sposób niezwykle ergonomiczny i przyjazny dla użytkownika – nie „wypluwając” w efekcie swojego działania suchej liczby bez kontekstu tabeli oraz bez potrzeby wyłączania edytora Power Query i – co za tym idzie –  potencjalnie długiego załadowywania danych do skoroszytu. Aspekty te powodują, że tam gdzie będzie to możliwe – tzn. tam gdzie będzie się miało do czynienia z danymi typu Table – funkcja ta z pewnością będzie często używana. Dosyć dużym mankamentem jest jedynie niejasny system agregacji – a konkretnie fakt, iż nie na wszystkich kolumnach z liczbowym typem danych da się przeprowadzać działania charakterystyczne dla tego typu, tzn. sumowania, obliczania średniej i innych. Ze względu na częstą aktualizację dodatku Power Query można się spodziewać rozwiązania tego problemu przez Microsoft w najbliższej przyszłości.

Co o tym myślicie? Podzielcie się swoją opinią w komentarzu.

 

Udostępnij ten wpis:

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *