Zmiana typu połączenia w Power Query pozwala na uzyskanie różnych wyników w zależności od tego, jak dane z różnych tabel mają być ze sobą połączone. Kliknięcie ikony koła zębatego w oknie łączenia (Merge) otworzy ponownie to okno, gdzie zmieniając typ połączenia, zobaczymy podsumowanie widoczne z perspektywy obu tabel, które zostały połączone. W tym przypadku, gdy zmienimy typ połączenia na "Full Outer Join", wynik będzie obejmował wszystkie rekordy z obu tabel, zarówno te dopasowane, jak i niedopasowane. Dzięki temu, w przypadku braku dopasowania w jednej z tabel, w wynikach pojawią się wartości typu null w odpowiednich kolumnach.
Po zatwierdzeniu zmiany typu połączenia i kliknięciu "OK", możemy przejść do ostatniego etapu zapytania. W wynikowej tabeli pojawi się dodatkowy wiersz, pochodzący z tabeli tProducts, który nie miał odpowiadającego rekordu w tabeli tTownsMines. Takie połączenie typu Full Outer Join jest przydatne, gdy chcemy zachować pełne informacje z obu tabel, niezależnie od tego, czy dane rekordy mają odpowiedniki w drugiej tabeli.
Przed załadowaniem wyników do Excela, warto przeprowadzić jeszcze jedną operację w edytorze Power Query. W procesie tworzenia wielu zapytań, organizowanie ich w grupy pozwala na łatwiejsze zarządzanie i porządkowanie. Aby to zrobić, należy rozwinąć listę zapytań po lewej stronie edytora, zaznaczyć te, które chcemy pogrupować, a następnie kliknąć prawym przyciskiem myszy na zaznaczone zapytanie i wybrać "Move to Group". Jeśli jeszcze nie utworzyliśmy grupy, edytor zaproponuje jej stworzenie. Możemy nadać grupie nazwę i opis, który będzie widoczny po najechaniu kursorem na nazwę grupy w liście zapytań.
Tworząc grupy, możemy łatwiej zarządzać zapytaniami, ponieważ po ich pogrupowaniu, inne zapytania będą nadal widoczne w domyślnej grupie "Other Queries". Aby bardziej uporządkować widok, można zwinąć grupy, które nie są aktualnie potrzebne, klikając na mały trójkąt obok ikony folderu grupy. Należy jednak pamiętać, że grupy zapytań są widoczne tylko w panelu zapytań i nie pojawią się w listach rozwijanych, gdy wybieramy zapytania do dalszych operacji, takich jak łączenie zapytań.
Przechodząc do etapu łączenia danych z dwóch różnych list, np. subskrybentów i klientów, możemy potrzebować wyodrębnić elementy, które pojawiają się na obu listach, lub te, które występują tylko w jednej z nich. Aby to zrobić, należy wykonać odpowiedni typ połączenia w Power Query. Przyjrzyjmy się przykładom, gdzie mamy listę subskrybentów, którzy śledzą nas w mediach społecznościowych, oraz listę klientów, którzy dokonali zakupu. Istnieją osoby, które są zarówno subskrybentami, jak i klientami, ale są też tacy, którzy są tylko subskrybentami lub tylko klientami.
Aby wyodrębnić tylko osoby, które znajdują się na obu listach, wybieramy typ połączenia "Inner Join". W wyniku połączenia otrzymujemy tabelę z sześcioma wierszami, które reprezentują osoby obecne na obu listach. Połączenie takie daje nam dane tylko o tych, którzy są zarówno subskrybentami, jak i klientami. Jeśli chcemy utworzyć listy osób, które są tylko subskrybentami, lub tylko klientami, możemy to zrobić, stosując odpowiednie połączenia antyczne.
Dla subskrybentów, którzy nie są klientami, należy wybrać typ połączenia "Left Anti Join", co zwróci tylko te elementy, które występują w pierwszej tabeli (subskrybenci), ale nie mają odpowiadającego rekordu w tabeli klientów. Z kolei dla klientów, którzy nie są subskrybentami, należy wybrać "Right Anti Join", co spowoduje, że w wynikach pojawią się tylko ci klienci, którzy nie mają odpowiedników wśród subskrybentów.
Na każdym etapie procesu łączenia danych w Power Query warto pamiętać, że nazwy kolumn nie mają wpływu na samo połączenie. Ważniejsze jest, aby odpowiednio dobrać typ połączenia, w zależności od tego, jakie dane chcemy uzyskać w wyniku. Po wykonaniu tych operacji i przekształceniu zapytań, możemy załadować je do Excela, tworząc nowe arkusze, które zawierają odpowiednie tabele z wynikami.
Ważne jest, by rozumieć, jak poszczególne typy połączeń działają na naszych danych. Full Outer Join zapewnia pełne zestawienie rekordów z obu tabel, Inner Join filtruje tylko te, które mają odpowiedniki w obu tabelach, a typy Anti Join pozwalają na wyodrębnienie danych, które nie mają dopasowania w drugiej tabeli. Te operacje są niezwykle przydatne, gdy potrzebujemy dokładnie kontrolować, które dane zostaną uwzględnione w naszych wynikach, a które zostaną odrzucone.
Jak radzić sobie z błędami w Power Query na przykładzie danych numerycznych
W pracy z danymi często spotykamy się z koniecznością przetwarzania tabel zawierających różne typy wartości, w tym również wartości specjalne i błędy. Przykład z tabeli tNumbers pokazuje, jak w Power Query można skutecznie zarządzać błędami i specjalnymi wartościami liczbowymi, takimi jak NaN, nieskończoność czy wartość null.
Pierwszym krokiem jest zaimportowanie danych do Power Query oraz zmiana typu danych w kolumnie, która zawiera zarówno liczby, jak i tekst, na typ liczbowy, na przykład liczby całkowite (Whole Number) lub liczby dziesiętne (Decimal Number). Konwersja taka zwykle generuje błędy w komórkach, które zawierają dane niezgodne z nowym typem. Błędy te są szczegółowo opisywane przez edytor – widzimy typ błędu oraz jego opis, co pozwala lepiej zrozumieć przyczynę problemu.
Nie zawsze jednak standardowe narzędzia, takie jak polecenie „Replace Values”, wystarczą do zamiany błędów na wartości zastępcze. W przypadku błędów musimy skorzystać z dedykowanej opcji „Replace Errors”, która pozwala wskazać, jaka wartość ma zastąpić błąd – często jest to zero lub inna wartość neutralna dla dalszych obliczeń. Jest to szczególnie istotne, gdy chcemy, by analiza danych nie była zaburzona przez błędy wynikające z nieprawidłowego formatu lub wartości spoza zakresu.
Innym sposobem radzenia sobie z błędami jest wykorzystanie mechanizmu „try...otherwise”, który przypomina funkcję IFERROR z Excela, ale jest bardziej elastyczny i pozwala na zaawansowane zarządzanie sytuacjami wyjątkowymi. Dzięki temu możemy próbować konwersji wartości na liczbę, a w przypadku niepowodzenia automatycznie zwrócić inną wartość, np. zero. Istotne jest, że sama konstrukcja „try” zwraca nie tylko wartość, ale także informacje o błędzie w postaci rekordu zawierającego pola HasError oraz Error, co pozwala na późniejszą analizę i diagnostykę danych bez przerywania procesu przetwarzania.
Po zastosowaniu „try” można rozwinąć kolumnę z wynikami, aby uzyskać dostęp do tych szczegółowych informacji. Warto zwrócić uwagę, że aby to zrobić, należy usunąć lub zmienić typ danych kolumny z „number” na „any”, ponieważ typ liczbowy nie pozwala na rozwijanie zagnieżdżonych struktur danych.
Znajomość i wykorzystanie tych technik pozwala nie tylko skutecznie oczyszczać dane, ale również lepiej rozumieć ich strukturę i charakter błędów, co ma ogromne znaczenie przy budowaniu bardziej zaawansowanych modeli i analiz. Zastosowanie różnych podejść – od prostego zastępowania błędów po kompleksowe zarządzanie wynikami funkcji try – umożliwia elastyczne dostosowanie procesu ETL do specyfiki danych.
Poza samym technicznym aspektem ważne jest zrozumienie, że błędy w danych nie powinny być ignorowane, ponieważ często niosą ze sobą informacje o jakości danych, ich źródle lub problemach podczas zbierania danych. Dlatego skuteczne ich wykrywanie, obsługa i analiza stanowią fundament profesjonalnej pracy z danymi i budowy zaufania do wyników analizy.
Ponadto, znajomość tych metod pozwala uniknąć błędów logicznych w późniejszych etapach analizy, gdzie nieprzewidziane wartości lub błędy mogłyby prowadzić do fałszywych wniosków. Warto także pamiętać, że każde zastąpienie błędu konkretną wartością powinno być świadome i przemyślane, by nie zniekształcić istoty danych.
Jak porównywać dane z poprzednim wierszem w Power Query?
W pracy z danymi w Power Query często spotykamy się z koniecznością porównania wierszy w tabeli, co może okazać się bardziej skomplikowane niż w tradycyjnym Excelu. Istnieje jednak kilka metod, które umożliwiają łatwiejsze zarządzanie tymi operacjami. Jedną z najczęściej stosowanych technik jest użycie indeksów wierszy oraz rozszerzanie kolumn, aby uzyskać dostęp do danych z poprzednich wierszy. Poniżej przedstawiono krok po kroku proces porównywania danych w Power Query, na przykładzie dwóch scenariuszy: analizy błędów oraz obliczania różnic w dochodach.
W pierwszym przypadku, podczas ładowania danych z tabeli zawierającej informacje o transakcjach (np. tInvoices), celem jest ustalenie, czy klient jest powracającym. Aby to zrobić, należy porównać daty transakcji z poprzednimi zakupami tego samego klienta. W tym celu najpierw załadujemy dane do edytora Power Query, a następnie posortujemy je po dacie i kliencie, tak by transakcje były uporządkowane chronologicznie. Następnie, aby odwołać się do poprzedniego wiersza, dodajemy dwie kolumny indeksu. Jedna zaczyna się od wartości 1, a druga od 0. Dzięki temu możemy dokonać tzw. „merge” zapytania ze sobą, aby połączyć każdy wiersz z jego poprzednikiem, uzyskując dostęp do danych, takich jak identyfikator klienta i data transakcji.
Po dodaniu odpowiednich indeksów i połączeniu zapytań, dane z poprzedniego wiersza mogą zostać rozszerzone o dodatkowe kolumny, w tym o te, które zawierają informacje na temat klienta i daty zakupu. Używając odpowiedniej formuły logicznej, możemy obliczyć, czy klient jest powracający. Należy to zrobić, porównując klienta z poprzedniego wiersza z klientem bieżącego wiersza oraz sprawdzając, czy różnica w datach nie przekracza 14 dni. Ostateczna formuła, jaką stosujemy, wygląda następująco:
if [Client] = [Client.1] and [Date] - [Date.1] < #duration(14, 0, 0, 0) then "YES" else null.
Takie podejście pozwala na efektywne porównanie danych z różnych wierszy bez konieczności ręcznego sortowania i porównywania w Excelu. Jednak warto pamiętać, że w Power Query istnieją pewne różnice w sposobie interpretowania wartości, co może prowadzić do nieporozumień przy importowaniu do Excela. Na przykład wartości null są traktowane jako puste komórki, a specjalne wartości, takie jak NaN (Not a Number) czy Infinity, mogą być wyświetlane jako błędy typu #NUM!.
Drugi scenariusz dotyczy obliczania różnicy w dochodach między kolejnymi miesiącami na podstawie danych z tabeli dochodów (tIncome). Aby porównać wartości, trzeba skorzystać z metody opartej na indeksie wierszy. W tym przypadku po załadowaniu danych do edytora Power Query, dodajemy kolumnę indeksu, która zaczyna się od -1, co umożliwia porównanie dochodów z miesiąca bieżącego z dochodami z miesiąca poprzedniego. Znowu używamy formuły opierającej się na numerze indeksu, aby odwołać się do wcześniejszych wierszy, co pozwala na obliczenie różnicy w dochodach między miesiącami.
Zarówno w pierwszym, jak i drugim przypadku, podczas pracy z Power Query istotnym aspektem jest odpowiednie przygotowanie danych, aby uzyskać dostęp do wartości z poprzednich wierszy. Przy użyciu funkcji takich jak „merge” oraz indeksowanie wierszy, możemy zautomatyzować proces porównań, co w tradycyjnym Excelu wymagałoby ręcznych operacji lub skomplikowanych formuł.
Warto zauważyć, że w Power Query, podobnie jak w wielu innych narzędziach do analizy danych, kluczowe jest umiejętne zarządzanie błędami i specjalnymi wartościami. Podczas importu danych warto mieć na uwadze, że nie wszystkie wartości w Power Query będą rozpoznawane przez Excela w ten sam sposób. Na przykład wartości tekstowe typu [Record] lub [Table] są importowane jako ciągi znaków, co może wpłynąć na dalszą analizę danych, zwłaszcza jeśli dane te są później używane w obliczeniach lub raportach.
Po zrozumieniu powyższych technik i zastosowaniu odpowiednich formuł w Power Query, użytkownik ma dostęp do potężnego narzędzia, które może znacznie uprościć analizę danych i porównywanie wierszy w dużych zestawach danych. Jednak każdorazowo warto pamiętać, że Power Query jest bardzo wrażliwe na szczegóły, a małe błędy w implementacji mogą prowadzić do trudnych do zidentyfikowania problemów. Kluczowe jest również upewnienie się, że dane są odpowiednio przygotowane do analizy, aby proces porównań przebiegał płynnie i efektywnie.
Jak poprawnie zmieniać typy danych i przekształcać kolumny w Power Query dla danych z różnych regionów?
W Power Query, ustawienia regionalne odgrywają kluczową rolę w prawidłowym interpretowaniu danych, zwłaszcza gdy importujemy pliki zawierające dane sformatowane zgodnie z różnymi lokalizacjami. Opcja wyboru odpowiedniej lokalizacji (Locale) w ustawieniach zapytania (Query options) pozwala na dopasowanie interpretacji formatów liczb, dat czy procentów do specyfiki danego pliku, co jest niezbędne do poprawnego przetwarzania danych.
Niestety, w Power Query nie można zmienić typu danych dla wielu kolumn jednocześnie za pomocą standardowego menu Data type na karcie Home, ponieważ opcja „Using Locale” działa tylko na pojedynczej kolumnie. Aby zmienić typy danych dla kilku kolumn naraz z uwzględnieniem lokalizacji, należy zaznaczyć je wszystkie, kliknąć prawym przyciskiem myszy i wybrać Change Type → Using Locale. Tam zdefiniujemy odpowiedni typ, na przykład procentowy, oraz wybraną lokalizację, np. polską. Dzięki temu wartości zostaną poprawnie zinterpretowane.
Kolejnym ważnym etapem jest oczyszczenie i standaryzacja kolumn zawierających nazwy i symbole, szczególnie gdy są one połączone w jednej kolumnie, jak w przypadku kolumny Name zawierającej zarówno symbol kryptowaluty, jak i jej nazwę. Próby usunięcia symbolu za pomocą zastępowania wartości (Replace Value) mogą być nieskuteczne, gdyż metoda ta zamienia wszystkie wystąpienia tekstu w komórce, co może prowadzić do powstania pustych wartości.
Próba dynamicznego odniesienia się do symbolu poprzez modyfikację kodu M w ReplaceValue, aby odwoływał się do innej kolumny, nie działa, ponieważ funkcja ta oczekuje stałego tekstu, a nie referencji do wartości z innej kolumny. Podobne ograniczenia występują przy próbie zastosowania funkcji Text.AfterDelimiter w transformacji kolumny — funkcja ta działa tylko na jednej kolumnie i nie może się odwoływać do wartości z innych kolumn w tym samym wierszu, jeśli stosowana jest w Table.TransformColumns.
Rozwiązaniem jest użycie funkcji Text.AfterDelimiter w kontekście dodawania nowej kolumny (Add Column), gdzie można w ramach pojedynczej funkcji odwołać się do wartości z innych kolumn wiersza. W ten sposób można dynamicznie wyciąć nazwę kryptowaluty z pola zawierającego symbol i nazwę, zastępując statyczny delimiter referencją do kolumny Symbol. Po utworzeniu nowej kolumny z poprawnymi wartościami, oryginalna kolumna może zostać usunięta, a nowa przeniesiona na jej miejsce.
Po przeprowadzeniu niezbędnych transformacji danych istotne jest parametryzowanie ścieżki do pliku PDF, z którego importowane są dane, by zapytanie było bardziej elastyczne i mogło obsługiwać różne pliki bez konieczności ręcznej edycji ścieżki za każdym razem. Proces parametryzacji polega na utworzeniu parametru tekstowego w Power Query, do którego przypisujemy aktualną ścieżkę pliku, a następnie zamieniamy statyczną ścieżkę w źródle danych na odwołanie do tego parametru. Takie podejście ułatwia automatyzację i ponowne wykorzystanie zapytań w różnych scenariuszach.
Następnie, aby zwiększyć możliwości ponownego użycia zapytania, można je przekształcić w funkcję, co umożliwia łatwe wywoływanie importu danych z różnych plików, korzystając z parametryzowanej ścieżki. Funkcje w Power Query są potężnym narzędziem pozwalającym na modularność i skalowalność rozwiązań ETL.
Ważne jest, aby czytelnik zrozumiał, że wiele operacji w Power Query, które na pierwszy rzut oka wydają się proste, może wymagać niestandardowego podejścia i głębszej wiedzy na temat działania funkcji M oraz ograniczeń wynikających z kontekstu ich stosowania. Znajomość różnic między transformacjami działającymi na pojedynczej kolumnie a tymi, które mają odniesienie do całego wiersza lub wielu kolumn, jest kluczowa dla efektywnej pracy z danymi.
Ponadto, praca z danymi wielojęzycznymi i regionalnymi wymaga świadomego wyboru ustawień regionalnych, które determinują sposób interpretacji znaków dziesiętnych, separatorów tysięcy, formatów dat i procentów. Niezrozumienie tych aspektów może prowadzić do błędów w analizie i nieprawidłowych wyników.
Wreszcie, automatyzacja i parametryzacja zapytań nie tylko przyspiesza pracę, ale również minimalizuje ryzyko błędów związanych z ręcznym wprowadzaniem danych i pozwala na łatwiejszą konserwację modeli danych w dłuższej perspektywie.

Deutsch
Francais
Nederlands
Svenska
Norsk
Dansk
Suomi
Espanol
Italiano
Portugues
Magyar
Polski
Cestina
Русский