Blog JSystems - uwalniamy wiedzę!

Szukaj

W skróciePower Query czyta dane z plików, stron WWW, API, SharePointa i baz danych tym samym schematem: łącznik, poświadczenia, nawigator. Importujemy plik CSV, pobieramy tabelę kursów z API NBP w formacie JSON, rozwijamy zamówienia online i omawiamy pozostałe najczęstsze źródła.

Ta lekcja jest częścią bezpłatnego kursu Power Query - czternastu lekcji od pierwszego zapytania w Excelu do przepływu danych w Microsoft Fabric i pracy z Copilotem. To lekcja 8 z 14.

Spis lekcji bezpłatnego kursu Power Query
Poprzednia lekcja: Lekcja 7: Język M, parametry i własne funkcje
Następna lekcja: Lekcja 9: Błędy w zapytaniach i profilowanie danych

Źródła danych: CSV, JSON, API, SharePoint i bazy danych

Power Query w Excelu ma kilkadziesiąt łączników, a Power BI Desktop jeszcze więcej. Mechanika jest wszędzie ta sama: wybierasz łącznik, podajesz lokalizację, poświadczenia, potem w nawigatorze wskazujesz tabelę. Zobaczmy kilka źródeł, które pojawiają się najczęściej.

Menu Nowe źródło w Power Query z podmenu Inne źródła: Internet, listy SharePoint, OData, HDFS, Active Directory, Exchange, ODBC, OLE DB, puste zapytanie
Nowe źródło > Inne źródła. ODBC i OLE DB pozwalają połączyć się z bazami, dla których nie ma osobnego łącznika, a Puste zapytanie to punkt startowy dla kodu M pisanego ręcznie.

Pliki CSV i tekstowe

Pojedynczy plik importujesz przez Pobierz dane > Z pliku > Z pliku tekstowego/CSV. Okno importu, które widziałeś w opisie danych do ćwiczeń, ma te same trzy ustawienia co łączenie plików: Pochodzenie pliku (kodowanie), Ogranicznik i Wykrywanie typu danych. Pliki o stałej szerokości kolumn (bez ogranicznika) obsłużysz, wybierając w polu ogranicznika Stała szerokość i podając pozycje podziału.

API w formacie JSON: kursy walut NBP

Interfejsy API zwracają zwykle dane w formacie JSON. Pokażemy to na publicznym API Narodowego Banku Polskiego, które nie wymaga klucza.

1. Nowe źródło > Inne źródła > Internet (w Excelu: Pobierz dane > Z innych źródeł > Z sieci Web). Wklej adres:

https://api.nbp.pl/api/exchangerates/tables/A?format=json
Okno Z sieci Web w Power Query z adresem URL API kursów walut NBP w formacie JSON
Okno Z sieci Web w trybie podstawowym. Tryb Zaawansowane pozwala składać adres z części i dodawać nagłówki żądania, na przykład klucz API.

2. Przy pierwszym połączeniu z adresem Power Query zapyta o sposób uwierzytelnienia. API NBP jest publiczne, więc zostaw Anonimowy. Lista po prawej określa, czy ustawienie dotyczy całej domeny, czy tylko tego adresu.

Okno Dostęp do zawartości sieci Web w Power Query: dostęp anonimowy, Windows, podstawowy, interfejs API sieci Web i konto organizacyjne
Pięć sposobów uwierzytelnienia źródła internetowego. Interfejs API sieci Web służy do kluczy API, Konto organizacyjne do usług Microsoft 365.

3. Power Query rozpozna JSON i pokaże listę z jednym rekordem. Kliknij Record, żeby wejść do środka. Rekord ma pola table, no (numer tabeli kursów), effectiveDate i rates, czyli listę kursów.

Rekord JSON z API NBP w Power Query z polami table, no, effectiveDate i rates
Rekord z odpowiedzi API. Kliknij List w polu rates, żeby przejść do listy kursów.

4. Lista kursów to 32 rekordy. Na karcie Przekształć (w grupie Narzędzia do obsługi list) kliknij Do tabeli i zatwierdź okno bez zmian.

Okno Do tabeli w Power Query: utwórz tabelę na podstawie listy wartości, ogranicznik Brak
Do tabeli zamienia listę w jednokolumnową tabelę, w której każdy wiersz zawiera jeden rekord.

5. Kliknij ikonę rozwijania w nagłówku kolumny, zostaw zaznaczone pola currency, code i mid, odznacz prefiks i kliknij OK.

Rozwijanie kolumny z rekordami w Power Query: pola currency, code i mid oraz informacja Lista może być niekompletna
Rozwijanie rekordów. Napis Lista może być niekompletna oznacza, że Power Query zbadał tylko część wierszy, a Załaduj więcej przejrzy wszystkie w poszukiwaniu dodatkowych pól. Pole Użyj oryginalnej nazwy kolumny jako prefiksu jest na zrzucie jeszcze zaznaczone: odznacz je przed kliknięciem OK.
Tabela kursów walut NBP w Power Query: nazwa waluty, kod i średni kurs dla 32 walut
Gotowa tabela 32 kursów. Zapytanie nazwaliśmy Kursy_NBP, przy każdym odświeżeniu pobierze najnowszą tabelę kursów.

Jeśli raport z takim zapytaniem trafi do usługi Power BI, warto od razu zapisać adres w częściach. Usługa Power BI potrafi odświeżać tylko źródła, których adres bazowy jest stały, a zmienne fragmenty (ścieżkę i parametry) przekazujesz w opcjach RelativePath i Query:

= Json.Document(Web.Contents("https://api.nbp.pl/api/",
    [RelativePath = "exchangerates/tables/A", Query = [format = "json"]]))

Wiele API zwraca dane stronami, na przykład po sto rekordów. Wtedy pobierasz kolejne strony funkcją List.Generate, dopóki strona nie przyjdzie pusta. Poniższy wzorzec działa dla typowego API z parametrem page i listą rekordów w polu items (adres jest przykładowy, nazwy parametrów sprawdź w dokumentacji swojego API):

let
    Strona = (nr as number) => Json.Document(Web.Contents("https://api.przyklad.pl/",
        [RelativePath = "zamowienia", Query = [page = Text.From(nr)]])),
    Strony = List.Generate(
        () => [nr = 1, dane = Strona(1)],
        each List.Count([dane][items]) > 0,
        each [nr = [nr] + 1, dane = Strona([nr] + 1)],
        each [dane][items]),
    Wszystko = List.Combine(Strony)
in
    Table.FromRecords(Wszystko)

Ten sam schemat (lista, rekord, do tabeli, rozwiń) obsłuży każdy plik JSON, także z dysku (Z pliku > Z formatu JSON). W materiałach do kursu jest plik z zamówieniami online, w którym każde zamówienie ma listę pozycji. Taką zagnieżdżoną listę rozwijasz opcją Rozwiń do nowych wierszy, wtedy każde zamówienie zajmie tyle wierszy, ile ma pozycji.

Strony WWW, PDF, SharePoint i bazy danych

  • Z sieci Web na zwykłej stronie HTML pokaże w nawigatorze wszystkie tabele znalezione na stronie oraz tabele sugerowane, które Power Query sam wyodrębnił z układu strony. Zanim zaczniesz regularnie pobierać dane z cudzej strony, sprawdź jej regulamin: część serwisów zabrania automatycznego pobierania treści.
  • Pliki Parquet, czyli kolumnowy format z hurtowni danych i Lakehouse, w Power BI Desktop i w Fabric czyta osobny łącznik Parquet, a usługi online (Exchange, Dynamics 365, Salesforce, źródła OData) mają własne łączniki z logowaniem kontem tej usługi.
  • Z pliku PDF wyciąga tabele z dokumentów PDF, na przykład z cenników czy wyciągów. Każda tabela i każda strona to osobna pozycja w nawigatorze.
  • Z folderu programu SharePoint działa jak łączenie folderu lokalnego, ale dla bibliotek dokumentów SharePointa i OneDrive dla firm. Podajesz adres witryny, nie ścieżkę folderu, a potem filtrujesz pliki po kolumnie Folder Path. Pokazujemy to krok po kroku w lekcji o Fabric, bo tam folder lokalny nie wchodzi w grę.
  • Z bazy danych łączy się z SQL Server, Oracle, PostgreSQL, MySQL i innymi. Przy bazach dochodzi zjawisko, którego pliki nie mają: składanie zapytań. Omawiamy je na przykładzie SQL Server w lekcji o Power BI.
Masz konkretny problem z Power Query? Zajrzyj do listy 88 najczęstszych pytań i problemów związanych z Power Query: komunikaty błędów, typy danych, scalanie i odświeżanie, każdy z rozwiązaniem krok po kroku.
Baner szkolenia Microsoft Excel - Power Query w JSystems z edytorem Power Query na ekranie laptopa

Szkolenie Microsoft Excel - Power Query --> Dwa dni warsztatów z Excela: pobieranie danych z plików, folderów, SharePointa i baz SQL, ich czyszczenie i łączenie w Power Query, praca w języku M, a na koniec model danych i oparta na nim tabela przestawna. Prowadzi Sebastian Stasiak.

To szkolenie może być dofinansowane dla Ciebie z KFS lub BUR.

★★★★★Średnia ocena naszych szkoleń w Google: 5/5

✕Powiększony zrzut ekranu z kursu Power Query

Najczęściej zadawane pytania

Jak zaimportować plik CSV do Power Query z polskimi znakami?
Wybierz Dane, Z pliku tekstowego/CSV i w oknie podglądu ustaw Pochodzenie pliku na 65001: Unicode (UTF-8) oraz właściwy ogranicznik, na przykład średnik. Jeśli polskie znaki wyświetlają się jako krzaczki, zwykle wystarczy zmiana kodowania w tym polu.
Jak pobrać dane z API do Power Query?
Wybierz Dane, Z sieci Web i wklej adres API. Power Query rozpozna odpowiedź JSON i pokaże ją jako listę albo rekord. Dalej konwertujesz listę na tabelę i rozwijasz kolumny z rekordami. Klucz API przekażesz w trybie zaawansowanym jako nagłówek żądania.
Jak rozwinąć zagnieżdżony JSON w Power Query?
Kolumny z rekordami i listami mają w nagłówku ikonę z dwiema strzałkami. Rekord rozwijasz do nowych kolumn, a listę do nowych wierszy. Przy wielu poziomach zagnieżdżenia powtarzasz to krok po kroku, aż wszystkie potrzebne pola staną się zwykłymi kolumnami.
Czy Power Query może pobierać dane z SharePointa i OneDrive?
Tak. Łącznik Folder programu SharePoint czyta pliki z witryny SharePoint i z OneDrive dla firm, który technicznie jest witryną SharePoint. Podajesz adres witryny, logujesz się kontem organizacyjnym i filtrujesz pliki po ścieżce folderu, tak jak przy folderze lokalnym.

Komentarze (0)

Musisz być zalogowany by móc dodać komentarz. Zaloguj się przez Google

Brak komentarzy...