Scalanie zapytań w Power Query pozwala na łączenie danych z dwóch tabel w oparciu o wspólne kolumny, co umożliwia tworzenie zestawień i analizy, które byłyby trudne do uzyskania przy użyciu pojedynczych źródeł danych. Proces rozpoczyna się od wyboru dwóch zapytań, które chcemy scalić. W oknie scalania wskazujemy kolumny w obu tabelach, na podstawie których ma nastąpić dopasowanie wierszy. Dopasowanie jest czułe na wielkość liter oraz dokładność wartości. Po zatwierdzeniu wyboru Power Query tworzy nową kolumnę zawierającą tabele z dopasowanymi wierszami z drugiej tabeli.

Domyślnym typem połączenia jest tzw. „Left Outer Join”, czyli połączenie lewostronne, w którym zachowane są wszystkie wiersze z pierwszej (górnej) tabeli, a do nich dołączane są tylko odpowiadające im wiersze z tabeli drugiej (dolnej). Jeśli dla jakiegoś wiersza w pierwszej tabeli nie ma odpowiadającego w drugiej, w odpowiednich polach pojawią się wartości puste (null). To pozwala zachować kompletność danych bazowych, jednocześnie wzbogacając je o dodatkowe informacje.

Poza „Left Outer Join” Power Query udostępnia pięć innych rodzajów łączeń: „Right Outer Join” (łączenie prawostronne), „Full Outer Join” (pełne zewnętrzne), „Inner Join” (łączenie wewnętrzne), oraz dwa łączenia anty – „Left Anti Join” i „Right Anti Join”, które pozwalają wyselekcjonować wiersze, które nie mają odpowiadających rekordów w drugiej tabeli. Te różne typy łączeń umożliwiają precyzyjne dopasowanie danych w zależności od potrzeb analitycznych.

Po wykonaniu scalania otrzymujemy w kolumnie nową tabelę, która jednak nie jest wygodna do bezpośredniego wyświetlania w Excelu. Dlatego korzysta się z funkcji rozwijania kolumny, gdzie można wybrać, które pola z dopasowanych wierszy mają zostać wyciągnięte do głównej tabeli. Najczęściej wybieramy tylko niezbędne kolumny, np. cenę produktu, i odznaczamy dodawanie prefiksu do nazw kolumn, by zachować czytelność wyników.

Scalanie może również odbywać się na podstawie wielu kryteriów, czyli wielu kolumn jednocześnie. W takim przypadku podczas wyboru kolumn do dopasowania należy zaznaczyć je w identycznej kolejności w obu tabelach, co gwarantuje poprawność dopasowania. Użycie wielu kolumn pozwala na bardziej precyzyjne powiązanie danych, np. po nazwie produktu i jego krótkim opisie, co zapobiega błędnym dopasowaniom.

Połączone dane mogą być dalej wzbogacane o kolumny wyliczane, takie jak np. przychód wyliczony jako iloczyn ceny i ilości sprzedanych produktów. Power Query oferuje prosty dostęp do standardowych operacji matematycznych na kolumnach, co usprawnia przetwarzanie i analizę danych bez konieczności eksportu do zewnętrznych narzędzi.

Ważne jest, by rozumieć, że rodzaj łączenia wpływa na kształt i kompletność wynikowego zestawu danych, a wybór odpowiedniego typu zależy od celu analizy i charakterystyki danych źródłowych. Niezrozumienie różnic między typami joinów może prowadzić do błędnych wniosków lub utraty istotnych informacji.

Dodatkowo, należy pamiętać, że choć „Right Outer Join” jest dostępny, w praktyce często jest mniej użyteczny niż „Left Outer Join”, ponieważ operacje można odwrócić, a analiza i filtrowanie danych bywa prostsza przy wykorzystaniu łączenia lewostronnego. Dlatego lepiej jest wybrać ten typ i w razie potrzeby odwrócić kolejność tabel w procesie scalania.

Poza samym procesem scalania warto zwrócić uwagę na nazewnictwo kroków w Power Query oraz możliwość edycji formuł w pasku formuły, co pozwala na bardziej precyzyjne zarządzanie i automatyzację transformacji danych. Świadomość tego, jak Power Query przechowuje i przetwarza kolejne etapy przekształceń, umożliwia tworzenie bardziej złożonych i elastycznych modeli danych.

Jak skutecznie korzystać z funkcji grupowania w Power Query i M-code?

Grupowanie danych w Power Query stanowi podstawowy i niezwykle istotny krok w procesie analizy danych, który pozwala na agregowanie informacji według określonych kryteriów. Domyślnie, podczas korzystania z funkcji Group By, wybierana jest opcja podstawowa, umożliwiająca grupowanie według jednej kolumny oraz wykonanie pojedynczej operacji agregacji, na przykład zliczania wierszy. Gdy jednak do grupowania wybranych jest kilka kolumn, Power Query automatycznie przełącza się na tryb zaawansowany, gdzie kolumny te są traktowane jako hierarchia grupująca. Kolejność ich ułożenia zależy nie od kolejności wyboru, ale od położenia w aktualnym kroku transformacji.

W podstawowym zakresie agregacji dostępne są najprostsze działania matematyczne, takie jak suma, średnia, mediana, minimum oraz maksimum. Istnieją również bardziej specyficzne funkcje, na przykład zliczanie unikatowych wierszy (Count Distinct Rows) czy zachowanie wszystkich wierszy z grupy jako zagnieżdżona tabela w pojedynczej komórce (All Rows). Ta ostatnia funkcja umożliwia tworzenie bardziej zaawansowanych analiz, gdzie dane pozostają dostępne do dalszych operacji.

Gdy wymagane jest wykonanie wielu agregacji naraz, konieczne staje się przełączenie na tryb zaawansowany i dodanie odpowiedniej liczby operacji agregujących, z których każda może dotyczyć innej kolumny lub mieć inny charakter. Na przykład można obliczyć sumę i średnią dla kolumny dochodów, a jednocześnie zachować pełne zestawy danych w osobnej kolumnie jako tabele. Po zatwierdzeniu zmian Power Query tworzy nowy krok o nazwie Grouped Rows, gdzie dokonuje się faktyczne grupowanie oraz obliczenia.

Jednak samo zastosowanie grupowania często wiąże się z kwestią odpowiedniego formatu danych. Agregacje takie jak suma czy średnia mogą zmieniać domyślny typ danych kolumn, np. z liczby całkowitej na liczbę dziesiętną. W przypadku danych finansowych warto zadbać o ustawienie typu Currency, aby zachować poprawną interpretację walutową. W kodzie M odpowiadającym za grupowanie jest to możliwe poprzez modyfikację typu danych w blokach definiujących poszczególne kolumny. Warto jednak pamiętać, że samo wymuszenie typu w kroku grupowania nie zawsze powoduje rzeczywistą konwersję danych – w takich przypadkach należy dodać oddzielny krok zmiany typu, który dokona faktycznej transformacji i ewentualnej korekty precyzji.

W kodzie M agregacje takie jak suma i średnia realizowane są za pomocą funkcji List.Sum i List.Average, które operują na odpowiednich kolumnach w grupie. Natomiast zachowanie wszystkich wierszy jest realizowane przez użycie symbolu podkreślenia (_) po słowie each, co oznacza odwołanie do całego wiersza tabeli. W nowych wersjach Power Query typ danych dla kolumn zawierających tabele jest precyzyjnie określany i zawiera szczegółowy opis poszczególnych kolumn, co pozwala na bardziej precyzyjne operacje.

W sytuacjach, gdy interesuje nas nie cały wiersz, ale tylko konkretna kolumna z tabeli zagnieżdżonej, konieczne jest zastąpienie symbolu _ odniesieniem do tej kolumny (np. [Product]) i zmiana typu danych z tabeli na listę. Usuwa się wówczas definicję struktury tabeli, ponieważ wynik operacji nie jest już tabelą, lecz listą wartości. Po wprowadzeniu tych zmian, Power Query umożliwia rozszerzenie kolumny zawierającej listę, co otwiera kolejne możliwości ekstrakcji i analizy danych.

Warto jednak pamiętać, że zaawansowane modyfikacje M-code, takie jak przekształcanie z tabeli na listę oraz dodawanie funkcji List.Distinct, które usuwają duplikaty, powodują utratę standardowego interfejsu edycji kroku grupowania (ikona zębatki znika). Takie zmiany wymagają bardziej świadomego zarządzania kodem i lepszego zrozumienia wewnętrznej struktury zapytań.

Podsumowując, efektywne wykorzystanie grupowania w Power Query wymaga nie tylko znajomości dostępnych funkcji, ale także umiejętności zarządzania typami danych i strukturą wynikowych tabel. Umiejętność modyfikacji M-code pozwala na dopasowanie wyników do konkretnych potrzeb analitycznych, co znacznie zwiększa elastyczność i moc narzędzia.

Dodatkowo, ważne jest rozumienie, że podczas grupowania dane są przetwarzane i przechowywane w sposób zależny od zastosowanych agregacji i typów danych. Nie każda zmiana typu w Power Query jest natychmiastowa i faktyczna – czasem wymaga to wprowadzenia dodatkowych kroków transformacji. Ponadto, wykorzystanie funkcji List.Distinct przy pracy z listami jest kluczowe dla eliminacji duplikatów i uzyskania wiarygodnych zbiorów wyników.