Blog JSystems - uwalniamy wiedzę!

Szukaj
Okno Nawigator w Power BI: plik Nordvella z dziewięcioma zaznaczonymi arkuszami i podglądem tabeli FaktZwroty
Okno Nawigator z dziewięcioma arkuszami Nordvella po lewej (zaznaczone przez zielone znaczniki) i podglądem tabeli FaktZwroty po prawej. Po lewej wybierasz co wczytać, po prawej sprawdzasz, czy nagłówki i wartości wyglądają poprawnie, zanim klikniesz przycisk na dole.

W skrócieŁączenie z danymi to pierwszy krok każdego raportu Power BI: wybierasz źródło, tabele i tryb pracy. W tej lekcji wczytujemy dane Nordvelli z Excela, CSV, SQL Server, PostgreSQL i folderu, pracujemy w Nawigatorze, porównujemy tryb Import z DirectQuery i zarządzamy źródłami oraz poświadczeniami.

Lekcja 3 z 28 bezpłatnego kursu Power BI, od pierwszego raportu do Fabric i Copilota, na jednym zestawie danych sieci Nordvella.

<-- Spis wszystkich lekcji
<-- Lekcja 2: Instalacja Power BI Desktop i interfejs krok po krokuLekcja 4: Power Query: transformacja i czyszczenie danych -->

Raport bez danych to pusty ekran, dlatego zanim narysujesz pierwszy wykres, musisz wpuścić dane do Power BI. W tym rozdziale podłączymy plik z danymi Nordvella S.A., fikcyjnej polskiej sieci sklepów z elektroniką, którą prowadzimy przez cały kurs. To dziewięć tabel, a w centralnej z nich, FaktSprzedaz, leży 108 675 transakcji sprzedaży z lat 2022 do 2026. Nauczysz się nie tylko klikać, ale świadomie decydować: co wczytać, jak, i w jakim trybie.

To jest widok, do którego dojdziesz w kilku pierwszych sekcjach: Power BI przeanalizował plik, rozpoznał w nim arkusze i pokazuje je jak listę tabel do wyboru. Zamiast przewijać surowy Excel, decydujesz jednym kliknięciem, które fragmenty danych trafią do modelu. Przejdziemy do tego widoku krok po kroku, a potem pokażemy, jak podłączyć się do bazy SQL Server i PostgreSQL, kiedy wybrać tryb Import, a kiedy DirectQuery, jak wciągnąć naraz cały folder eksportów CSV i jak później bezpiecznie zarządzać poświadczeniami.

Z tej lekcji dowiesz się:

Pliki do tej lekcji

Gotowy efekt: plik Power BI Desktop w stanie z końca tej lekcji, z dziewięcioma tabelami z arkusza i trzema zapytaniami z wyłączonym ładowaniem (sprzedaz_2025_08, eksporty_sprzedazy, SprzedazSQL). Strony raportu są jeszcze puste, a zrzut trybu DirectQuery pochodzi z osobnego modelu.

Pobierz nordvella_03_polaczenie.pbix

Plik startowy: stan z końca poprzedniej lekcji. Otwórz go, jeśli chcesz wykonywać kroki tej lekcji od razu, bez odtwarzania wcześniejszych. Ma już wczytane dziewięć tabel z arkusza, więc kroki importu pliku Excel tylko przeczytaj albo przećwicz w nowym, pustym raporcie.

Pobierz nordvella_02_start.pbix

Dane źródłowe:
Nordvella_dane.xlsx - dziewięć tabel Nordvelli w arkuszu Excel.
nordvella_eksporty_csv.zip - dwanaście miesięcznych eksportów CSV do importu z folderu, od sprzedaz_2025_01.csv do sprzedaz_2025_12.csv.
sprzedaz_2025_08_przecinki.csv - pojedynczy plik CSV z przecinkami dziesiętnymi.
Nordvella.bak.gz - te same dane jako baza MS SQL Server (odtwarzasz poleceniem RESTORE DATABASE), do ćwiczeń z połączeniem z bazą SQL.
nordvella_postgresql.sql.gz - baza dla PostgreSQL.
Zapytania w pliku efektu czytają arkusz z C:\Kurs_PBI, eksporty z C:\Nordvella\eksporty_sprzedazy, a zapytanie SQL łączy się z serwerem localhost i bazą Nordvella. Jeśli trzymasz pliki gdzie indziej, wskaż je w Przekształć dane, Ustawienia źródła danych, Zmień źródło.

Pobierz Nordvella_dane.xlsxPobierz nordvella_eksporty_csv.zipPobierz sprzedaz_2025_08_przecinki.csvPobierz Nordvella.bak.gzPobierz nordvella_postgresql.sql.gz

Okno Pobierz dane, czyli brama do wszystkich źródeł

Co chcemy osiągnąć. Dane Nordvelli przychodzą w różnej postaci: w skoroszycie Excela, jako eksport CSV z systemu sprzedaży, a te same tabele są też w bazie danych. Chcemy znać jedno okno, od którego zaczyna się każde z tych połączeń.

Każde połączenie zaczyna się od jednego okna: Pobierz dane. To centralny punkt, w którym Power BI trzyma listę wszystkiego, do czego potrafi się podłączyć, od zwykłego pliku Excel po hurtownie w chmurze. Otworzysz je na trzy sposoby, a każdy prowadzi w to samo miejsce:

Okno Pobierz dane w Power BI z listą zawężoną do łączników PostgreSQL
Wyszukiwarka zawęża jednocześnie listę łączników i listę kategorii: po wpisaniu "postgre" zostają tylko Wszystkie, Baza danych i Azure, a po prawej dwie pozycje - Baza danych programu PostgreSQL do serwera własnego i Azure Database for PostgreSQL do usługi w chmurze. To rozróżnienie wraca przy wielu silnikach: ten sam producent, dwa różne łączniki.
Okno Pobierz dane w Power BI z kategoriami źródeł i listą dostępnych łączników
Pełne okno Pobierz dane. Po lewej kategorie: Wszystkie, Plik, Baza danych, Microsoft Fabric, Power Platform, Azure, Usługi online i Inne. Po prawej lista łączników w wybranej kategorii. Zamiast przewijać setki pozycji, szybciej jest wpisać fragment nazwy w pole wyszukiwania nad kategoriami.
Menu przycisku Pobierz dane w Power BI Desktop z listą typowych źródeł danych
Strzałka pod przyciskiem Pobierz dane rozwija skrót do najczęściej używanych źródeł: skoroszyt Excela, modele semantyczne Power BI, przepływy danych, Dataverse, SQL Server, Analysis Services, plik tekstowy lub CSV, Internet, OData i puste zapytanie. Na dole pozycja Więcej otwiera pełną listę kilkuset łączników - z niej korzystasz zawsze, gdy źródła nie ma na tej krótkiej liście.
  • na wstążce: Narzędzia główne, a potem przycisk Pobierz dane (sam przycisk otwiera pełne okno źródeł, a mała strzałka pod nim rozwija krótką listę typowych źródeł z pozycją Więcej na dole),
  • na ekranie startowym: kafelek Skoroszyt programu Excel lub kafelek Pobieranie danych z innych źródeł,
  • na pustym obszarze raportu: kafelek Zaimportuj dane z pliku programu Excel albo odnośnik Pobierz dane z innego źródła na środku płótna.

Gdy okno się otworzy, po lewej stronie zobaczysz kategorie, które porządkują źródła: Wszystkie, Plik, Baza danych, Microsoft Fabric, Power Platform, Azure, Usługi online oraz Inne. Nie musisz ich przewijać: u góry masz pole wyszukiwania. Wpisz w nie kilka liter nazwy źródła, na przykład "excel", "postgre" albo "folder", a lista sama się zawęzi. To najszybsza droga, bo źródeł są dosłownie setki.

Infografika źródeł danych Power BI w czterech grupach: pliki, bazy danych, usługi i chmura, Power Platform i Fabric
Mapa najczęściej używanych źródeł Power BI pogrupowana w cztery rodziny: pliki (Excel, CSV i tekst, JSON, XML, PDF, folder), bazy danych (SQL Server, PostgreSQL, Oracle, MySQL), usługi i chmura (SharePoint, Dataverse, OData, REST API przez Sieć Web) oraz Power Platform i Fabric (przepływy danych, OneLake, Direct Lake). Czytaj ją jak spis kategorii z okna Pobierz dane: najpierw ustalasz, w której rodzinie leżą Twoje dane, potem szukasz konkretnego konektora.

W scenariuszu Nordvella startujemy od najprostszego przypadku: dane siedzą w jednym pliku Excel, więc wybieramy kategorię Plik, a w niej Skoroszyt programu Excel. Dokładnie ten sam plik możesz pobrać poniżej i wykonać każdy krok razem z nami na własnym komputerze.

Plik do pobrania: arkusz Nordvelli do odtworzenia całego demo, Nordvella_dane.xlsx. Zapisz go u siebie, na przykład na pulpicie, i wykonuj kolejne kroki na tych samych dziewięciu tabelach, na których pracujemy w tekście.

Import pliku Excel i podgląd w Nawigatorze

Co chcemy osiągnąć. Chcemy wczytać do Power BI arkusz Nordvella_dane.xlsx ze wszystkimi dziewięcioma tabelami i przy okazji poznać Nawigator, przez który przechodzi import z każdego źródła.

Teraz właściwe podłączenie. Prześledź je krok po kroku, bo dokładnie tak samo wygląda import z CSV, z bazy i z każdego innego źródła: różni się tylko okno łączenia, reszta jest wspólna.

Nawigator Power BI Desktop z dziewięcioma arkuszami pliku Nordvella_dane.xlsx, kurs Power BI
Nawigator pliku Excel wygląda tak samo jak nawigator bazy: w nawiasie liczba elementów, poniżej lista z polami wyboru. Dopóki niczego nie podświetlisz, prawa strona pozostaje pusta - podgląd pojawia się dopiero po kliknięciu w nazwę arkusza, a nie w jego pole wyboru.
Systemowe okno wyboru pliku z zaznaczonym plikiem Nordvella_dane, kurs Power BI
Wskazanie pliku to zwykłe systemowe okno Windows - dlatego jego napisy idą za językiem systemu, a nie za językiem Power BI. U Ciebie może więc brzmieć „Otwieranie" zamiast „Open". Znaczenie ma tylko jedno: w polu nazwy ma być Nordvella_dane.
Panel Dane w Power BI po imporcie pliku Nordvella z dziewięcioma tabelami i rozwiniętą listą kolumn tabeli sprzedaży
Po wczytaniu dziewięć arkuszy zamienia się w dziewięć tabel w panelu Dane. FaktSprzedaz rozwinięta pokazuje surowe kolumny prosto z pliku: CenaNetto, DataID, Ilosc, KosztWlasny, MarzaNetto, identyfikatory i wartości. Nie ma tu jeszcze ani jednej miary ani folderu - to czysty import, od którego zaczyna się cała reszta kursu.
Okno Nawigator w Power BI z podglądem arkusza sprzedaży z pliku Nordvella
Nawigator pokazuje zawartość pliku, zanim cokolwiek wczytasz. Kliknięcie w nazwę arkusza (bez zaznaczania pola wyboru) wyświetla po prawej podgląd pierwszych wierszy - tu FaktSprzedaz z kolumnami SprzedazID, DataID, ProduktID, SklepID, PracownikID i Ilosc. To moment, w którym sprawdzasz, czy plik w ogóle zawiera to, czego się spodziewasz, i czy nagłówki siedzą w pierwszym wierszu.

Krok 1: wskaż plik

Po wybraniu Skoroszyt programu Excel Power BI otwiera systemowe okno wyboru pliku. Przechodzisz do miejsca, gdzie zapisujesz Nordvella_dane.xlsx, zaznaczasz go i klikasz Otwórz. Przez chwilę na dole okna zobaczysz pasek postępu z komunikatem o łączeniu. Power BI nie wczytuje jeszcze danych, tylko czyta strukturę pliku, żeby wiedzieć, jakie arkusze i tabele w nim są.

Krok 2: przeczytaj Nawigator

Otwiera się Nawigator, dokładnie ten z obrazka na początku rozdziału. Po lewej masz drzewo elementów pliku, po prawej podgląd zaznaczonego. Dla Nordvella zobaczysz dziewięć pozycji, które dzielą się na dwie rodziny (ikona jest przy wszystkich taka sama, więc rodzinę poznasz po przedrostku nazwy: Dim albo Fakt):

  • pięć tabel wymiarów, czyli słowniki opisujące świat sprzedaży: DimKalendarz (1826 dni), DimProdukty (30 produktów), DimKategorie (4 kategorie), DimSklepy (15 sklepów) i DimPracownicy (200 pracowników),
  • cztery tabele faktów, czyli zdarzenia z liczbami: FaktSprzedaz (108 675 transakcji), FaktBudzet, FaktSatysfakcja i FaktZwroty.

Tak wygląda komplet dziewięciu tabel, które zaraz zaznaczysz w Nawigatorze, z liczbą wierszy w każdej z nich:

Tabela w Nawigatorze Rodzaj Liczba wierszy
DimKalendarzwymiar1 826
DimProduktywymiar30
DimKategoriewymiar4
DimSklepywymiar15
DimPracownicywymiar200
FaktSprzedazfakt108 675
FaktBudzetfakt3 600
FaktSatysfakcjafakt7 537
FaktZwrotyfakt2 714

Kliknij dowolny arkusz, na przykład DimProdukty, a po prawej pojawi się podgląd pierwszych wierszy: nazwa produktu, kategoria (Komputery, Telefony, AGD/RTV, Akcesoria), marka, cena netto. To moment, w którym warto się zatrzymać, bo podgląd służy do weryfikacji. Sprawdzasz, czy pierwszy wiersz to nagłówki kolumn, a nie dane, czy nie ma pustych wierszy na górze i czy liczby nie wyglądają jak tekst. Jeśli coś jest nie tak, poprawisz to w następnym kroku, w Power Query.

Wskazówka: arkusz i tabela to nie to samo. Nazwana tabela (w Excelu utworzona przez Wstaw, Tabela) pojawia się w Nawigatorze jako osobna pozycja, obok arkusza, na którym leży. W pliku Nordvelli nie ma nazwanych tabel, więc widzisz wyłącznie dziewięć arkuszy. Jeśli w Twoim skoroszycie dane są sformatowane jako tabela (w Excelu przez Wstaw, Tabela), wybierz właśnie ją, bo jest odporniejsza na przesunięcia i puste kolumny niż cały arkusz.

Krok 3: zaznacz wszystkie dziewięć tabel

Na górze drzewa masz pole wyszukiwania, a pole wyboru jest przy każdej pozycji od razu - nie trzeba niczego włączać. Starsze wersje Power BI miały tu przełącznik Wybierz wiele elementów. W wersji, na której pracujemy, już go nie ma. Zaznacz wszystkie dziewięć tabel Nordvelli. Licznika zaznaczonych pozycji Power BI tu nie pokazuje, więc policz je wzrokiem: ptaszek ma być przy każdej z dziewięciu tabel. Zaznaczenie kompletu jest tu celowe: w rozdziale o modelu danych i relacjach zbudujemy z tych tabel model gwiazdy, w którym FaktSprzedaz łączy się z czterema wymiarami, więc potrzebujemy ich wszystkich od razu.

Krok 4: wybierz Załaduj albo Przekształć dane

Na dole Nawigatora masz dwa przyciski i to jest najważniejsza decyzja w tym oknie:

  • Załaduj: dane trafiają do modelu w takiej postaci, w jakiej są w pliku. Wybierz, gdy masz pewność, że są czyste,
  • Przekształć dane: otwiera się edytor Power Query, gdzie oczyścisz i przekształcisz dane przed załadowaniem do modelu.

W praktyce niemal zawsze klikamy Przekształć dane, nawet dla pliku, który wygląda porządnie. Powód jest prosty: to jedyny moment, żeby raz na zawsze ustawić poprawne typy kolumn (data jako data, cena jako liczba dziesiętna), usunąć techniczne kolumny i nazwać tabele po ludzku. Robisz to raz, a przy każdym późniejszym odświeżeniu Power BI powtarza te kroki automatycznie. Power Query poznasz dogłębnie w kolejnych rozdziałach, tutaj wystarczy, że wiesz, dokąd prowadzi ten przycisk. Jeśli klikniesz Załaduj, po chwili dziewięć tabel Nordvelli pojawi się w panelu Dane po prawej i masz wszystko, czego potrzebujesz do budowania modelu.

Pliki do pobrania: komplet dwunastu miesięcznych eksportów Nordvelli, nordvella_eksporty_csv.zip (475 KB). Rozpakuj go do osobnego katalogu - najpierw zaimportujesz z niego pojedynczy plik, a w sekcji o imporcie z folderu wczytasz wszystkie dwanaście jedną operacją. Osobno leży też sprzedaz_2025_08_przecinki.csv, czyli ten sam miesiąc zapisany z przecinkiem zamiast średnika - przyda się, żeby zobaczyć, co robi źle dobrany ogranicznik.

Import plików CSV i innych plików tekstowych

Co chcemy osiągnąć. Chcemy wczytać miesięczny eksport transakcji z systemu sprzedaży Nordvelli w pliku CSV tak, żeby kwoty, daty i polskie znaki przeszły bez przekłamań.

Systemy sprzedażowe rzadko dają eleganckie skoroszyty. Zwykle dostajesz surowy eksport: plik CSV (wartości rozdzielone przecinkami lub średnikami), rzadziej JSON albo XML. Wyobraź sobie, że dział IT Nordvella zamiast pliku Excel wysyła Ci miesięczny eksport transakcji o nazwie sprzedaz_2025_08.csv. Podłączenie wygląda tak: Pobierz dane, kategoria Plik, a w niej Plik tekstowy lub CSV.

Edytor Power Query z listą zastosowanych kroków i kodem M kroku Źródło przy imporcie pliku CSV Nordvelli
Edytor Power Query z zaznaczonym pierwszym krokiem. Po prawej lista Zastosowane kroki: Źródło, Nagłówki o podwyższonym poziomie, Zmieniono typ - Power BI dopisał je sam przy imporcie. Kliknięcie kroku cofa podgląd do stanu sprzed kolejnych operacji, dlatego w siatce widać jeszcze Column1, Column2 i nagłówki siedzące w pierwszym wierszu danych. W pasku formuły jest kod języka M z wszystkim, co Power BI wywnioskował: ogranicznik średnik, dziesięć kolumn, kodowanie 65001. Ten pasek to najszybszy sposób, żeby sprawdzić, co naprawdę zrobił kreator.
Okno podglądu CSV w Power BI z błędnie rozpoznanym ogranicznikiem: kwoty sprzedaży rozcięte na dwie kolumny
Tak wygląda import, który wygląda dobrze, a jest zepsuty. Plik pochodzi z polskiego eksportu, w którym przecinek pełni dwie role naraz: rozdziela kolumny i oddziela część dziesiętną. Power BI wykrył Przecinek i rozciął każdą kwotę na pół - 3326,40 zł stało się liczbą 3326 w jednej kolumnie i 40 w następnej, a cała tabela przesunęła się o jedno pole. Nic nie miga na czerwono, nie ma komunikatu o błędzie. Właśnie dlatego warto spojrzeć na podgląd, zanim klikniesz Załaduj.
Okno podglądu importu pliku CSV w Power BI z ogranicznikiem średnik i danymi sprzedaży Nordvelli
Okno podglądu pliku tekstowego. Power BI sam rozpoznał trzy rzeczy: kodowanie 65001 Unicode (UTF-8), średnik jako ogranicznik i wykrywanie typów na podstawie pierwszych 200 wierszy. Warto na nie spojrzeć, zanim klikniesz Załaduj - w polskich eksportach ogranicznikiem bywa średnik, a nie przecinek, bo przecinek jest zajęty przez część dziesiętną. W podglądzie widać kolumny sklepu, produktu, kategorii i kwot, czyli dokładnie to, czego się spodziewamy po eksporcie sprzedaży za jeden miesiąc.

Po wskazaniu pliku pojawia się okno podglądu z trzema listami rozwijanymi u góry, które warto sprawdzić, zanim klikniesz dalej:

  • Pochodzenie pliku: kodowanie znaków. Dla polskich danych z ogonkami (ł, ą, ś) wybierz 65001: Unicode (UTF-8), inaczej "Łódź" zamieni się w krzaki,
  • Ogranicznik: znak rozdzielający kolumny. Power BI zgaduje go automatycznie, ale w polskich eksportach częściej jest to średnik niż przecinek, więc sprawdź, czy kolumny w podglądzie są dobrze rozbite,
  • Wykrywanie typu danych: zostaw na podstawie pierwszych 200 wierszy, chyba że dane zmieniają charakter dalej w pliku.

Jeśli w podglądzie zamiast kolumn widzisz jedną kolumnę z całym wierszem w środku, to znaczy, że ogranicznik jest źle dobrany. Zmień go z listy i podgląd od razu się przeorganizuje. Poniżej definicja tego samego kroku, taka jak w pliku efektu zapisana w języku M, który Power BI generuje pod spodem, żeby pokazać, co dzieje się za kliknięciami:

let
    Źródło = Csv.Document(
        File.Contents("C:\Nordvella\eksporty_sprzedazy\sprzedaz_2025_08.csv"),
        [Delimiter=";", Columns=10, Encoding=65001, QuoteStyle=QuoteStyle.None]
    ),
    #"Nagłówki o podwyższonym poziomie" = Table.PromoteHeaders(Źródło, [PromoteAllScalars=true]),
    #"Zmieniono typ" = Table.TransformColumnTypes(
        #"Nagłówki o podwyższonym poziomie",
        {
            {"SprzedazID", Int64.Type},
            {"Data", type date},
            {"Sklep", type text},
            {"Produkt", type text},
            {"Kategoria", type text},
            {"Ilosc", Int64.Type},
            {"CenaNetto", type number},
            {"WartoscNetto", type number},
            {"KanalSprzedazy", type text},
            {"FormaPlatnosci", type text}
        },
        "en-US"
    )
in
    #"Zmieniono typ"

Czytaj to od góry: Csv.Document wczytuje surowy plik ze średnikiem jako ogranicznikiem i kodowaniem UTF-8, Table.PromoteHeaders awansuje pierwszy wiersz na nazwy kolumn, a Table.TransformColumnTypes ustawia poprawne typy, dzięki czemu WartoscNetto będzie liczbą, którą da się zsumować, a nie tekstem. Każde z tych trzech słów odpowiada jednemu wierszowi na liście Zastosowane kroki w Power Query. Ostatni argument, "en-US", mówi, że liczby w pliku mają kropkę dziesiętną: bez niego przy polskich ustawieniach regionalnych kwota 3326.40 z pierwszego wiersza pliku zostałaby odczytana błędnie. W pliku efektu to zapytanie ma wyłączone ładowanie (prawy przycisk na zapytaniu, odznaczone Włącz ładowanie), żeby nie dokładało do modelu tabeli, z której dalej nie korzystamy.

Pliki do pobrania: żeby powtórzyć tę część u siebie, potrzebujesz bazy Nordvelli. Dla MS SQL Server pobierz Nordvella.bak.gz (4,6 MB spakowane) i odtwórz kopię poleceniem RESTORE DATABASE. Dla PostgreSQL pobierz nordvella_postgresql.sql.gz (2,9 MB) i wczytaj go przez psql. Obie bazy zawierają te same dziewięć tabel co arkusz, więc wyniki zapytań zgodzą się co do grosza z tym, co widzisz na zrzutach.

Połączenie z SQL Server i PostgreSQL

Co chcemy osiągnąć. Chcemy pobrać te same dziewięć tabel Nordvelli prosto z bazy danych, którą zarządza dział IT, zamiast z pliku przesyłanego mailem. Baza jest aktualizowana na bieżąco, więc raport po odświeżeniu pokaże najnowsze transakcje.

Prędzej czy później dane przestaną mieszkać w plikach, a zaczną w bazie, którą zarządza dział IT. To dobra wiadomość, bo baza jest jednym źródłem prawdy, aktualizowanym na bieżąco, i nikt nie przesyła Ci pliku mailem. Dla Nordvella te same dziewięć tabel trzymamy też w bazie relacyjnej, żeby pokazać oba warianty.

Nawigator Power BI Desktop z dziewięcioma tabelami bazy Nordvella i podglądem FaktSprzedaz, kurs Power BI
Nawigator pokazuje zawartość bazy zanim cokolwiek wczytasz. W nawiasie przy nazwie bazy masz liczbę tabel - tu dziewięć - a po podświetleniu tabeli od razu widzisz podgląd pierwszych wierszy. To moment, w którym warto sprawdzić, czy trafiłeś na właściwą bazę, zanim zaczniesz ciągnąć sto tysięcy wierszy.
Okno uwierzytelniania SQL Server w Power BI z zakładką bazy danych, loginem i zamaskowanym hasłem
Okno poświadczeń ma trzy zakładki po lewej. Windows to logowanie kontem systemowym, Konto Microsoft dotyczy usług w chmurze, a Baza_danych to klasyczny login i hasło serwera - i tego używamy przy kontenerze z SQL Server. Pod polami jest rzecz, którą łatwo przeoczyć: "Wybierz poziom, na którym chcesz zastosować te ustawienia". Zapisane poświadczenia zostają przypięte do wskazanego poziomu, więc kolejne zapytania do tego serwera już o hasło nie zapytają.
Okno łącznika SQL Server w Power BI z rozwiniętymi opcjami zaawansowanymi i instrukcją SQL
Łącznik SQL Server pyta tylko o dwie rzeczy: adres serwera i nazwę bazy. Reszta kryje się pod "Opcje zaawansowane", gdzie możesz podać własną instrukcję SQL - wtedy Power BI nie zaciąga całych tabel, tylko wynik Twojego zapytania. Zwróć uwagę na tryb łączności tuż nad nim: Importuj kontra DirectQuery wybierasz tutaj, jeszcze przed podaniem hasła. W polu Instrukcja języka SQL widać końcówkę innego wariantu niż przykład w ramce niżej: zapytania, które łączy FaktSprzedaz z DimKalendarz, DimSklepy i DimProdukty i grupuje sprzedaż 2025 roku po miesiącu, mieście i kategorii.

SQL Server

Wybierasz Pobierz dane, kategoria Baza danych, pozycja Baza danych programu SQL Server. Otwiera się małe okno z dwoma polami:

  • Serwer: adres serwera bazy, na przykład nazwa instancji podana przez administratora. W środowisku firmowym dostaniesz go od zespołu IT,
  • Baza danych: nazwa bazy, na przykład Nordvella. To pole jest opcjonalne, ale jak je wypełnisz, Nawigator od razu zawęzi widok do jednej bazy.

Pod polami rozwiniesz sekcję Opcje zaawansowane, gdzie możesz wkleić własne zapytanie SQL zamiast wybierać całe tabele. To przydatne, gdy chcesz od razu ograniczyć dane do jednego roku albo policzyć agregat po stronie serwera. Przykład, który wciąga tylko sprzedaż z 2025 roku z tabel Nordvelli:

SELECT
    s.SprzedazID,
    k.Rok,
    k.MiesiacNazwa,
    p.Kategoria,
    sk.Miasto,
    s.WartoscNetto,
    s.MarzaNetto
FROM FaktSprzedaz AS s
JOIN DimKalendarz AS k ON s.DataID = k.DataID
JOIN DimProdukty AS p ON s.ProduktID = p.ProduktID
JOIN DimSklepy   AS sk ON s.SklepID = sk.SklepID
WHERE k.Rok = 2025
  AND s.CzyZwrot = 0;

Filtr celowo jest ustawiony na rok 2025, a nie na najświeższym 2026. Dane Nordvelli kończą się 31 maja 2026, więc rok 2026 jest niepełny: zapytanie zwróciłoby z niego 11 394 wiersze zamiast 28 785 za cały 2025 (obie liczby są niższe niż liczba wszystkich transakcji z tych lat, 11 669 i 29 545, bo warunek s.CzyZwrot = 0 pomija sprzedaż zakończoną zwrotem), a każde porównanie rok do roku wyszłoby zaniżone. Przy własnych danych trzymaj się tej samej zasady - do przykładów bierz ostatni zamknięty okres.

Po zatwierdzeniu Power BI zapyta o sposób uwierzytelnienia. Do wyboru masz zwykle logowanie kontem Windows (dla środowisk domenowych) albo login i hasło do bazy (uwierzytelnianie bazy danych). Wpisz poświadczenia, które otrzymujesz od administratora, i kliknij Połącz. Poniżej zobaczysz, jak takie zapytanie realnie wykonuje się na serwerze i jaki zwraca wynik.

Konsola sqlcmd z zapytaniem SELECT na tabelach Nordvelli: SprzedazID, Rok, MiesiacNazwa, Kategoria, Miasto, WartoscNetto
To samo zapytanie wykonane w konsoli sqlcmd prosto na serwerze, zanim trafi do Power BI. Zwraca 28 785 wierszy za cały 2025 rok, a na obrazku widać początek wyniku. Warto zrobić ten krok przed wklejeniem zapytania w Opcjach zaawansowanych - błąd składni albo literówkę w nazwie kolumny zdiagnozujesz tutaj w sekundę, a w Nawigatorze Power BI dostaniesz tylko ogólny komunikat o niepowodzeniu. Hasło podajemy zmienną SQLCMDPASSWORD, żeby nie zostało w historii powłoki.

PostgreSQL

PostgreSQL działa tak samo, tylko wybierasz go z kategorii Baza danych jako Baza danych programu PostgreSQL. Jest jedna różnica techniczna: PostgreSQL wymaga zainstalowanego dostawcy danych Npgsql. Jeśli go nie masz, Power BI pokaże komunikat z odnośnikiem do pobrania. Instalujesz go raz, potem konektor działa jak każdy inny. Po podaniu serwera i nazwy bazy Power BI zapyta o login i hasło, a poniżej rozwiniesz Opcje zaawansowane z tym samym polem na zapytanie SQL.

Wskazówka: nie wklejaj do zapytania nazw serwera ani haseł. Poświadczenia Power BI trzyma osobno, w profilu użytkownika, i podajesz je dopiero w oknie uwierzytelnienia. Dzięki temu, gdy wyślesz komuś plik raportu, nie wyślesz razem z nim danych logowania do bazy.

Import kontra DirectQuery, czyli okno wyboru trybu

Co chcemy osiągnąć. Przy łączeniu z bazą Nordvelli trzeba zdecydować, czy raport ma pracować na kopii danych, czy pytać bazę przy każdym kliknięciu. Chcemy wybrać tryb świadomie, bo od niego zależą szybkość raportu i aktualność liczb, a zmiana po fakcie wymaga przebudowy raportu.

O tryb łączności danych Power BI pyta w tym samym oknie, w którym wpisujesz serwer i bazę, jeszcze przed oknem poświadczeń. To decyzja, którą trudno zmienić później bez przebudowy raportu, więc warto ją rozumieć, a nie klikać w ciemno. Do wyboru są dwie ścieżki.

Okno połączenia z SQL Server w Power BI Desktop z wyborem trybu Importuj albo DirectQuery, kurs Power BI
Wybór między Importuj a DirectQuery robisz od razu, w oknie połączenia - to nie jest pytanie, które Power BI zada Ci później. Import wciąga dane do pliku i daje pełną szybkość oraz cały język DAX. DirectQuery zostawia je w bazie i odpytuje ją przy każdym kliknięciu. W tym kursie pracujemy na imporcie.
Porównanie trybów Power BI: w Imporcie kliknięcie wraca z pamięci VertiPaq, w DirectQuery każde idzie przez sieć do bazy
Dwa tryby pracy z bazą. W trybie Import (u góry) dane są raz kopiowane do pliku raportu i skompresowane w pamięci silnika VertiPaq, więc każde kliknięcie obraca się w krótkiej pętli w pliku. W trybie DirectQuery (u dołu) dane zostają w bazie, a każde kliknięcie wysyła zapytanie przez sieć do serwera i czeka na wynik.

Import pobiera kopię danych i wciska ją do pamięci silnika VertiPaq (silnik kolumnowy, który mocno kompresuje dane w pliku raportu). Raport działa wtedy bardzo szybko, bo wszystkie obliczenia dzieją się lokalnie, a nie w bazie. Cena: dane są aktualne na moment ostatniego odświeżenia, nie na żywo, a rozmiar modelu ogranicza pamięć Twojej maszyny i limity usługi.

DirectQuery niczego nie kopiuje. Każde kliknięcie w raporcie, każdy filtr i każdy wykres wysyła w tle zapytanie SQL do bazy i czeka na odpowiedź. Dane są zawsze aktualne, a rozmiar źródła nie obciąża pliku, bo dane w nim nie leżą. Cena: raport reaguje wolniej, obciążasz bazę produkcyjną, a część funkcji DAX jest niedostępna albo działa inaczej.

Poniżej krótka ściąga decyzyjna dopasowana do naszego scenariusza:

Kryterium Import DirectQuery
Szybkość raportuBardzo wysoka (lokalnie)Zależy od bazy i sieci
Świeżość danychNa moment odświeżeniaNa żywo
Pełnia funkcji DAXPełnaOgraniczona
Obciążenie bazyTylko przy odświeżaniuPrzy każdej interakcji
FaktSprzedaz (108 675 wierszy)ZalecaneZbędne, dane wolno rosną

Dla Nordvella wybieramy Import. Sprzedaż z lat 2022 do 2026 to dane historyczne, które zmieniają się raz dziennie, a nie co sekundę, więc świeżość na żywo nic nam nie daje, a szybkość działania i pełnia funkcji DAX są bezcenne. DirectQuery zostaw na sytuacje, w których naprawdę potrzebujesz stanu z ostatniej minuty, na przykład podglądu magazynu w czasie rzeczywistym, albo gdy dane są tak wielkie, że nie zmieszczą się w pamięci.

Power BI Desktop w trybie DirectQuery: wykres sprzedaży Nordvelli wg miast i pasek stanu Tryb przechowywania DirectQuery
Tak wygląda ten sam model wczytany w trybie DirectQuery. Wykres jest zwyczajny, dane też - Warszawa ponad 220 mln zł, Białystok około 12 mln - ale w prawym dolnym rogu okna doszedł napis Tryb przechowywania: DirectQuery (kliknij, aby zmienić). To jedyne miejsce w interfejsie, w którym widać, że dane nie leżą w pliku. Każdy słupek na tym wykresie to zapytanie SQL wysłane do serwera w momencie rysowania, a w trybie Import ten sam wykres policzyłby się z pamięci. Napis jest klikalny - stąd przechodzi się do zmiany trybu na Import, ale operacja jest jednokierunkowa i nie da się jej cofnąć.

Plik do pobrania: jeśli chcesz porównać oba tryby na tych samych danych, odtwórz bazę z pliku Nordvella.bak.gz i połącz się z nią dwa razy, raz w trybie Importuj, raz w trybie DirectQuery. Zbuduj w obu plikach ten sam wykres sumy WartoscNetto według miasta i porównaj, jak szybko reaguje na kliknięcia. Plik Excel do tego porównania się nie nadaje, bo łącznik Excela działa tylko w trybie Import.

Import z folderu, czyli wiele plików jedną operacją

Co chcemy osiągnąć. Chcemy połączyć miesięczne eksporty sprzedaży Nordvelli z jednego folderu w jedną tabelę jedną operacją, bez importowania każdego pliku osobno.

Wróćmy do miesięcznych eksportów. Załóżmy, że dział sprzedaży Nordvelli zamiast jednego pliku wrzuca do folderu po jednym CSV miesięcznie: sprzedaz_2025_01.csv, sprzedaz_2025_02.csv i tak dalej. Nie chcesz importować dwunastu plików ręcznie, a potem powtarzać tego co miesiąc. Rozwiązaniem jest źródło Folder.

Okno Połącz pliki w edytorze Power Query z wykrytym kodowaniem UTF-8 i separatorem średnik, kurs Power BI
Zanim Power BI sklei dwanaście plików w jedną tabelę, pyta o trzy rzeczy: który plik potraktować jako wzorzec, w jakim kodowaniu je czytać i czym są rozdzielone kolumny. Tutaj wykrył UTF-8 i średnik sam, ale warto to sprawdzić okiem: złe kodowanie zamieni polskie znaki w krzaki w całym zbiorze, a zły ogranicznik wrzuci cały wiersz do jednej kolumny.
Podgląd folderu z dwunastoma plikami CSV w Power BI Desktop przed połączeniem, kurs Power BI
Po wskazaniu folderu Power BI nie pokazuje jeszcze danych ze środka plików, tylko ich LISTĘ: nazwa, rozszerzenie, daty i kolumna Content z samą zawartością binarną. To ważne rozróżnienie - dopiero następny krok każe mu otworzyć każdy plik i skleić wiersze w jedną tabelę. Zwróć uwagę, że nazwy kolumn są angielskie, bo pochodzą od łącznika, nie z interfejsu.
Folder z dwunastoma miesięcznymi plikami CSV sprzedaży Nordvelli za 2025 rok, kurs Power BI
Dwanaście miesięcznych eksportów sprzedaży Nordvelli za 2025 rok, jeden plik na miesiąc - typowy układ, jaki dostaje się z systemu sprzedażowego. Ręczne łączenie ich w jeden arkusz to ręczna, powtarzalna praca, którą trzeba robić od nowa po każdym kolejnym miesiącu. Power BI potrafi wskazać cały folder zamiast pojedynczego pliku.

Wybierasz Pobierz dane, kategoria Plik, pozycja Folder. Wskazujesz katalog z eksportami. Power BI pokazuje listę wszystkich plików w folderze jak tabelę, z kolumnami Content (zawartość binarna pliku), Name, Extension, Date accessed, Date modified, Date created, Attributes i Folder Path. Teraz klikasz Połącz i z listy pod tym przyciskiem wybierasz Połącz i przekształć dane. Power BI otwiera okno przykładowego pliku, na jego podstawie tworzy funkcję, którą stosuje do każdego pliku w folderze, i skleja wszystkie w jedną tabelę. Ta operacja nazywa się Połącz (Combine).

Najpiękniejsze jest to, co dzieje się później: gdy w przyszłym miesiącu ktoś wrzuci do folderu sprzedaz_2026_01.csv, nie ruszasz raportu. Klikasz tylko Odśwież, a Power BI sam wykryje nowy plik i doklei jego wiersze. Warunek jest jeden: wszystkie pliki muszą mieć tę samą strukturę kolumn. Oto szkielet zapytania M, które generuje folder:

let
    Zrodlo = Folder.Files("C:\Nordvella\eksporty_sprzedazy"),
    TylkoCsv = Table.SelectRows(
        Zrodlo,
        each [Extension] = ".csv"
    ),
    Polaczone = Table.Combine(
        Table.TransformColumns(
            TylkoCsv,
            {"Content", each Table.PromoteHeaders(
            Csv.Document(_, [Delimiter=";", Encoding=65001]),
            [PromoteAllScalars=true])}
        )[Content]
    ),
    #"Zmieniono typ" = Table.TransformColumnTypes(
        Polaczone,
        {
            {"SprzedazID", Int64.Type},
            {"Data", type date},
            {"Sklep", type text},
            {"Produkt", type text},
            {"Kategoria", type text},
            {"Ilosc", Int64.Type},
            {"CenaNetto", type number},
            {"WartoscNetto", type number},
            {"KanalSprzedazy", type text},
            {"FormaPlatnosci", type text}
        },
        "en-US"
    )
in
    #"Zmieniono typ"

Czytaj to tak: Folder.Files zwraca listę plików z katalogu, Table.SelectRows zostawia tylko pliki z rozszerzeniem CSV (żeby przypadkowy plik Excel czy tekstowy nie popsuł łączenia), a Table.Combine skleja zawartość wszystkich plików w jedną tabelę. Nagłówki podnosimy w każdym pliku osobno, zanim go doklejamy: gdyby zrobić to dopiero po sklejeniu, wiersz nagłówków z jedenastu pozostałych plików trafiłby do danych jako zwykłe wiersze. Ostatni krok, Zmieniono typ, ustawia typy kolumn tak samo jak przy pojedynczym pliku CSV. W pliku efektu to zapytanie także ma wyłączone ładowanie. Efekt na danych Nordvelli wygląda tak jak w poniższej macierzy, gdzie widać, że dwanaście osobnych plików zeszło się w jeden zbiór z liczbą wierszy miesiąc po miesiącu:

Plik źródłowy Miesiąc Liczba wierszy
sprzedaz_2025_01.csvStyczeń 20252 406
sprzedaz_2025_02.csvLuty 20251 786
sprzedaz_2025_03.csvMarzec 20252 099
(dalsze miesiące)......
Razem po PołączCały 202529 545 (1 tabela)

Wskazówka: zawsze filtruj po rozszerzeniu i, jeśli trzeba, po fragmencie nazwy pliku, zanim sklejasz zawartość. Jeden plik o innej liczbie kolumn wrzucony do folderu przez pomyłkę potrafi rozjechać całe łączenie i pojawią się kolumny w stylu Column1, Column2. Filtr Extension = ".csv" plus warunek na nazwę pliku chronią Cię przed takim wypadkiem.

Inne źródła, które warto znać

Co chcemy osiągnąć. Dane w firmie takiej jak Nordvella nie zawsze leżą w Excelu, w CSV albo w bazie SQL Server: bywają w SharePoint, w bazie Oracle, na stronie internetowej albo w chmurze Google. Chcemy wiedzieć, gdzie szukać tych złączy w oknie Pobierz dane i o czym pamiętać przy każdym z nich.

Excel, CSV, baza i folder pokryją większość Twoich potrzeb, ale okno Pobierz dane kryje jeszcze kilka konektorów, na które prędzej czy później natrafisz. Poniżej krótka mapa: gdzie ich szukać i o czym pamiętać.

Okno Pobierz dane w Power BI Desktop z kategorią Usługi online i listą łączników, kurs Power BI
Usługi online to osobna kategoria łączników: zamiast pliku albo serwera podajesz konto i zgodę, a Power BI ciągnie dane przez API dostawcy. Część pozycji ma dopisek „wersja beta" - działają, ale Microsoft zastrzega, że mogą się jeszcze zmienić, więc na produkcję wybieraj je świadomie.
Źródło Gdzie w oknie Pobierz dane O czym pamiętać
JSON / XMLPlik, JSON lub XMLStruktura zagnieżdżona, rozwijasz ją w Power Query
SharePoint / OneDrivePlik, Folder programu SharePoint (listy: Usługi online, Lista usługi SharePoint Online)Wczytuje pliki z folderu w chmurze, jak import z folderu
Oracle DatabaseBaza danych, Oracle DatabaseWymaga klienta dostępu Oracle na komputerze
Strona internetowaInne, Sieć WebPobiera tabele HTML ze strony po podaniu adresu
Google BigQueryBaza danych, Google BigQueryWymaga konta Google Cloud i logowania

Zwróć uwagę na wspólny wzorzec: niezależnie od źródła, po połączeniu zawsze lądujesz w tym samym Nawigatorze albo w Power Query, i zawsze podejmujesz tę samą decyzję Załaduj czy Przekształć dane. Gdy zrozumiesz jedno źródło do końca, resztę opanujesz przez analogię.

Nawigator Power BI po połączeniu ze stroną internetową: tabele HTML, sugerowane tabele i podgląd kursów walut NBP
Ten sam Nawigator, tylko źródłem jest strona internetowa - tutaj tabela kursów średnich NBP. Power BI dzieli znaleziska na trzy grupy: Tabele HTML to prawdziwe znaczniki <table> w kodzie strony, Sugerowane tabele to układy, które silnik rozpoznał jako tabelaryczne, choć technicznie tabelami nie są, a Tekst daje surowy kod HTML albo goły tekst strony. Zaczynaj zawsze od pierwszej grupy - jest najstabilniejsza. Przycisk Dodaj tabelę przy użyciu przykładów na dole ratuje sytuacje, w których strona nie ma żadnej tabeli: wpisujesz kilka wartości, które chcesz wyciągnąć, a Power BI sam dopasowuje wzorzec do reszty strony.

Zarządzanie źródłami i poświadczeniami

Co chcemy osiągnąć. Gdy serwer bazy Nordvelli dostanie nowy adres albo hasło wygaśnie, raport przestanie się odświeżać. Chcemy wiedzieć, gdzie zmienić źródło i poświadczenia bez ruszania zapytań.

Podłączenie danych to nie koniec. Ścieżki plików się zmieniają, hasła do bazy wygasają, serwer dostaje nowy adres. Power BI ma na to jedno miejsce: menu Plik, dalej Opcje i ustawienia, dalej Ustawienia źródła danych. Otwiera się okno z listą wszystkich źródeł, których kiedykolwiek używasz, a przełącznik u góry wybiera jedną z dwóch list: Źródła danych w bieżącym pliku albo Uprawnienia globalne zapisane w Twoim profilu.

Okno Edytuj uprawnienia w Power BI Desktop z sekcjami Poświadczenia, Szyfrowanie, Poziom prywatności i Natywne zapytania bazy danych, kurs Power BI
W uprawnieniach siedzą cztery rzeczy naraz: jakimi poświadczeniami łączysz się ze źródłem, czy połączenie ma być szyfrowane, jaki poziom prywatności ma to źródło i czy zgodziłeś się na uruchamianie natywnych zapytań. Poziom prywatności ustawiony na Brak jest wygodny na maszynie deweloperskiej, ale w firmie decyduje o tym, czy Power BI może łączyć te dane z innymi źródłami.
Okno Ustawienia źródła danych w Power BI Desktop z wpisem serwera SQL Nordvelli, kurs Power BI
Ustawienia źródła danych to miejsce, w którym zmienisz serwer albo bazę bez ruszania zapytań. Przełącznik u góry rozdziela dwie rzeczy: źródła użyte w TYM pliku i poświadczenia zapamiętane globalnie na Twoim komputerze. Gdy raport przestaje się odświeżać po zmianie serwera, zaczynasz właśnie tutaj.

Najważniejsze operacje w tym oknie:

  • Zmień źródło: podmieniasz ścieżkę pliku albo adres serwera bez przebudowy raportu. Gdy plik Nordvelli przeniesie się z pulpitu na dysk sieciowy, poprawiasz ścieżkę tutaj w jednym miejscu,
  • Edytuj uprawnienia: tu podmieniasz login i hasło do bazy, gdy administrator je zmieni, oraz sprawdzasz poziom prywatności źródła,
  • Wyczyść uprawnienia: usuwasz zapisane poświadczenia, na przykład gdy hasło zostało pomylone i Power BI uparcie próbuje starym.
Sytuacja w Nordvelli Operacja w Ustawieniach źródła danych
Plik Nordvella przeniósł się z pulpitu na dysk sieciowyZmień źródło (nowa ścieżka)
Administrator zmienił hasło do bazy NordvelliEdytuj uprawnienia (nowe hasło)
Power BI trzyma stare, błędne poświadczeniaWyczyść uprawnienia, potem połącz ponownie
Serwer bazy dostał nowy adresZmień źródło (nowy adres serwera)

Zapamiętaj: poświadczenia do bazy nie są zapisywane wewnątrz pliku raportu. Power BI trzyma je w Twoim profilu na komputerze, powiązane z adresem serwera. Dlatego gdy przekażesz plik koledze, on i tak zostanie poproszony o własne hasło przy pierwszym odświeżeniu. To celowe zabezpieczenie, które sprawia, że dane logowania nie wyciekają razem z raportem, o ile sam nie wkleisz ich do treści zapytania.

W tym rozdziale otworzyliśmy dane Nordvelli z pliku Excel, poznaliśmy CSV i folder, podłączyliśmy bazę i świadomie wybraliśmy tryb Import. W kolejnym rozdziale wejdziemy głębiej do edytora Power Query i pokażemy, jak oczyścić dane na celowo popsutej wersji arkusza Nordvelli: przyciąć spacje w nazwach, zamienić ceny zapisane jako tekst na liczby, usunąć zdublowany rekord pracownika i rozłożyć budżet z kolumn na wiersze.

✕

Najczęściej zadawane pytania

Kiedy wybrać Załaduj, a kiedy Przekształć dane?
Załaduj wybierz, gdy dane są już czyste i gotowe do modelu. Przekształć dane otwiera edytor Power Query, gdzie oczyścisz, przefiltrujesz i zmienisz typy kolumn przed załadowaniem. W praktyce niemal zawsze wybieramy Przekształć dane, bo nawet przy czystym pliku Excel z Nordvelli to jedyne miejsce, w którym raz na zawsze ustawisz typy kolumn.
Czym różni się Import od DirectQuery?
Import kopiuje dane do pliku Power BI i trzyma je w pamięci silnika VertiPaq, dzięki czemu raport działa błyskawicznie, ale dane są aktualne na moment odświeżenia. DirectQuery nie kopiuje danych, tylko przy każdej interakcji wysyła zapytanie SQL do bazy, więc widzisz stan na żywo kosztem szybkości. Dla Nordvella z tabelą FaktSprzedaz na 108 675 wierszy wybieramy Import.
Jak wczytać wiele plików CSV naraz?
Użyj źródła Folder w oknie Pobierz dane. Wskazujesz katalog, a Power BI odczytuje wszystkie pliki o tej samej strukturze i skleja je w jedną tabelę funkcją Combine. Nowy plik wrzucony do folderu pojawi się po odświeżeniu bez zmian w raporcie.
Gdzie zmienia się hasło do bazy danych w Power BI?
W menu Plik, Opcje i ustawienia, Ustawienia źródła danych. Zaznaczasz źródło, klikasz Edytuj uprawnienia i tam podmieniasz poświadczenia. Poświadczenia trzymane są w profilu użytkownika, nie w pliku raportu, więc nie wyciekają razem z plikiem.

Komentarze (0)

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

Brak komentarzy...