Wizualizowanie i interpretowanie diagnostyki zapytań w Power BI

Po zarejestrowaniu diagnostyki, której chcesz użyć, następnym krokiem jest zrozumienie, co mówią.

Warto dobrze zrozumieć, co oznacza każda kolumna w schemacie diagnostyki zapytań. Ten samouczek nie obejmuje tych informacji. Aby uzyskać pełny opis, zobacz Diagnostyka zapytań.

Ogólnie rzecz biorąc, podczas tworzenia wizualizacji użyj pełnej szczegółowej tabeli. Niezależnie od tego, ile wierszy zawiera, prawdopodobnie przyjrzysz się pewnego rodzaju obrazowi, w jaki sposób sumuje się czas spędzony w różnych zasobach lub jakie było emitowane zapytanie natywne.

Jak wspomniano w artykule dotyczącym rejestrowania danych diagnostycznych, ten przykład korzysta z danych OData i śladów SQL dla tabeli Customers z bazy Northwind. W szczególności koncentruje się na typowym pytaniu klientów, a także na jednym z łatwiejszych w interpretowaniu zestawów śladów: pełne odświeżanie modelu danych.

Tworzenie wizualizacji

Podczas przeglądania śladów można je ocenić na wiele sposobów. W tym artykule opisano dwie wizualizacje. Pierwsza wizualizacja pokazuje szczegóły, które są dla Ciebie istotne, a druga przedstawia udział poszczególnych czynników w czasie. W pierwszej wizualizacji użyj tabeli. Możesz wybrać dowolne pola, ale w celu łatwego ogólnego przyjrzenia się temu, co się dzieje, użyj następujących pól:

W przypadku drugiej wizualizacji użyj skumulowanego wykresu kolumnowego. W parametrze Axis użyj Id lub Step. Jeśli patrzysz na opcję Refresh, ponieważ nie ma ono nic wspólnego z krokami w samym Edytorze, prawdopodobnie chcesz po prostu spojrzeć na Id. Dla parametru Legend ustaw Category lub Operation (w zależności od żądanego stopnia szczegółowości). Dla parametru Value ustaw wartość Wyłączny czas trwania i upewnij się, że nie jest to %, aby uzyskać nieprzetworzone wartości czasu trwania. Na koniec, dla parametru Tooltip ustaw najwcześniejszy Czas rozpoczęcia.

Po skompilowaniu wizualizacji upewnij się, że sortujesz według najwcześniejszego czasu rozpoczęcia rosnącego, aby zobaczyć kolejność występowania zdarzeń.

Zrzut ekranu przedstawiający diagnostykę zapytań z tabelą śladów i skumulowanym wykresem słupkowym czasu trwania według kategorii i identyfikatora.

Chociaż dokładne potrzeby mogą się różnić, ta kombinacja wykresów jest dobrym miejscem, aby rozpocząć przeglądanie wielu plików diagnostycznych i w wielu celach.

Interpretowanie wizualizacji

Jak wspomniano wcześniej, diagnostyka zapytań może pomóc w udzieleniu odpowiedzi na wiele pytań. Dwa najczęściej zadawane pytania to czas spędzony i jakie zapytanie jest wysyłane do źródła.

Zrozumienie, w jaki sposób wykorzystywany jest czas, jest proste i wygląda podobnie w przypadku większości konektorów. Jednak jak wspomniano gdzie indziej, w zależności od łącznika są widoczne drastycznie różne możliwości. Na przykład wiele łączników opartych na protokole ODBC nie udostępnia dokładnego rekordu zapytania, które Power Query wysyła do sterownika ODBC.

Aby zobaczyć, jak poświęcany jest czas, przejrzyj utworzone wcześniej wizualizacje.

Ponieważ wartości czasu dla przykładowych zapytań użytych tutaj są bardzo małe, jeśli chcesz pracować ze sposobem, w jaki Power BI raportuje czas, lepiej jest przekonwertować kolumnę Exclusive Duration na sekundy w edytorze Power Query. Po wykonaniu tej konwersji możesz przyjrzeć się wykresowi i zrozumieć, gdzie jest spędzany czas.

W przypadku wyników OData poniższa ilustracja pokazuje, że większość czasu poświęca się na pobieranie danych ze źródła. Wybranie elementu Źródło danych na legendzie spowoduje wyświetlenie wszystkich różnych operacji związanych z wysyłaniem zapytania do źródła danych.

Zrzut ekranu przedstawiający diagnostykę zapytań OData ze szczegółową tabelą śladów i wykresem czasu trwania wyróżniającym czas źródła danych.

Jeśli wykonasz wszystkie te same operacje i utworzysz podobne wizualizacje, ale użyjesz śladów SQL zamiast tych odATA, zobaczysz, jak te dwa źródła danych są porównywane.

Zrzut ekranu przedstawiający tabelę szczegółowych śladów z ocenami SQL i wykresem porównującym wyłączny czas trwania według identyfikatora i kategorii.

Jeśli wybierzesz tabelę źródła danych, podobnie jak w przypadku diagnostyki ODATA, zobaczysz, że pierwsza ocena (2.3 na tym obrazie) wysyła zapytania metadanych, a druga ocena pobiera dane, które cię interesują. Ten przykład pobiera małe ilości danych, więc pobieranie danych zajmuje niewielką ilość czasu (mniej niż dziesiąta sekundy dla całej drugiej oceny, z mniejszą niż dwudziestą sekundą w przypadku pobierania danych), ale ta szybkość nie jest prawdziwa we wszystkich przypadkach.

Jak wcześniej, wybierz kategorię Źródło danych na legendzie, aby wyświetlić emitowane zapytania.

Przeanalizuj dane

Przyglądanie się ścieżkom

Podczas badania tych danych możesz zauważyć, że czas spędzony wydaje się nietypowy. Na przykład w zapytaniu OData może zostać wyświetlone zapytanie źródła danych o następującej wartości:

Request:
https://services.odata.org/V4/Northwind/Northwind.svc/Customers?$filter=ContactTitle%20eq%20%27Sales%20Representative%27&$select=CustomerID%2CCountry HTTP/1.1
Content-Type: application/json;odata.metadata=minimal;q=1.0,application/json;odata=minimalmetadata;q=0.9,application/atomsvc+xml;q=0.8,application/atom+xml;q=0.8,application/xml;q=0.7,text/plain;q=0.7

<Content placeholder>

Response:
Content-Type: application/json;odata.metadata=minimal;q=1.0,application/json;odata=minimalmetadata;q=0.9,application/atomsvc+xml;q=0.8,application/atom+xml;q=0.8,application/xml;q=0.7,text/plain;q=0.7
Content-Length: 435

<Content placeholder>

To zapytanie źródła danych jest skojarzone z operacją, która zajmuje tylko 1% wyłącznego czasu trwania. Tymczasem jest podobny:

Request:
GET https://services.odata.org/V4/Northwind/Northwind.svc/Customers?$filter=ContactTitle eq 'Sales Representative'&$select=CustomerID%2CCountry HTTP/1.1

Response:
https://services.odata.org/V4/Northwind/Northwind.svc/Customers?$filter=ContactTitle eq 'Sales Representative'&$select=CustomerID%2CCountry
HTTP/1.1 200 OK

To zapytanie źródła danych jest skojarzone z operacją, która zajmuje prawie 75% wyłącznego czasu trwania. Jeśli włączysz ścieżkę, odkryjesz, że ten ostatni jest w rzeczywistości dzieckiem byłego. To ustalenie oznacza, że pierwsze zapytanie samo w sobie zajmuje niewiele czasu, a rzeczywisty czas pobierania danych jest mierzony przez zapytanie inner.

Te wartości są skrajne, ale mieszczą się w zakresie tego, co można spotkać.