Ostatnią 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.
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:
Tabela nr 2 – zawierająca niektóre kolumny występujące w tabeli nr 1 oraz inne.
Tabela nr 3 – zawierająca zupełnie inne kolumny w stosunku do tabeli nr 1
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:
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):
Rozwiniecie tej kolumny będzie wyglądało w następujący sposób:
Pierwsze 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:
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:
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:
W przypadku, gdy w kolumnie mamy nieliczbowy typ danych, do wyboru mamy jedynie Liczność (wszystkie) oraz Liczność (niepuste):
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:
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.