Power Query for Analysts
Modul 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 📂Media: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.
Modul 2: Laczenie i scalanie danych z wielu zrodel
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:
📂 Media:PQ_sales2.csv – Zawiera dane zamówień sprzedaży:
📂 Media: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.
Modul 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:
📂Media:PQ_sales2.csv (używany w poprzednich modułach)
📂Media: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.
 
Modul 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.
📂 Media: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.
📂 Media: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 Laczenia i Odswiezania Danych w Power Query
Cel
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.
📂 Media:Sales_Jan.xlsx – Sprzedaż za styczeń
📂 Media:Sales_Feb.xlsx – Sprzedaż za luty
📂 Media: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.
 
Modul 7: Optymalizacja Wydajnosci Zapytan w Power Query
Cel
W tym module nauczysz się:
- ✔ Jak przyspieszyć działanie Power Query w przypadku dużych zbiorów danych.
 - ✔ Jak unikać nieefektywnych operacji, które spowalniają zapytania.
 - ✔ Jak korzystać z funkcji buforowania i operacji na poziomie bazy danych.
 - ✔ Jak minimalizować ilość przetwarzanych danych dla lepszej wydajności.
 
Wprowadzenie
Power Query pozwala na transformację danych, ale przy dużych zbiorach może działać wolno. W tym module nauczysz się optymalnych praktyk, które pozwolą skrócić czas przetwarzania zapytań.
Instrukcje
- Krok 1: Unikanie niepotrzebnych operacji na całym zbiorze danych
 
- Wczytaj duży plik CSV 📂Media:PQSales_Large.csv.
 - Sprawdź liczbę wierszy i kolumn – im więcej danych, tym większe znaczenie ma optymalizacja.
 - Usuń zbędne kolumny na początku zapytania, zamiast na końcu.
 - Użyj Filtrowania wczesnego – zastosuj filtr, aby ograniczyć liczbę przetwarzanych wierszy od razu po imporcie.
 
- Krok 2: Używanie funkcji buforowania (Table.Buffer)
 
- Sprawdź, jak działa przetwarzanie kroków – każda operacja może powodować ponowne przeliczenie całego zapytania.
 - Dodaj krok Table.Buffer() po filtrze, aby zapobiec ponownemu przetwarzaniu danych:
 
let
    Source = Csv.Document(File.Contents("C:\Users\gp\Desktop\PQ\Sales_Large.csv"),[Delimiter=",", Columns=6, Encoding=1252, QuoteStyle=QuoteStyle.None]),
    FilteredRows = Table.SelectRows(Source, each [Cost] > 500),
    BufferedData = Table.Buffer(FilteredRows)
in
    BufferedData
Zastosowanie Table.Buffer() powoduje, że Power Query zapisuje wyniki kroku w pamięci, zamiast ponownie przeliczać je w kolejnych krokach.
- Krok 3: Minimalizacja liczby wczytywanych wierszy
 
- Jeśli pracujesz z dużą bazą danych lub plikami CSV, załaduj tylko potrzebne kolumny i wiersze.
 - Zamiast pobierać wszystkie dane, użyj funkcji Keep Top Rows do pobrania np. pierwszych 1000 wierszy dla testów.
 - Użyj funkcji Remove Duplicates na wczesnym etapie, aby zmniejszyć liczbę przetwarzanych danych.
 
- Krok 4: Optymalizacja połączeń z bazą danych
 
- Jeśli pracujesz z SQL Server, Power BI lub inną bazą danych, unikaj pobierania całej tabeli do Power Query.
 - Zamiast tego, filtrowanie i grupowanie wykonuj na poziomie bazy danych za pomocą przekształceń natywnych SQL.
 
Przykład:
let
    Source = Sql.Database("ServerName", "DatabaseName", [Query="SELECT OrderID, OrderDate, Customer, Product FROM Sales WHERE Cost > 500"])
in
    Source
Dzięki temu Power Query pobierze już przefiltrowane dane, zamiast filtrować całą tabelę w pamięci.
- Krok 5: Unikanie operacji „drill-down” na dużych zbiorach danych
 
- Power Query często automatycznie sugeruje „drill-down” (np. wybór pojedynczej wartości z tabeli).
 - Jeśli wykonujesz operację na dużych zbiorach, staraj się pracować na całych tabelach, zamiast przekształcać pojedyncze rekordy.
 
- Krok 6: Automatyczne odświeżanie zoptymalizowanych zapytań
 
- Po zoptymalizowaniu zapytania, ustaw odświeżanie w Excelu lub Power Query, aby aktualizowało się w odpowiednich interwałach.
 - W Excelu przejdź do Dane → Właściwości zapytania → Odświeżaj dane przy otwieraniu pliku.
 
Zadanie
- Wczytaj duży plik CSV (PQSales_Large.csv).
 - Ogranicz liczbę wczytywanych wierszy i kolumn.
 - Zastosuj Table.Buffer() i sprawdź różnicę w wydajności.
 - Jeśli korzystasz z bazy danych, zoptymalizuj zapytanie SQL.
 - Ustaw automatyczne odświeżanie zoptymalizowanego zapytania.
 - Skorzystaj z ChatGPT do analizy wydajności i dalszej optymalizacji kodu M.
 
Moduł 8: Tworzenie dynamicznych raportów i paneli w Excelu z Power Query
Cel ćwiczenia
W tym module nauczysz się:
- ✔ Jak wykorzystać Power Query do dynamicznego generowania raportów.
 - ✔ Jak łączyć dane z różnych źródeł w jednym raporcie.
 - ✔ Jak tworzyć interaktywne raporty przy użyciu tabel przestawnych.
 - ✔ Jak zautomatyzować odświeżanie raportów w Excelu.
 
Dostarczone dane
Do tego ćwiczenia użyjemy następujących plików:
- 📂 Media:PQ_Sales_Data.xlsx – Dane sprzedażowe.
 - 📂 Media:PQ_Regions.xlsx – Dane o regionach sprzedaży.
 - 📂 Media:PQ_Targets.xlsx – Cele sprzedażowe.
 
Instrukcje
- Krok 1: Importowanie danych i łączenie źródeł*
 
- Otwórz Power Query w Excelu.
 - Zaimportuj pliki **PQ_Sales_Data.xlsx**, **PQ_Regions.xlsx** i **PQ_Targets.xlsx**.
 - Połącz dane ze sobą, używając **klucza wspólnego** – np. kolumny "Region".
 - Sprawdź, czy dane są poprawnie połączone i wyświetlają się we właściwym formacie.
 
- Krok 2: Tworzenie dynamicznego raportu*
 
- Kliknij **Zamknij i Załaduj do...** i wybierz **Tabelę przestawną**.
 - Wstaw tabelę przestawną w nowym arkuszu i upewnij się, że źródłem danych jest Power Query.
 - W polach tabeli przestawnej ustaw:
 
* Wiersze → **Region**. * Kolumny → **Miesiąc**. * Wartości → **Suma Sprzedaży**.
- Sprawdź poprawność wyników i sformatuj tabelę.
 
- Krok 3: Dodanie warunkowego formatowania*
 
- Wybierz kolumnę "Suma Sprzedaży" w tabeli przestawnej.
 - Kliknij **Formatowanie warunkowe → Skalowanie kolorów**.
 - Ustaw gradientowe kolory dla niskiej i wysokiej sprzedaży.
 - Zastosuj regułę "Większe niż" i podświetl wartości powyżej **celu sprzedażowego** (dane z **PQ_Targets.xlsx**).
 
- Krok 4: Automatyzacja odświeżania danych*
 
- Przejdź do **Dane → Właściwości zapytania → Odświeżaj dane przy otwieraniu pliku**.
 - Możesz także ustawić **odświeżanie automatyczne co X minut**.
 - Sprawdź, czy po dodaniu nowych danych do plików źródłowych raport aktualizuje się poprawnie.
 
Zadanie
- Załaduj i połącz dane z **PQ_Sales_Data.xlsx**, **PQ_Regions.xlsx** i **PQ_Targets.xlsx**.
 - Utwórz tabelę przestawną i sformatuj dane dynamicznie.
 - Dodaj warunkowe formatowanie na podstawie celów sprzedażowych.
 - Ustaw automatyczne odświeżanie danych.
 - Skorzystaj z ChatGPT do analizy i optymalizacji zapytań Power Query.