Udostępnij za pośrednictwem


Zarządzanie trybem przechowywania w programie Power BI Desktop

W programie Microsoft Power BI Desktop można określić tryb przechowywania tabeli. Tryb przechowywania umożliwia kontrolowanie, czy program Power BI Desktop buforuje dane tabeli w pamięci dla raportów. Buforowanie oznacza tymczasowe przechowywanie danych w pamięci.

Ustawienie trybu przechowywania zapewnia wiele zalet. Tryb przechowywania dla każdej tabeli można ustawić indywidualnie w modelu. Ta akcja umożliwia korzystanie z pojedynczego modelu semantycznego, który zapewnia następujące korzyści:

  • Wydajność zapytań: gdy użytkownicy wchodzą w interakcje z wizualizacjami w raportach usługi Power BI, zapytania języka DAX (Data Analysis Expressions) są przesyłane do modelu semantycznego. Buforowanie danych do pamięci przez prawidłowe ustawienie trybu przechowywania może zwiększyć wydajność zapytań i interakcyjność raportów.

  • Duże modele semantyczne: tabele, które nie są buforowane, nie zużywają pamięci na potrzeby buforowania. Możesz włączyć interaktywną analizę dużych modeli semantycznych, które są zbyt duże lub kosztowne, aby całkowicie buforować w pamięci. Możesz wybrać tabele, które warto buforować, a które nie.

  • Optymalizacja odświeżania danych: nie trzeba odświeżać tabel, które nie są buforowane. Możesz skrócić czas odświeżania, buforując tylko dane niezbędne do spełnienia umów dotyczących poziomu usług i wymagań biznesowych.

  • Wymagania niemal w czasie rzeczywistym: tabele z wymaganiami niemal w czasie rzeczywistym mogą korzystać z braku buforowania, aby zmniejszyć opóźnienie danych.

  • Zapisywanie zwrotne: zapisywanie zwrotne umożliwia użytkownikom biznesowym eksplorowanie scenariuszy analizy warunkowej przez zmianę wartości komórek. Aplikacje niestandardowe mogą stosować zmiany do źródła danych. Tabele, które nie są buforowane, mogą natychmiast wyświetlać zmiany, co umożliwia natychmiastową analizę efektów.

Ustawienie trybu przechowywania w programie Power BI Desktop jest jedną z trzech powiązanych funkcji:

  • Modele złożone: umożliwia raportowi posiadanie co najmniej dwóch połączeń danych, w tym połączeń Trybu DirectQuery lub importu, w dowolnej kombinacji. Aby uzyskać więcej informacji, zobacz Używanie modeli złożonych w programie Power BI Desktop.

  • Relacje wiele-do-wielu: w przypadku modeli złożonych można ustanowić relacje wiele-do-wielu między tabelami. W relacji wiele-do-wielu wymagania są usuwane dla unikatowych wartości w tabelach. Usuwa również wcześniejsze obejścia, takie jak wprowadzenie nowych tabel tylko w celu ustanowienia relacji. Aby uzyskać więcej informacji, zobacz Relacje wiele-do-wielu w programie Power BI Desktop.

  • Tryb przechowywania: w trybie przechowywania można teraz określić, które wizualizacje wymagają zapytania do źródeł danych zaplecza. Wizualizacje, które nie wymagają zapytania, są importowane, nawet jeśli są oparte na trybie DirectQuery. Ta funkcja pomaga zwiększyć wydajność i zmniejszyć obciążenie zaplecza. Wcześniej nawet proste wizualizacje, takie jak fragmentatory, inicjowały zapytania wysyłane do źródeł zaplecza.

Używanie właściwości Tryb przechowywania

Właściwość Tryb przechowywania jest właściwością, którą można ustawić dla każdej tabeli w modelu i kontroluje sposób buforowania danych tabeli w usłudze Power BI.

Aby ustawić właściwość Tryb przechowywania lub wyświetlić jego bieżące ustawienie:

  1. W widoku Model wybierz tabelę, której właściwości chcesz wyświetlić lub ustawić.

  2. W okienku Właściwości rozwiń sekcję Zaawansowane i rozwiń listę rozwijaną Tryb przechowywania.

    Screenshot of Relationship view highlight the option drop-down to change the storage mode.

Dla właściwości Tryb przechowywania ustaw jedną z następujących trzech wartości:

  • Importuj: zaimportowane tabele z tym ustawieniem są buforowane. Zapytania przesyłane do semantycznego modelu usługi Power BI, które zwracają dane z tabel importu, mogą być realizowane tylko z buforowanych danych.

  • Zapytanie bezpośrednie: tabele z tym ustawieniem nie są buforowane. Zapytania przesyłane do modelu semantycznego usługi Power BI — na przykład zapytania języka DAX — i zwracające dane z tabel DirectQuery mogą być realizowane tylko przez wykonywanie zapytań na żądanie do źródła danych. Zapytania przesyłane do źródła danych używają języka zapytań dla tego źródła danych, na przykład SQL.

  • Podwójne: tabele z tym ustawieniem mogą działać jako buforowane lub niebuforowane, w zależności od kontekstu zapytania przesłanego do modelu semantycznego usługi Power BI. W niektórych przypadkach zapytania są wypełniane z buforowanych danych. W innych przypadkach zapytania są wykonywane przez wykonanie zapytania na żądanie do źródła danych.

Zmiana trybu przechowywania tabeli na Import jest operacją nieodwracalną. Po ustawieniu tej właściwości nie można jej później zmienić na Tryb DirectQuery lub Podwójne.

Uwaga

Tryb przechowywania podwójnego można używać zarówno w programie Power BI Desktop, jak i w usługa Power BI.

Ograniczenia dotyczące tabel DirectQuery i Podwójne

Tabele podwójne mają te same ograniczenia funkcjonalne co tabele Trybu DirectQuery. Te ograniczenia obejmują ograniczone przekształcenia języka M i ograniczone funkcje języka DAX w kolumnach obliczeniowych. Aby uzyskać więcej informacji, zobacz Ograniczenia trybu DirectQuery.

Propagacja ustawienia Podwójne

Rozważmy następujący model, w którym wszystkie tabele pochodzą z jednego źródła, które obsługuje tryb Import i DirectQuery.

Screenshot of the example Relationship view for storage mode.

Załóżmy, że wszystkie tabele w tym modelu są początkowo ustawione na Zapytanie bezpośrednie. Jeśli następnie zmienisz trybprzechowywania tabeli SurveyResponse na Import, zostanie wyświetlone następujące okno ostrzegawcze:

Screenshot showing a warning window that describes the results of changing the storage mode to Import.

Tabele wymiarów (Customer, Geography i Date) można ustawić na Podwójne, aby zmniejszyć liczbę ograniczonych relacji w modelu semantycznym i zwiększyć wydajność. Ograniczone relacje zwykle obejmują co najmniej jedną tabelę DirectQuery, w której logika sprzężenia nie może być wypychana do systemów źródłowych. Ponieważ tabele podwójne mogą działać jako tabele DirectQuery lub Import, ta sytuacja jest unikana.

Logika propagacji została zaprojektowana tak, aby ułatwić modelom zawierającym wiele tabel. Załóżmy, że masz model z 50 tabelami, a tylko niektóre tabele faktów (transakcyjne) muszą być buforowane. Logika w programie Power BI Desktop oblicza minimalny zestaw tabel wymiarów, które muszą być ustawione na Podwójne, więc nie trzeba tego robić.

Logika propagacji przechodzi tylko do jednej strony relacji jeden do wielu.

Przykład użycia trybu przechowywania

Wyobraź sobie zastosowanie następujących ustawień właściwości trybu przechowywania:

Table Tryb przechowywania
Sprzedaż DirectQuery
SurveyResponse Import
Data Podwójne
Klient Podwójne
Obszar geograficzny Podwójne

Ustawienie tych właściwości trybu przechowywania powoduje następujące zachowania przy założeniu , że tabela Sales ma znaczący wolumin danych:

  • Program Power BI Desktop buforuje tabele wymiarów, datę, klienta i lokalizację geograficzną, dzięki czemu czasy ładowania początkowych raportów są szybkie podczas pobierania wartości fragmentatora do wyświetlenia.

  • Program Power BI Desktop nie buforuje tabeli Sales . Program Power BI Desktop udostępnia następujące wyniki, nie buforując tej tabeli:

    • Czasy odświeżania danych są lepsze, a zużycie pamięci jest mniejsze.
    • Zapytania raportów oparte na tabeli Sales są uruchamiane w trybie DirectQuery . Te zapytania mogą trwać dłużej, ale są bliżej czasu rzeczywistego, ponieważ nie wprowadzono opóźnienia buforowania.
  • Zapytania raportów oparte na tabeli SurveyResponse są zwracane z pamięci podręcznej w pamięci i dlatego są stosunkowo szybkie.

Zapytania, które trafią lub przegapią pamięć podręczną

Jeśli połączysz program SQL Profiler z portem diagnostycznym programu Power BI Desktop, zobaczysz, które zapytania trafią lub przegapisz pamięć podręczną w pamięci, wykonując ślad oparty na następujących zdarzeniach:

  • Zdarzenia zapytań\Początek zapytania
  • Przetwarzanie zapytań\Początek zapytania Vertipaq SE
  • Przetwarzanie zapytań\Początek zapytania bezpośredniego

Dla każdego zdarzenia Początek zapytania sprawdź inne zdarzenia o tym samym identyfikatorze ActivityID. Jeśli na przykład nie ma zdarzenia Początek zapytania bezpośredniego, ale istnieje zdarzenie Początek zapytania Vertipaq SE, zapytanie zostanie odebrane z pamięci podręcznej.

Zapytania odwołujące się do tabel podwójnych zwracają dane z pamięci podręcznej, jeśli to możliwe; w przeciwnym razie przywracają tryb DirectQuery.

Poniższe zapytanie jest kontynuowane z poprzedniej tabeli. Odwołuje się tylko do kolumny z tabeli Date (Data ), która jest w trybie podwójnym . W związku z tym zapytanie powinno trafić do pamięci podręcznej:

Screenshot showing the text of query that refers to the Date table.

Poniższe zapytanie odwołuje się tylko do kolumny z tabeli Sales (Sprzedaż ), która jest w trybie DirectQuery . W związku z tym nie powinien trafić do pamięci podręcznej:

Screenshot showing the text of query that refers the Sales table.

Poniższe zapytanie jest interesujące, ponieważ łączy obie kolumny. To zapytanie nie trafia do pamięci podręcznej. Początkowo można oczekiwać, że pobiera wartości CalendarYear z pamięci podręcznej i wartości SalesAmount ze źródła, a następnie łączy wyniki, ale takie podejście jest mniej wydajne niż przesyłanie operacji SUM/GROUP BY do systemu źródłowego. Jeśli operacja zostanie wypchnięta do źródła, liczba zwróconych wierszy będzie prawdopodobnie znacznie mniejsza:

Screenshot showing the text of query that refers to both the Date table and the Sales table.

Uwaga

To zachowanie różni się od relacji wiele-do-wielu w programie Power BI Desktop, gdy połączone są tabele buforowane i niebuforowane.

Pamięci podręczne powinny być synchronizowane

Zapytania wyświetlane w poprzedniej sekcji pokazują, że tabele podwójne czasami trafiają do pamięci podręcznej, a czasami nie. W związku z tym, jeśli pamięć podręczna jest nieaktualna, można zwrócić różne wartości. Wykonywanie zapytań nie będzie próbować maskować problemów z danymi, na przykład filtrowanie wyników zapytania bezpośredniego w celu dopasowania do buforowanych wartości. Twoim zadaniem jest zapoznanie się z przepływami danych i odpowiednie projektowanie. Istnieją ustalone techniki obsługi takich przypadków w źródle, w razie potrzeby.

Tryb przechowywania podwójnego jest optymalizacją wydajności. Należy go używać tylko w sposób, który nie narusza możliwości spełnienia wymagań biznesowych. Aby uzyskać alternatywne zachowanie, rozważ użycie technik opisanych w relacjach wiele-do-wielu w programie Power BI Desktop.

Widok danych

Jeśli co najmniej jedna tabela w modelu semantycznym ma tryb przechowywania ustawiony na Import lub Dual, karta Widok danych jest wyświetlana.

Screenshot highlighting the Data view icon.

Po wybraniu opcji Tabele podwójne i Importuj w widoku Danych są one wyświetlane w pamięci podręcznej. Tabele trybu DirectQuery nie pokazują danych i zostanie wyświetlony komunikat informujący, że tabele DirectQuery nie mogą być wyświetlane.

Rozważania i ograniczenia

Istnieje kilka ograniczeń dotyczących bieżącej wersji trybu przechowywania i korelacji z modelami złożonymi.

Następujących źródeł połączenia na żywo (wielowymiarowych) nie można używać z modelami złożonymi:

  • SAP HANA
  • SAP Business Warehouse

Po nawiązaniu połączenia z tymi wielowymiarowymi źródłami przy użyciu trybu DirectQuery nie można nawiązać połączenia z innym źródłem DirectQuery ani połączyć go z zaimportowanymi danymi.

Istniejące ograniczenia dotyczące używania trybu DirectQuery nadal mają zastosowanie w przypadku korzystania z modeli złożonych. Wiele z tych ograniczeń jest teraz na tabelę, w zależności od trybu przechowywania tabeli. Na przykład kolumna obliczeniowa w zaimportowanej tabeli może odwoływać się do innych tabel, ale kolumna obliczeniowa w tabeli DirectQuery jest nadal ograniczona do odwoływania się tylko do kolumn w tej samej tabeli. Inne ograniczenia dotyczą modelu jako całości, jeśli którakolwiek z tabel w modelu to Zapytanie bezpośrednie.

Aby uzyskać więcej informacji na temat modeli złożonych i trybu DirectQuery, zobacz następujące artykuły: