W poprzednim wpisie omówiłem koncepcję narzędzi ETL (Extract, Transform, Load) wraz z opisem aplikacji Tableau Prep. Kontynuując temat, w poniższym wpisie przybliżę charakterystykę Power Query (dodatku do Power BI) oraz podsumuję oba narzędzia.
PowerQuery jako integralna część Power BI
Pierwszą zasadniczą różnicą pomiędzy Prepem a PowerQuery jest ich zintegrowanie – Prep jest odddzielną aplikacją, a Power Query niejako częścią PowerBI. PowerQuery uruchomiamy ze wstążki po uruchomieniu PowerBi, wybierając polecenie Transform Data:

Uruchomienie PowerQuery powoduje, że od razu czujemy się jak w domu. Narzędzie ma interfejs doskonale znany z innych aplikacji Microsoftu, czyli wstążkę poleceń. Łatwiej przyswoić sobie obsługę mając doświadczenia z Excela.
Interfejs jest nieco bardziej surowy niż w Prepie i może przypominać inne aplikacje Microsoftu (np. Accessa). O ile w Prepie na pierwszym miejscu był przepływ danych, to w Power Query są to dane:

Poszczególne elementy interfejsu Power Query:
1 – wstążka poleceń
2 – lista połączeń danych
3 – widok danych
4 – lista przekształceń modelujących i transformujących nasze dane
5 – pasek formuły
Extract, Transform i Load w Power Query
Dekomponując proces ETL w PowerQuery, poszczególne fazy zachodzą:

Extract – połączenia danych. Lista połączeń, podobnie jak w Prepie jest dość szeroka – przez pliki tekstowe, excela, przez hurtownie danych, data lake’i po rozwiązania chmurowe:

W tym obszarze PowerQuery ma dwie użyteczne funkcjonalności. Po pierwsze, możemy manualnie wpisać dane do tabeli, które następnie będą wykorzystanie w naszym modelu. Po drugie, źródła możemy organizować w foldery, co w przypadku złożonych modeli znacznie ułatwia nawigację:

Modelujemy dane w Power Query
Transform oznacza modelowanie danych. Podobnie jak w Prepie, lista dostępnych transformacji jest szeroka. Pierwsze polecania mamy dostępne na wstążce Home:

Manage columns – wybieramy kolumny, które chcemy zatrzymać w naszych danych. Oczywiście dobrą praktyką jest zachowanie tylko tych pól, które są nam potrzebne.
Reduce rows – decydujemy, które wiersze zachować (np. pierwsze 1000) lub usunąć (np. duplikaty, puste)
Sort – sortowanie danych
Transform – podstawowe polecenia, które w szerszym zakresie są dostępne we wstążce Transform
Combine – łączenie tabel. Dostępne są dwie opcje: append, czyli dołączanie tabel o takiej samej strukturze jedna pod drugą, albo merge – odpowiednik joinów.
Bardziej szczegółowe polecania modelowania danych dostępne są na wstążce Transform:

Poszczególne elementy pozwalają na:
Table – ustawienie pierwszego wiersza jako nagłówki, grupowanie, transpozycja
Column – w zależności od typu kolumny:
Any – modelowanie typu danych, zamiana wartości, pivot kolumn, przesuwanie
Text – dzielenie, format, extract
Number – funkcje statystyczne, matematyczne, naukowe
Date & Time – funkcje daty i czasu (rok, miesiąc, kwartał, etc)
Scripts – możliwość uruchomienia skryptu R albo Python
Kolejne elementy dostępne są we wstążce poleceń Add Column:

General – dodanie kolumn obliczeniowych, warunkowych czy indeksowych
From – tworzenie kolumn na podstawie naszych danych, analogicznie jak w przypadku transform: from text, number, date & time.
AI insights – wykorzystanie algorytmów Machine Learing, analogicznie do Einstein Analytics w Prepie
Lista transformacji jest dostępna w okienku Applied Steps. Mamy tam dostępną chronologiczna listę wszystkich przekształceń dokonanych na naszych danych. Co istotne, kroki tworzymy tylko raz, a następnie przy odświeżeniu danych przekształcenia dokonywane są automatycznie. Raz zapisane kroki możemy później modyfikować, przesuwać, usuwać a także wstawiać nowe. Możemy również zmieniać nazwy poszczególnych kroków, aby łatwiej było zorientować się w naszych przekształceniach.

Etap ostatni, czyli Load
Końcowym etapem procesu ETL jest załadowanie danych do dalszej analizy. W PowerQuery odbywa się to poprzez wybranie polecenia Close & Apply ze wstążki Home. Dane zostaną załadowane do PowerBI, i będziemy mogli przystąpić do wizualizacji i analizy. O ile o taki i tylko taki efekt nam chodziło, wtedy rozwiązanie jest jak najbardziej satysfakcjonujące. Problem pojawia się w sytuacji, jeśli chcielibyśmy wyeksportować dane z Power Query/Power BI, aby analizować je w innej aplikacji lub załadować do innej bazy danych. Występują tu dość spore ograniczenia. Po pierwsze, dla ilości wierszy ponad 1mln potrzebujemy zewnętrznej aplikacji (np. DAX Studio). Dla mniejszej liczby wierszy możemy wykorzystać klasyczne kopiuj-wklej z PowerBI/PowerQuery, wkleić do Excela, i zapisać jako plik csv albo xlsx. Wydaje się że przy całym zaawansowaniu narzędzi BI konieczność ręcznego kopiowania danych jest nieco przestarzałą metodą. Etap load jest ustawiony w tej sytuacji typowo pod dalszą analizę w PowerBI, a nie w jakichkolwiek innych systemach.
OK, to Tableau Prep czy PowerQuery?
Oczywiście na tak postawione pytanie nie ma jednoznacznej odpowiedzi, tak jak na pytanie Tableau czy Power BI. Prep jest narzędziem bardziej wizualnym, dzięki czemu łatwiej możemy zorientować się w przepływie danych. PowerQuery oferuje bardziej surowy interfejs, co również może mieć swoich zwolenników. Obie aplikacje mają nieco inny punkt centralny – w Prepie jest to przepływ danych, a w PowerQuery tabela przekształcanych danych. Warto pamiętać, że PowerQuery jest zintegrowany bezpośrednio z PowerBI, natomiast Prep to oddzielna aplikacja. Dane do Power BI ładujemy więc jednym przyciskiem, a w Prepie musimy wyeksportować extact a następne odświeżyć go w Tableau. Trwa to dłużej niż eksport Power Query -> PowerBI. Z drugiej strony Prep umożliwia w łatwy sposób eksport danych do plików lokalnych. Oba narzędzia są z pewnością świetnym uzupełnieniem self-service BI i zdecydowanie spełniają swoje zadania w zakresie przygotowania danych do wizualnej analizy.
Mateusz Karmalski, Tableau Author