Power Query for Analysts
Moduł 1: Wprowadzenie do Power Query i podstawowe transformacje
Cel
W tym ćwiczeniu nauczysz się:
Importować dane z pliku CSV do Power Query. Sprawdzać i dostosowywać typy danych, koncentrując się na konwersji daty zapisanej jako tekst na rzeczywisty typ daty. Zastosować podstawowe filtrowanie danych. Korzystać z pomocy zewnętrznej (np. ChatGPT) w celu uzyskania wskazówek dotyczących tworzenia niestandardowego kodu M, bez bezpośredniego kopiowania rozwiązań.
Dostarczone dane
Otrzymujesz do pobrania plik CSV o nazwie 📂PQsales.csv który zawiera dane zamówień sprzedaży.
Instrukcje
- Krok 1: Importuj dane
- Otwórz Power Query w Excelu lub Power BI.
- Zaimportuj dane z pliku sales.csv.
- Zauważ, że kolumna OrderDate została zaimportowana jako tekst ze względu na swój format (dd/MM/yyyy).
- Krok 2: Sprawdź i przekonwertuj typy danych
- Sprawdź, czy każda kolumna ma poprawny typ danych.
- Ręcznie przekształć kolumnę OrderDate z tekstu na typ daty.
- Wskazówka: Jeśli napotkasz trudności, możesz zapytać ChatGPT o wskazówki, jak napisać funkcję M do konwersji tekstu na datę.
- Krok 3: Zastosuj podstawowe filtrowanie
- Filtruj zestaw danych, tak aby pozostały tylko wiersze, w których koszt jest większy niż 200.
- Propozycja: Użyj interfejsu graficznego Power Query lub napisz prosty skrypt M, aby zastosować filtr. Jeśli to konieczne, skonsultuj się z ChatGPT w celu uzyskania pomysłów na implementację tego filtru.
- Krok 4: Przejrzyj i zapisz swoją pracę
- Potwierdź, że transformacje zostały poprawnie zastosowane, przeglądając podgląd danych.
- Zapisz zapytanie i udokumentuj kroki, które podjąłeś.
Zadanie
Wykonaj kroki opisane powyżej w Power Query. Eksperymentuj z dostępnymi opcjami transformacji i staraj się zrozumieć, jak każdy krok wpływa na Twoje dane. Używaj ChatGPT w celu uzyskania wskazówek lub rozwiązywania problemów, ale unikaj kopiowania kompletnych rozwiązań dosłownie.
Moduł 2: Łączenie i scalanie danych z wielu źródeł
Cel
W tym ćwiczeniu nauczysz się:
Importować dane z wielu plików CSV do Power Query. Scalić (połączyć) dane z różnych źródeł na podstawie wspólnego klucza. Użyć lewego zewnętrznego łączenia (Left Outer Join) do dodania szczegółów klienta do zamówień sprzedaży. Korzystać z pomocy zewnętrznej (np. ChatGPT) w celu uzyskania wskazówek dotyczących pisania niestandardowego kodu M, bez kopiowania kompletnych rozwiązań.
Dostarczone dane
Otrzymujesz do pobrania dwa pliki CSV:
📂 Plik:PQ_sales2.csv – Zawiera dane zamówień sprzedaży:
📂 Plik:PQ_customers.csv – Zawiera informacje o klientach:
Instrukcje
- Krok 1: Importuj dane
Otwórz Power Query w Excelu lub Power BI. Zaimportuj dane z obu plików PQ_sales.csv i PQ_customers.csv. Sprawdź, czy oba zapytania zostały załadowane poprawnie.
- Krok 2: Sprawdź i przekonwertuj typy danych
Potwierdź, że każda kolumna ma odpowiedni typ danych w obu zapytaniach. Na przykład, zauważ, że kolumna OrderDate w PQ_sales.csv jest zaimportowana jako tekst z powodu niestandardowego formatu. Wskazówka: Użyj funkcji transformacji, jeśli jakiekolwiek dostosowania są potrzebne.
- Krok 3: Scal dane
Scal zapytanie PQ_sales.csv z zapytaniem PQ_customers.csv. Użyj kolumny Customer jako klucza dopasowania. Wybierz lewy zewnętrzny join (Left Outer Join), aby każde zamówienie sprzedaży zostało zachowane wraz z odpowiednimi szczegółami klienta. Propozycja: Jeśli nie wiesz, jak napisać kod M do tego scalenia, zapytaj ChatGPT o wskazówki dotyczące scalania zapytań.
- Krok 4: Przejrzyj scalone dane
Potwierdź, że wynikowe zapytanie zawiera dodatkowe kolumny (np. Region, CustomerSince) z pliku PQ_customers.csv. Sprawdź scalone dane, aby upewnić się, że szczegóły klientów zostały poprawnie połączone z odpowiednimi zamówieniami sprzedaży.
- Krok 5: Zapisz swoją pracę
Zapisz swoje zapytanie i udokumentuj kroki transformacji, które zastosowałeś.
Zadanie
Wykonaj kroki opisane powyżej w Power Query. Eksperymentuj z interfejsem graficznym i niestandardowym kodem M w celu wykonania scalania. Korzystaj z zasobów zewnętrznych (np. ChatGPT) w celu uzyskania wskazówek lub rozwiązywania problemów, ale unikaj kopiowania kompletnych rozwiązań dosłownie.
Moduł 3: Tworzenie niestandardowych kolumn i funkcji
Cel
W tym ćwiczeniu nauczysz się:
Tworzyć niestandardowe kolumny obliczeniowe w Power Query.
Używać wbudowanych funkcji Power Query do manipulacji tekstem, liczbami i datami.
Pisać niestandardowe funkcje w języku M, aby automatyzować transformacje.
Korzystać z ChatGPT do pomocy przy pisaniu i optymalizacji kodu M.
Dostarczone dane
Do tego ćwiczenia wykorzystamy następujące zbiory danych:
📂Plik:PQ_sales2.csv (używany w poprzednich modułach)
📂Plik:PQ_discounts.csv (nowy zbiór danych) - zawiera stawki rabatowe w zależności od typu produktu.
Instrukcje
- Krok 1: Importuj dane
Otwórz Power Query w Excelu lub Power BI. Zaimportuj oba pliki: PQ_sales.csv i PQ_discounts.csv. Upewnij się, że obie tabele zostały załadowane poprawnie.
- Krok 2: Tworzenie niestandardowej kolumny dla całkowitego kosztu
W tabeli PQ_sales dodaj nową niestandardową kolumnę: Przejdź do Dodaj kolumnę → Kolumna niestandardowa. Nazwij ją TotalCost. Utwórz formułę do obliczenia całkowitego kosztu jako:
Quantity * Cost
Kliknij OK i sprawdź wyniki.
- Krok 3: Zastosowanie rabatów za pomocą scalania
Scal PQ_sales z PQ_discounts, używając kolumny Product jako klucza. Rozwiń kolumnę DiscountRate do tabeli PQ_sales. Dodaj kolejną niestandardową kolumnę o nazwie DiscountedPrice:
[TotalCost] - ([TotalCost] * [DiscountRate])
Sprawdź, czy nowa kolumna poprawnie stosuje rabaty.
- Krok 4: Tworzenie niestandardowej funkcji w M
Utwórz funkcję do kategoryzowania produktów w różne przedziały cenowe: Przejdź do Strona główna → Edytor zaawansowany. Napisz funkcję M, która przyjmuje Cost jako wejście i zwraca kategorię:
Low if Cost < 500 Medium if Cost between 500 and 1500 High if Cost > 1500
Wskazówka: Jeśli nie jesteś pewny, jak zbudować funkcję, zapytaj ChatGPT: "Jak napisać funkcję M, która kategoryzuje ceny na Low, Medium i High?"
- Krok 5: Przypisywanie kategorii
W tabeli PQ_sales dodaj niestandardową kolumnę, używając funkcji. Nazwij kolumnę PriceCategory. Upewnij się, że kategorie są wyświetlane poprawnie na podstawie wartości w kolumnie Cost.
Zadanie
- ✔ Wykonaj wszystkie kroki w Power Query.
- ✔ Eksperymentuj zarówno z interfejsem graficznym, jak i z kodem M.
- ✔ Korzystaj z ChatGPT w celu rozwiązywania problemów lub poprawiania skryptu M.
Moduł 4: Zaawansowane transformacje danych w Power Query
Cel
W tym module nauczysz się:
- ✔ Jak pivotować i unpivotować dane w Power Query.
- ✔ Jak dzielić i scalać kolumny w celu lepszej strukturyzacji danych.
- ✔ Jak używać transformacji warunkowych.
- ✔ Jak wykorzystać ChatGPT do tworzenia złożonych skryptów M.
Dostarczone dane
Do tego ćwiczenia wprowadzimy nowy zbiór danych:
PQ_sales_pivot.csv, który zawiera miesięczne dane sprzedaży różnych produktów.
📂 Plik:PQ_sales_pivot.csv - Struktura danych w formacie pivot.
Instrukcje
Krok 1: Importuj dane
Otwórz Power Query w Excelu lub Power BI.
Zaimportuj plik PQ_sales_pivot.csv.
Upewnij się, że tabela została poprawnie załadowana.
Krok 2: Unpivotowanie danych
Obecna tabela ma szeroki format, który nie jest idealny do analizy.
Unpivotuj kolumny miesięczne, aby dane miały strukturę:
- Product
- Category
- Month
- Sales Amount
Jak to zrobić:
- Kliknij Transformuj → Użyj pierwszego wiersza jako nagłówków, aby upewnić się, że kolumny mają poprawne nazwy.
- Zaznacz kolumny z miesiącami (Jan 2025, Feb 2025 itd.).
- Kliknij Transformuj → Unpivotuj kolumny.
- Zmień nazwy wynikowych kolumn:
"Attribute" → Month
"Value" → Sales Amount
Krok 3: Dzielnie i scalanie kolumn
- Kolumna Month obecnie zawiera wartości takie jak "Jan 2025".
- Podziel tę kolumnę na Month Name i Year:
- Zaznacz kolumnę Month.
- Kliknij Transformuj → Podziel kolumnę → Według ogranicznika.
- Wybierz spację (" ") jako ogranicznik.
- Zmień nazwy nowych kolumn na Month Name i Year.
- Przykład scalania kolumn:
Jeśli chcesz scalić Product i Category, zaznacz obie kolumny.
- Kliknij Transformuj → Scal kolumny.
- Użyj " - " jako separatora (np. "Monitor - Electronics").
Krok 4: Dodanie transformacji warunkowych
- Dodaj nową niestandardową kolumnę o nazwie "Sales Performance":
if [Sales Amount] < 300 then "Low" else if [Sales Amount] >= 300 and [Sales Amount] < 800 then "Medium" else "High"
- Upewnij się, że kolumna poprawnie kategoryzuje wyniki sprzedaży.
Zadanie
- ✔ Wykonaj wszystkie kroki w Power Query.
- ✔ Eksperymentuj z unpivotowaniem, dzieleniem, scalaniem i logiką warunkową.
- ✔ Korzystaj z ChatGPT w celu rozwiązywania problemów lub poprawiania skryptu M.
Moduł 5: Parametryzacja i dynamiczne zapytania w Power Query
Cel ćwiczenia
W tym module nauczysz się:
- ✔ Jak tworzyć parametry w Power Query.
- ✔ Jak używać parametrów do dynamicznego filtrowania i sterowania wynikami zapytań.
- ✔ Jak budować dynamiczne źródła danych w oparciu o dane wejściowe użytkownika.*✔ Jak wykorzystać ChatGPT do pisania i optymalizacji kodu M dla parametrów.
Dostarczone dane
W tym ćwiczeniu użyjemy pliku PQ_sales.csv oraz nowego zestawu danych PQ_parameters.xlsx, który zawiera wartości do dynamicznego filtrowania.
📂 File:PQ parameters.xlsx - Tabela z parametrami do filtrowania:
Instrukcje
- Krok 1: Importowanie danych
- Otwórz Power Query w Excelu lub Power BI.
- Zaimportuj oba zestawy danych:
PQ_sales.csv (Dane transakcji sprzedaży). PQ_parameters.xlsx (Parametry filtrowania).
- Upewnij się, że tabele zostały poprawnie załadowane.
- Krok 2: Tworzenie i używanie parametrów dynamicznie
- Załaduj tabelę PQ_parameters.xlsx do Power Query.
- Upewnij się, że tabela zawiera dwie kolumny: ParameterName (Nazwa parametru) i Value (Wartość).
- Kliknij Przekształć → Użyj pierwszego wiersza jako nagłówków, aby poprawnie przypisać nazwy kolumn.
- Przekształć tabelę w rekord, aby łatwo odwoływać się do wartości:
- Zaznacz kolumnę ParameterName i wykonaj Przestawienie kolumny.
- Kliknij Przekształć → Przestaw kolumnę, ustawiając Value jako kolumnę wartości.
Powinno to utworzyć rekord zawierający pola StartDate, EndDate, MinCost, MaxCost, FilePath (jeśli chcemy dynamicznie pobierać dane z innego pliku).
- Upewnij się, że wszystkie wartości mają poprawny typ danych (Data dla StartDate i EndDate, Liczba dla MinCost i MaxCost, Tekst dla FilePath).
Teraz parametry są dynamicznie pobierane z pliku PQ_parameters.xlsx.
- Krok 3: Zastosowanie parametrów do filtrowania danych
Filtrowanie danych sprzedaży według zakresu dat:
- Otwórz zapytanie PQ_sales w Power Query.
- Upewnij się, że kolumna OrderDate ma typ Data. Jeśli nie, zmień go na Data poprzez Przekształć → Typ danych → Data.
- Kliknij ikonę filtra w kolumnie OrderDate.
- Wybierz Filtry dat → Filtr niestandardowy.
- W oknie filtrów ustaw:
- Pierwszy warunek na jest po lub równe i odwołaj się do StartDate z rekordu.
- Drugi warunek na jest przed lub równe i odwołaj się do EndDate z rekordu.
- Kliknij OK, aby zastosować filtr.
Alternatywnie, możesz użyć wyrażenia M do filtrowania danych:
Table.SelectRows(PQ_sales, each [OrderDate] >= Parameters[StartDate] and [OrderDate] <= Parameters[EndDate])
Filtrowanie danych sprzedaży według zakresu kosztów:
- Upewnij się, że kolumna Cost ma typ Liczba.
- Kliknij ikonę filtra w kolumnie Cost.
- Wybierz Filtry liczb → Pomiędzy.
- Ustaw pierwszy warunek na większe niż lub równe i odwołaj się do MinCost z rekordu.
- Ustaw drugi warunek na mniejsze niż lub równe i odwołaj się do MaxCost z rekordu.
- Kliknij OK, aby zastosować filtr.
Alternatywnie, możesz użyć wyrażenia M:
Table.SelectRows(PQ_sales, each [Cost] >= Parameters[MinCost] and [Cost] <= Parameters[MaxCost])
- Krok 4: Tworzenie dynamicznego źródła danych
Dynamiczne pobieranie danych z pliku o ścieżce przechowywanej w parametrze:
Source = Excel.Workbook(File.Contents(Parameters[FilePath]), null, true)
Jeśli chcemy pobierać dane z pliku, którego ścieżka może się zmieniać, możemy dodać parametr FilePath do PQ_parameters.xlsx.
FilePath powinien zawierać pełną ścieżkę do pliku, np. C:\Dane\Raport.xlsx.
Po aktualizacji wartości w PQ_parameters.xlsx, Power Query automatycznie załaduje dane z nowej lokalizacji.
Zadanie
- ✔ Stwórz i wykorzystaj parametry do dynamicznego filtrowania danych.
- ✔ Zaimplementuj dynamiczne źródło danych wykorzystujące parametryzowaną ścieżkę pliku.
- ✔ Skorzystaj z ChatGPT do analizy i optymalizacji kodu M w Power Query.
Modul 6: Automatyzacja Łączenia i Odswiezania Danych w Power Query
Cel ćwiczenia
W tym module nauczysz się:
- ✔ Jak automatycznie importować i łączyć pliki z folderu.
- ✔ Jak radzić sobie z różnymi nazwami kolumn w różnych plikach.
- ✔ Jak przygotować dane do raportowania niezależnie od struktury źródłowych plików.
- ✔ Jak ustawić automatyczne odświeżanie danych w Power Query.
Dostarczone dane
W tym ćwiczeniu użyjemy zestawu wielu plików sprzedażowych, które znajdują się w jednym folderze.
📂 File:Sales Jan.xlsx – Sprzedaż za styczeń
📂 File:Sales Feb.xlsx – Sprzedaż za luty
📂 File:Sales Mar.xlsx – Sprzedaż za marzec
Każdy plik zawiera podobne dane, ale ma inne nazwy kolumn dla wartości sprzedaży:
W Sales_Jan.xlsx kolumna sprzedaży to Total Sale.
W Sales_Feb.xlsx kolumna sprzedaży to Revenue.
W Sales_Mar.xlsx kolumna sprzedaży to SalesAmount.
Celem jest połączenie tych plików w jeden zbiór i dostosowanie nazw kolumn, aby były spójne.
Instrukcje
- Krok 1: Pobranie plików z folderu
- Otwórz Power Query w Excelu.
- Wybierz Dane → Pobierz dane → Z pliku → Z folderu.
- Wskaż folder, w którym znajdują się pliki sprzedażowe (Sales_Jan.xlsx, Sales_Feb.xlsx, Sales_Mar.xlsx).
- Kliknij Załaduj (Load), aby dodać pliki do Power Query bez automatycznego łączenia.
- Krok 2: Zastosowanie kodu M do załadowania danych
- Otwórz Zaawansowany Edytor w Power Query.
- Wklej poniższy kod M i kliknij Gotowe:
let // Wczytanie plików z folderu Source = Folder.Files("C:\Users\gp\Desktop\PQ\Months"), // Dodanie kolumny, która otworzy zawartość pliku Excel AddContent = Table.AddColumn(Source, "Custom", each Excel.Workbook([Content])), // Rozwinięcie zawartości, aby zobaczyć wszystkie dane ExpandContent = Table.ExpandTableColumn(AddContent, "Custom", {"Name", "Data"}, {"File Name", "Data"}) in ExpandContent
- Po zastosowaniu kodu zobaczysz tabelę z nową kolumną Data.
- Krok 3: Rozwinięcie zawartości tabel
- Kliknij ikonę rozwinięcia obok kolumny Data, aby zobaczyć pełne dane z plików.
- Upewnij się, że wszystkie kolumny z różnych plików są widoczne.
- Krok 4: Usunięcie zbędnych kolumn
- Sprawdź tabelę i usuń niepotrzebne kolumny (np. kolumny techniczne dotyczące plików, które nie są wymagane do analizy).
- Kliknij Przekształć → Usuń kolumny i usuń zbędne kolumny.
- Krok 5: Nadanie nazw kolumnom
- Ustaw własne nazwy kolumn zgodnie ze spójnym formatem (np. Total Sale → Sales).
- Kliknij Przekształć → Zmień nazwę kolumny dla każdej kolumny, aby nadać im jednolitą strukturę.
- Krok 6: Usunięcie zbędnych wierszy (powtórzeń nagłówków)
- Zastosuj filtr na kolumnie zawierającej wartości sprzedaży.
- Usuń wiersze zawierające powtórzenia nagłówków, które mogą występować z powodu łączenia wielu plików.
- Kliknij Przekształć → Usuń wiersze → Usuń duplikaty lub zastosuj filtr manualnie.
- Krok 7: Automatyczne odświeżanie danych
- Przejdź do Dane → Właściwości zapytania → Odświeżaj dane przy otwieraniu pliku.
- Możesz także ustawić automatyczne odświeżanie co X minut.
- Jeśli dodasz nowy plik do folderu (np. Sales_Apr.xlsx), Power Query automatycznie pobierze dane z nowego pliku po odświeżeniu!
Zadanie
- ✔ Załaduj i połącz dane z Sales_Jan.xlsx, Sales_Feb.xlsx, Sales_Mar.xlsx.
- ✔ Ujednolić nazwy kolumn i przekształcić dane w jednolity format.
- ✔ Usuń puste wiersze, zbędne kolumny i duplikaty.*✔ Ustaw automatyczne odświeżanie, aby nowe pliki były automatycznie dołączane.
- ✔ Skorzystaj z ChatGPT do optymalizacji kodu M w Power Query.