Power BI

Direct Lake vs Import w Power BI. Który tryb wybrać dla dużych modeli danych

Direct Lake to tryb przechowywania danych w Power BI, który odczytuje dane bezpośrednio z OneLake, bez importowania ich do modelu, zachowując przy tym wydajność zapytań porównywalną z trybem Import. Największa różnica ujawnia się przy dużych modelach: Direct Lake eliminuje czasochłonne odświeżenia i wielokrotnie obniża zużycie jednostek obliczeniowych, czyli capacity units. Pytanie o porównanie obu trybów dla modelu z ponad trzydziestoma milionami wierszy padło na naszym webinarze o hurtowni danych 2.0 i ten artykuł jest rozwiniętą odpowiedzią.

Trzy tryby przechowywania danych w Power BI

Power BI oferuje trzy sposoby pracy z danymi, a wybór między nimi to jedna z ważniejszych decyzji architektonicznych w projekcie analitycznym.

Import ładuje dane do pamięci modelu. To klasyczny, najstarszy tryb i przez lata domyślny wybór dla większości wdrożeń.

DirectQuery nie przechowuje danych w modelu w ogóle: każda interakcja z raportem generuje zapytanie do źródła. Zapewnia dane zawsze aktualne, ale wydajność zależy w całości od źródła i przy złożonych raportach bywa bolesna.

Direct Lake to tryb dostępny w Microsoft Fabric, który łączy zalety obu podejść: dane nie są importowane do modelu, a mimo to zapytania działają z szybkością znaną z trybu Import. Jak to możliwe, wyjaśniamy poniżej.

Jak działa tryb Import

W trybie Import dane są ładowane do pamięci modelu i kompresowane przez silnik VertiPaq: kolumnowy silnik analityczny, który stoi za szybkością Power BI. Gdy dane są już w pamięci, odpytywanie jest błyskawiczne: filtry, przekroje i kalkulacje na milionach wierszy liczą się w ułamkach sekund.

Cena tej szybkości ujawnia się przy odświeżaniu. Każde odświeżenie oznacza ponowne załadowanie danych ze źródła do modelu, a przy tabeli faktów liczącej dziesiątki milionów wierszy to proces zajmujący sporo czasu. I nie dotyczy to tylko pierwszego ładowania: każde kolejne odświeżenie wykonuje tę samą ciężką pracę.

Z perspektywy platformy Fabric ma to jeszcze jeden wymiar: zużycie capacity units. Pełne odświeżenie dużego modelu w trybie Import intensywnie konsumuje jednostki obliczeniowe wykupionej pojemności. Przy częstych odświeżeniach dużych modeli to właśnie one potrafią stać się głównym kosztem środowiska.

Jak działa Direct Lake

Direct Lake korzysta z tego samego silnika VertiPaq, ale zmienia ścieżkę danych: zamiast importować dane do modelu, odczytuje pliki bezpośrednio z OneLake. Jest to możliwe, ponieważ dane w OneLake są składowane w otwartym formacie Delta Parquet, czyli w układzie kolumnowym, który VertiPaq potrafi czytać natywnie, bez wcześniejszej konwersji i ładowania.

W praktyce oznacza to, że etap odświeżania modelu w zasadzie znika. Dane zaktualizowane w Lakehouse, na przykład przez transformację Dataflow, są dostępne dla raportów bez przeładowywania czegokolwiek do pamięci modelu.

Jedno zjawisko trzeba znać: cold start. Pierwsze zapytanie do danej porcji danych bywa wolniejsze, ponieważ silnik dopiero ładuje potrzebne kolumny do pamięci. Każde kolejne zapytanie do tych samych danych działa już z pełną szybkością. W codziennym użytkowaniu raportu efekt jest odczuwalny co najwyżej przy pierwszym otwarciu po dłuższej przerwie.

Porównanie na dużym modelu: ponad 30 milionów wierszy w tabeli faktów

Właśnie przy takiej skali, o którą pytano na webinarze, różnice między trybami przestają być teoretyczne.

Czas odświeżenia. W trybie Import każde odświeżenie modelu z tabelą faktów tej wielkości to długi, ciężki proces, który trzeba mieścić w oknach czasowych i którego awarie trzeba obsługiwać. W Direct Lake odświeżenia modelu w klasycznym sensie nie ma: aktualizują się dane w Lakehouse, a model czyta je na bieżąco.

Wydajność zapytań. Po rozgrzaniu, czyli po załadowaniu kolumn do pamięci przy pierwszych zapytaniach, oba tryby oferują porównywalną szybkość, bo pracuje ten sam silnik. Import ma minimalną przewagę braku cold startu, Direct Lake nadrabia ją brakiem opóźnienia między aktualizacją danych a ich widocznością w raporcie.

Zużycie capacity units. Tu różnica jest największa i najbardziej odczuwalna finansowo. Import przy każdym odświeżeniu konsumuje jednostki na przeładowanie całego modelu. Direct Lake tej pracy nie wykonuje wcale, więc jego zużycie jednostek jest znacznie niższe. Przy dużych modelach odświeżanych codziennie lub częściej to argument, który potrafi samodzielnie rozstrzygnąć wybór trybu, a w skrajnych przypadkach zdecydować o tym, czy obecna pojemność w ogóle wystarcza.

Kryterium Import Direct Lake
Miejsce danych Pamięć modelu, po załadowaniu ze źródła Pliki Delta Parquet w OneLake, czytane bezpośrednio
Odświeżenie modelu Pełne przeładowanie, czasochłonne przy dużych zbiorach Brak: model widzi aktualne dane z Lakehouse
Wydajność zapytań Bardzo wysoka Porównywalna, po cold starcie pierwszego zapytania
Aktualność danych Stan z ostatniego odświeżenia Stan bieżący danych w OneLake
Zużycie capacity units Wysokie przy każdym odświeżeniu Znacznie niższe
Wymagania wobec źródła Dowolne źródło obsługiwane przez Power BI Dane w OneLake, format Delta

Kiedy Import nadal ma sens

Direct Lake jest naturalnym wyborem dla modeli zbudowanych na Lakehouse w Fabric, ale Import nie odchodzi do historii.

Źródła spoza OneLake. Direct Lake wymaga danych w OneLake w formacie Delta. Jeśli model ma łączyć dane z hurtowni z małym słownikiem utrzymywanym gdzie indziej, ten fragment może wymagać importu.

Rozbudowana logika w samym modelu. Modele, które intensywnie korzystają z kolumn wyliczanych i przekształceń wykonywanych na poziomie modelu, mogą wymagać trybu Import, bo Direct Lake zakłada, że transformacje dzieją się wcześniej, w warstwie danych. To zresztą dobra praktyka niezależnie od trybu: logika transformacyjna powinna żyć w Dataflow, nie w modelu.

Fallback do DirectQuery. Warto wiedzieć, że w określonych sytuacjach, na przykład przy przekroczeniu limitów pojemności dla trybu Direct Lake, silnik może przełączyć zapytania na tryb DirectQuery, co odbija się na wydajności. Dobrze zaprojektowany model i właściwie dobrana pojemność minimalizują ryzyko takiego przełączenia, a zachowanie fallbacku można kontrolować w ustawieniach modelu.

Rekomendacje architektoniczne

Prosta macierz decyzyjna na start:

Sytuacja Rekomendowany tryb
Model zbudowany na Lakehouse w Fabric, duża tabela faktów Direct Lake
Częste odświeżenia i presja na zużycie capacity units Direct Lake
Dane muszą być widoczne w raporcie tuż po aktualizacji w hurtowni Direct Lake
Małe modele ze źródeł spoza OneLake Import
Model z rozbudowanymi kolumnami wyliczanymi Import albo przeniesienie logiki do Dataflow i Direct Lake
Dane muszą być odpytywane w źródle co do sekundy DirectQuery, a w Fabric warto rozważyć Eventhouse

Reguła kciuka: jeśli budujesz hurtownię w Fabric zgodnie z podejściem, które opisujemy w artykule o budowie hurtowni krok po kroku, Direct Lake jest domyślnym wyborem, a Import traktuj jako uzasadniony wyjątek.

Dobór trybów przechowywania to element szerszego projektu architektury: układu tabel, modelu semantycznego i pojemności środowiska. Zespół Power Center w ANEGIS przeprowadza audyty wydajności istniejących środowisk Power BI i Fabric: sprawdzamy, gdzie ucieka czas odświeżeń i capacity units, i projektujemy układ docelowy. Jeśli Wasze modele rosną szybciej niż pojemność, zapraszamy do kontaktu.

FAQs

Czym jest tryb Direct Lake w Power BI?

Direct Lake to tryb przechowywania danych dostępny w Microsoft Fabric, w którym Power BI odczytuje dane bezpośrednio z plików Delta Parquet w OneLake, bez importowania ich do pamięci modelu. Łączy szybkość zapytań znaną z trybu Import z aktualnością danych zbliżoną do DirectQuery.

Czy Direct Lake jest szybszy niż Import?

Wydajność zapytań jest porównywalna, bo oba tryby korzystają z silnika VertiPaq. Direct Lake ma cold start: pierwsze zapytanie do danej porcji danych jest wolniejsze, bo silnik ładuje kolumny do pamięci, a kolejne działają z pełną szybkością. Przewaga Direct Lake leży gdzie indziej: w braku czasochłonnych odświeżeń modelu i znacznie niższym zużyciu capacity units.

Co to jest cold start w Direct Lake?

Cold start to zjawisko, w którym pierwsze zapytanie do danych jest wolniejsze od kolejnych, ponieważ silnik dopiero ładuje potrzebne kolumny z OneLake do pamięci. Każde następne zapytanie do tych samych danych korzysta z kolumn już załadowanych i działa z pełną szybkością.

Dlaczego Import zużywa więcej capacity units niż Direct Lake?

Tryb Import przy każdym odświeżeniu przeładowuje cały model danych ze źródła do pamięci, a ta praca konsumuje jednostki obliczeniowe pojemności. Direct Lake nie wykonuje odświeżenia modelu w ogóle, bo czyta aktualne dane bezpośrednio z OneLake, więc jego zużycie jednostek jest znacznie niższe, szczególnie przy dużych, często odświeżanych modelach.

Zobacz inne

Dynamics 365 F&O

One Dynamics One Platform: co przeniesienie F&O na Power Platform oznacza dla Twoich kosztów storage

Czytaj artykuł
Text Link
Dynamics 365 F&O

System finansowo księgowy dla firmy: kiedy przejść na Dynamics 365 Finance

Czytaj artykuł
Text Link
Hurtownia Danych 2.0.

Excel jako hurtownia danych. 6 ukrytych kosztów, które płacisz co miesiąc.

Czytaj artykuł
Text Link
Wróć do wszystkich

Porozmawiajmy o Twoim projekcie

Napisz, z czym przychodzisz: wdrożenie, migracja, rozwój systemu albo pytanie, na które szukasz odpowiedzi. Wracamy z konkretną propozycją następnego kroku, nie z prezentacją handlową.

Dziękujemy za wiadomość!
Oops! Something went wrong while submitting the form.
Microsoft AI Builder
Microsoft Copilot Studio
No items found.
No items found.
No items found.