Blog JSystems - uwalniamy wiedzę!

Szukaj

Power BI - Pobieranie danych i źródła w Power BI Desktop

Import czy DirectQuery w Power BI - jak wybrać i czy da się zmienić tryb później

W skrócie

  • Import czy DirectQuery w Power BI wybierasz już w oknie połączenia z bazą, w polu Tryb łączności danych. Od tej decyzji zależy szybkość raportu, świeżość danych i zestaw dostępnych funkcji.
  • Import kopiuje dane do pamięci modelu i odświeża je według harmonogramu, a DirectQuery wysyła zapytanie do bazy przy każdej interakcji. Tryb jest właściwością tabeli i według dokumentacji Microsoft zmienisz go tylko w tabeli utworzonej w DirectQuery.
  • Domyślnie wybieraj Import, a DirectQuery zostaw na dane potrzebne co do minuty albo za duże do pamięci. Tabelę DirectQuery przełączysz na Import jednym poleceniem, w drugą stronę trzeba wczytać ją od nowa.

Import czy DirectQuery: o tym decydujesz przy pierwszym połączeniu Power BI z bazą SQL Server, a temat wraca, gdy raport okazuje się za wolny albo dane za mało świeże. Tryb da się zmienić bez budowania raportu od nowa, ale jednym poleceniem tylko w jedną stronę. Pokazujemy, czym różnią się oba tryby, jak wybrać właściwy dla danych, gdzie sprawdzić i zmienić tryb tabeli oraz co zrobić, gdy potrzebujesz zmiany w drugą stronę.

Jak to wygląda w praktyce

O tryb Power BI pyta w oknie Baza danych programu SQL Server, w polu Tryb łączności danych z opcjami Importuj i DirectQuery, jeszcze przed oknem poświadczeń. Model wczytany w DirectQuery poznasz po napisie na pasku stanu w prawym dolnym rogu: Tryb przechowywania: DirectQuery (kliknij, aby zmienić). W widoku modelu tryb każdej tabeli widać w panelu Właściwości, w zwiniętej sekcji Zaawansowane, na liście Tryb przechowywania.

Przy próbie przełączenia tabeli DirectQuery na Import Power BI pokazuje ostrzeżenie „Ustawienie trybu przechowywania na Import jest operacją nieodwracalną. Nie będzie można zmienić trybu z powrotem na DirectQuery.” (w angielskiej wersji: „Setting storage mode to Import is an irreversible operation. You will not be able to switch it back to DirectQuery.”). Plik Excela w ogóle nie daje wyboru, bo łącznik Excela działa tylko w trybie Import. W modelu Nordvelli z kursu wszystkie 19 tabel ma tryb Import.

Dlaczego tak się dzieje

Import kopiuje dane do modelu i kompresuje je w pamięci silnika VertiPaq, czyli silnika kolumnowego wbudowanego w Power BI. Raport liczy wtedy wszystko lokalnie, ale pokazuje stan z ostatniego odświeżenia. Według dokumentacji Microsoft model importowany przy licencji Pro odświeżysz według harmonogramu do 8 razy dziennie, a na pojemności Premium lub w licencji PPU do 48 razy. DirectQuery niczego nie kopiuje: każdy wykres i każdy filtr wysyła zapytanie SQL do bazy i czeka na wynik.

Za świeżość danych DirectQuery płaci ograniczeniami opisanymi w dokumentacji Microsoft. Zapytanie, które zwraca więcej niż 1 000 000 wierszy wyniku pośredniego, kończy się błędem, nie ma automatycznej hierarchii dat, a kolumny obliczeniowe są ograniczone do wyrażeń, które baza policzy wiersz po wierszu. Kroki Power Query muszą składać się do jednego zapytania SQL, o czym piszemy w poście o kroku nieobsługiwanym w trybie DirectQuery.

Tryb jest właściwością tabeli, ustawianą przy jej wczytaniu. Dokumentacja Microsoft mówi wprost, że zmienisz go tylko w tabeli utworzonej w DirectQuery: na Import albo na tryb Podwójne, czyli Dual, i potem nie wrócisz do DirectQuery. Całego modelu importowanego nie da się też przełączyć na DirectQuery jednym ustawieniem.

Co zrobić krok po kroku

  1. Sprawdź, w jakim trybie są tabele. W widoku modelu kliknij tabelę i w panelu Właściwości rozwiń Zaawansowane, gdzie lista Tryb przechowywania ma pozycje Importuj, Tryb DirectQuery i Podwójne. Wszystkie tabele naraz pokaże zapytanie DAX: na pasku po lewej kliknij ikonę Widok zapytań w języku DAX, wklej kod i kliknij Uruchom. Na modelu Nordvelli zapytanie zwraca 19 wierszy, wszystkie z wartością Import:
    EVALUATE
    SELECTCOLUMNS(INFO.VIEW.TABLES(), "Tabela", [Name], "Tryb", [StorageMode])
  2. Wybierz tryb według danych, a nie według przyzwyczajenia. Według dokumentacji Microsoft domyślnym wyborem jest Import, bo korzysta z wydajnego silnika w pamięci i daje więcej funkcji modelowania niż DirectQuery. DirectQuery ma sens, gdy dane muszą być aktualne częściej, niż pozwala harmonogram, gdy są za duże do pamięci albo gdy zabezpieczenia muszą zostać po stronie bazy. W Nordvelli FaktSprzedaz ma 108 675 transakcji, które zmieniają się raz dziennie, więc w kursie wybraliśmy Import. Gdy wahasz się między harmonogramem a DirectQuery, sprawdź najpierw limity w poście o liczbie odświeżeń dziennie.
  3. Zmiana z DirectQuery na Import: przed nią zapisz kopię pliku .pbix, bo operacji nie cofniesz. W widoku modelu kliknij tabelę, na liście Tryb przechowywania wybierz Importuj, przeczytaj ostrzeżenie o nieodwracalnej operacji i potwierdź. Power BI wczyta dane tabeli do modelu. W modelu w całości opartym na DirectQuery tę samą zmianę zaczniesz kliknięciem napisu Tryb przechowywania: DirectQuery (kliknij, aby zmienić) na pasku stanu.
  4. Według dokumentacji Microsoft przy przełączaniu tabeli DirectQuery na Import Power BI proponuje tryb Podwójne dla pozostałych tabel DirectQuery, bo relacja między tabelą DirectQuery a tabelą importowaną jest relacją ograniczoną. W kursie przy przełączaniu DimProdukty na tryb Podwójne okno ostrzegało o relacjach ograniczonych i proponowało tryb Podwójne także dla DimKategorie, a pole Ustaw tryb podwójny dla odnośnych tabel załatwiło to jednym kliknięciem.
  5. Zmiana z Import na DirectQuery nie istnieje jako polecenie. Wczytaj tabelę ponownie: kliknij Pobierz dane, Baza danych programu SQL Server, podaj ten sam serwer i bazę i w polu Tryb łączności danych wybierz DirectQuery. Odtwórz relacje do wymiarów, przenieś miary ze starej tabeli do nowej albo do innej tabeli i dopiero wtedy usuń starą, bo miary zapisane w usuwanej tabeli zniknęłyby razem z nią. Wizualizacje oparte na kolumnach starej tabeli trzeba przepiąć na nową.
  6. Rozważ model złożony zamiast całego modelu w jednym trybie. Według dokumentacji Microsoft tabela faktów może być w DirectQuery, a wymiary w trybie Podwójne, bo tabela w tym trybie działa raz jak importowana, raz jak DirectQuery, zależnie od zapytania. Tak zbudowaliśmy model w lekcji o modelach złożonych i trybie Podwójne: FaktSprzedaz w DirectQuery na SQL Server, cztery wymiary w trybie Podwójne, a tabele pomocnicze, których nie ma w bazie, w Imporcie.
Panel Właściwości tabeli DimSklepy: lista Tryb przechowywania z pozycjami Importuj, Tryb DirectQuery i Podwójne
Lista trybów siedzi w panelu Właściwości, w zwiniętej sekcji Zaawansowane. Trzy pozycje: Importuj, Tryb DirectQuery i Podwójne, czyli Dual z dokumentacji anglojęzycznej.

Jak sprawdzić, że problem zniknął

Po zmianie sprawdź tryb jeszcze raz, w panelu Właściwości albo zapytaniem z kroku pierwszego, i porównaj sumy. Na modelu Nordvelli w Imporcie Łączna sprzedaż wynosi 467 775 009,17 zł, a sprzedaż sklepów z Warszawy 222 818 294,93 zł. W kursie ten sam wykres sprzedaży według miast w DirectQuery pokazywał Warszawę z ponad 220 mln zł, czyli zmiana trybu nie zmienia liczb, tylko miejsce, w którym się liczą.

Żeby nie wracać do tej decyzji, zapisz przy modelu, dlaczego tabela ma dany tryb, i nie przełączaj go odruchowo przy pierwszym wolnym raporcie. Gdy raport w DirectQuery działa za wolno, zacznij od przyczyn opisanych w poście o wolnym DirectQuery w Power BI, bo przejście na Import zabiera świeżość danych na stałe.

Źródła i sposób sprawdzenia

  • Microsoft Learn: Table storage mode in Power BI semantic models (źródło)
  • Microsoft Learn: DirectQuery in Power BI (limitations, Changing storage modes) (źródło)
  • Microsoft Learn: Use composite models in Power BI Desktop (źródło)
  • Kurs Power BI, lekcja 3 (okno trybu łączności, pasek stanu DirectQuery) i lekcja 20 (tryb przechowywania, ostrzeżenia przy przełączaniu, model złożony)
  • Sprawdzone zapytaniami DAX na modelu Nordvelli: tryby wszystkich tabel, Łączna sprzedaż i sprzedaż Warszawy

Zachowanie programu sprawdziliśmy w Power BI Desktop 2.157 (wydanie z sierpnia 2026 r.) z polskim interfejsem, a przykłady na modelu sieci Nordvella z bezpłatnego kursu Power BI. Microsoft wydaje nową wersję Power BI Desktop co miesiąc, więc nazwy przycisków i limity usługi mogą się zmieniać. Aktualne wartości podaje dokumentacja Microsoft Learn.

Wróć do listy: 131 najczęstszych pytań i problemów związanych z Power BI

Najczęściej zadawane pytania

Import czy DirectQuery w Power BI - co wybrać?
Według dokumentacji Microsoft domyślnym wyborem jest Import, bo korzysta z wydajnego silnika w pamięci i daje więcej funkcji modelowania niż DirectQuery. DirectQuery wybierz, gdy dane muszą być aktualniejsze, niż pozwala harmonogram odświeżania, są za duże do pamięci albo zabezpieczenia muszą zostać po stronie bazy. Dla Nordvelli, której 108 675 transakcji zmienia się raz dziennie, wybraliśmy Import.
Czy można zmienić DirectQuery na Import w Power BI?
Tak. W widoku modelu kliknij tabelę i w panelu Właściwości, w sekcji Zaawansowane, wybierz Importuj na liście Tryb przechowywania. Power BI ostrzega, że to operacja nieodwracalna i nie da się wrócić do DirectQuery, dlatego przed zmianą zapisz kopię pliku.
Jak zmienić tryb Import na DirectQuery w Power BI?
Według dokumentacji Microsoft tryb da się zmienić tylko w tabeli utworzonej w DirectQuery, więc tabeli importowanej nie przełączysz. Wczytaj ją ponownie z tego samego źródła z trybem DirectQuery, odtwórz relacje, przenieś miary i usuń starą tabelę. Plików Excela to nie dotyczy, bo łącznik Excela działa tylko w trybie Import.
Jak sprawdzić, w jakim trybie jest tabela w Power BI?
W widoku modelu kliknij tabelę i w panelu Właściwości rozwiń sekcję Zaawansowane, gdzie lista Tryb przechowywania pokazuje Importuj, Tryb DirectQuery albo Podwójne. Tryby wszystkich tabel naraz zwraca zapytanie DAX z funkcją INFO.VIEW.TABLES i kolumną StorageMode. W modelu DirectQuery tryb widać też na pasku stanu.

Komentarze (0)

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

Brak komentarzy...