Rozwiązywanie problemów z modelami DirectQuery w programie Power BI Desktop

Ten artykuł ułatwia diagnozowanie problemów z wydajnością modeli danych trybu DirectQuery usługi Power BI opracowywanych w programie Power BI Desktop lub usługa Power BI. W tym artykule opisano również, jak uzyskać szczegółowe informacje ułatwiające optymalizowanie raportów.

Należy rozpocząć diagnostykę problemów z wydajnością w programie Power BI Desktop, a nie w usługa Power BI lub Serwer raportów usługi Power BI. Problemy z wydajnością często zależą od poziomu wydajności bazowego źródła danych. Można łatwiej identyfikować i diagnozować te problemy w izolowanym środowisku programu Power BI Desktop bez angażowania składników, takich jak brama lokalna.

Jeśli nie znajdziesz problemów z wydajnością w programie Power BI Desktop, możesz skoncentrować się na zbadaniu szczegółów raportu w usługa Power BI.

Należy również spróbować odizolować problemy z pojedynczą wizualizacją, zanim przyjrzysz się wielu wizualizacjom na stronie.

Performance Analyzer

Analizator wydajności to przydatne narzędzie do identyfikowania problemów z wydajnością w całym procesie rozwiązywania problemów. Jeśli możesz zidentyfikować pojedynczą powolną wizualizację na stronie w programie Power BI Desktop, możesz użyć Analizator wydajności, aby określić, jakie zapytania program Power BI Desktop wysyła do bazowego źródła.

Może być również możliwe wyświetlenie śladów i informacji diagnostycznych emitujących bazowe źródła danych. Takie ślady mogą zawierać przydatne informacje o sposobie wykonywania zapytania i sposobie jego ulepszania.

Nawet bez śladów ze źródła można wyświetlić zapytania wysyłane przez usługę Power BI wraz z ich czasem wykonywania.

Uwaga

W przypadku źródeł opartych na języku SQL directQuery Analizator wydajności wyświetla zapytania tylko dla źródeł danych SQL Server, Oracle i Teradata.

Plik śledzenia

Domyślnie program Power BI Desktop rejestruje zdarzenia podczas danej sesji do pliku śledzenia o nazwie FlightRecorderCurrent.trc. Plik śledzenia bieżącej sesji można znaleźć w folderze AppData bieżącego użytkownika w folderze <User>\AppData\Local\Microsoft\Power BI Desktop\AnalysisServicesWorkspaces.

Następujące źródła danych trybu DirectQuery zapisują wszystkie zapytania wysyłane przez usługę Power BI do pliku śledzenia. Dziennik może obsługiwać inne źródła DirectQuery w przyszłości.

  • SQL Server
  • Azure SQL Database
  • Azure Synapse Analytics (dawniej Azure SQL Data Warehouse)
  • Oracle
  • Teradata
  • SAP HANA

Aby łatwo przejść do folderu pliku śledzenia w programie Power BI Desktop, wybierz pozycję Opcje pliku>i ustawienia>Opcje, a następnie wybierz pozycję Diagnostyka.

Screenshot of the Diagnostics section of the Power BI Desktop Options screen with the link to open the crash dump/traces folder.

W obszarze Kolekcja zrzutów awaryjnych wybierz link Otwórz folder Zrzut awaryjny/ślady, aby otworzyć <folder User>\AppData\Local\Microsoft\Power BI Desktop\Traces.

Przejdź do folderu nadrzędnego tego folderu, a następnie otwórz folder AnalysisServicesWorkspaces zawierający jeden podfolder obszaru roboczego dla każdego otwartego wystąpienia programu Power BI Desktop. Nazwy podfolderów mają sufiksy liczb całkowitych, takie jak AnalysisServicesWorkspace2058279583.

Każdy folder AnalysisServicesWorkspace zawiera podfolder Data zawierający plik śledzenia FlightRecorderCurrent.trc dla bieżącej sesji usługi Power BI. Ten folder zniknie po zakończeniu skojarzonej sesji programu Power BI Desktop.

Pliki śledzenia można otworzyć za pomocą narzędzia SQL Server Profiler, które można pobrać w ramach bezpłatnego pobierania programu SQL Server Management Studio (SSMS). Po pobraniu i zainstalowaniu programu SQL Server Management Studio otwórz program SQL Server Profiler.

Screenshot of SQL Server Profiler window with no highlighted traces.

Aby otworzyć plik śledzenia:

  1. W programie SQL Server Profiler wybierz pozycję Plik>Otwórz>plik śledzenia.

  2. Przejdź do lub wprowadź ścieżkę do pliku śledzenia bieżącej sesji usługi Power BI, na przykład <User>\AppData\Local\Microsoft\Power BI Desktop\AnalysisServicesWorkspaces\AnalysisServicesWorkspace2058279583\Data, a następnie otwórz plik FlightRecorderCurrent.trc.

Program SQL Server Profiler wyświetla wszystkie zdarzenia z bieżącej sesji. Poniższy zrzut ekranu przedstawia grupę zdarzeń dla zapytania. Każda grupa zapytań ma następujące zdarzenia:

  • Zdarzenie Query Begin i Query End reprezentujące początek i koniec zapytania języka DAX wygenerowanego przez zmianę wizualizacji lub filtru w interfejsie użytkownika usługi Power BI albo filtrowanie lub przekształcanie danych w Edytor Power Query.

  • Co najmniej jedna para zdarzeń DirectQuery Begin i DirectQuery End reprezentująca zapytania wysyłane do bazowego źródła danych w ramach oceny zapytania języka DAX.

Screenshot of SQL Server Profiler with highlighted Query Begin and Query End events.

Wiele zapytań języka DAX może być uruchamianych równolegle, więc zdarzenia z różnych grup mogą się przeplatać. Możesz użyć wartości , ActivityID aby określić, które zdarzenia należą do tej samej grupy.

Interesujące są również następujące kolumny:

  • TextData: tekstowy szczegół zdarzenia. W przypadku zdarzeń Query Begin i Query End szczegóły to zapytanie języka DAX. W przypadku zdarzeń DirectQuery Begin i DirectQuery End szczegóły to zapytanie SQL wysyłane do bazowego źródła. Wartość TextData dla aktualnie wybranego zdarzenia jest również wyświetlana w okienku w dolnej części ekranu.
  • EndTime: godzina zakończenia zdarzenia.
  • Czas trwania: czas trwania w milisekundach trwał, aby uruchomić zapytanie języka DAX lub SQL.
  • Błąd: czy wystąpił błąd, w którym przypadku zdarzenie jest również wyświetlane na czerwono.

Powyższy obraz zawęża niektóre mniej interesujące kolumny, dzięki czemu bardziej interesujące kolumny są widoczne.

Postępuj zgodnie z tym podejściem, aby przechwycić ślad, aby pomóc zdiagnozować potencjalny problem z wydajnością:

  1. Otwórz pojedynczą sesję programu Power BI Desktop, aby uniknąć pomyłek wielu folderów obszaru roboczego.

  2. Wykonaj zestaw interesujących cię akcji programu Power BI Desktop. Dołącz kilka kolejnych akcji, aby upewnić się, że zdarzenia zainteresowania są opróżniane do pliku śledzenia.

  3. Otwórz program SQL Server Profiler i sprawdź ślad. Pamiętaj, że zamknięcie programu Power BI Desktop powoduje usunięcie pliku śledzenia. Ponadto dalsze akcje w programie Power BI Desktop nie są natychmiast wyświetlane. Aby wyświetlić nowe zdarzenia, należy zamknąć i ponownie otworzyć plik śledzenia.

Zachowaj poszczególne sesje dość małe, być może 10 sekund akcji, a nie setki. Takie podejście ułatwia interpretowanie pliku śledzenia. Istnieje również limit rozmiaru pliku śledzenia, więc w przypadku długich sesji istnieje szansa na spadek wczesnych zdarzeń.

Format zapytania i podzapytania

Ogólny format zapytań programu Power BI Desktop polega na użyciu podzapytania dla każdej tabeli modeli, do których odwołują się zapytania. Zapytanie Edytor Power Query definiuje zapytania podwybierz. Załóżmy na przykład, że w relacyjnej bazie danych programu SQL Server istnieją następujące tabele TPC-DS :

Screenshot of a Power BI Desktop model view diagram that shows the related Item, Web_Sales, Customer and Date-dim TPC-DS tables.

W wizualizacji usługi Power BI następujące wyrażenie definiuje miarę SalesAmount :


SalesAmount = SUMX(Web_Sales, [ws_sales_price] * [ws_quantity])

Screenshot of a Power BI Desktop stacked column chart that displays sales amount by category.

Odświeżanie wizualizacji powoduje utworzenie zapytania T-SQL na poniższej ilustracji. Istnieją trzy podzapytania dla Web_Salestabel , Itemi Date_dim modelu. Każde zapytanie zwraca wszystkie kolumny tabeli modelu, mimo że wizualizacja odwołuje się tylko do czterech kolumn.

Te zacienione podzapytania są dokładną definicją zapytań Dodatku Power Query. To użycie podzapytania nie ma wpływu na wydajność dla źródeł danych, które obsługuje tryb DirectQuery. Źródła danych, takie jak PROGRAM SQL Server, optymalizują odwołania do innych kolumn.

Jednym z powodów, dla których usługa Power BI używa tego wzorca, jest możliwość zdefiniowania zapytania Dodatku Power Query w celu użycia określonej instrukcji zapytania. Usługa Power BI używa podanego zapytania bez próby ponownego zapisania go. Ten wzorzec ogranicza używanie instrukcji zapytań, które używają wspólnych wyrażeń tabel (CTE) i procedur składowanych. Tych instrukcji nie można używać w podzapytaniach.

Screenshot of a T-SQL query that shows embedded subqueries, one for each model table.

Wydajność bramy

Aby uzyskać informacje na temat rozwiązywania problemów z wydajnością bramy, zobacz Rozwiązywanie problemów z bramami — Power BI.

Aby uzyskać więcej informacji na temat trybu DirectQuery, zapoznaj się z następującymi zasobami:

Pytania? Spróbuj zadać Społeczność usługi Power BI