Udostępnij przez


Wizualizowanie i interpretowanie diagnostyki zapytań w usłudze Power BI

Wprowadzenie

Po zarejestrowaniu diagnostyki, której chcesz użyć, następnym krokiem jest możliwość zrozumienia tego, co mówią.

Warto dobrze zrozumieć, co dokładnie oznacza każda kolumna w schemacie diagnostyki zapytań, dlatego nie będziemy się powtarzać w tym krótkim samouczku. Jest tu pełny zapis.

Ogólnie rzecz biorąc, podczas tworzenia wizualizacji lepiej użyć pełnej szczegółowej tabeli. Ponieważ niezależnie od liczby wierszy, na co prawdopodobnie patrzysz, jest to pewnego rodzaju przedstawienie sposobu, w jaki czas spędzony w różnych zasobach się sumuje, albo jakie zapytanie natywne zostało wygenerowane.

Jak wspomniano w naszym artykule dotyczącym rejestrowania diagnostyki, pracuję ze śladami OData i SQL dotyczącymi tej samej tabeli (lub prawie tej samej) — tabeli Customers z bazy danych Northwind. W szczególności skupię się na zwykłych zapytaniach naszych klientów i jednym z łatwiejszych do interpretacji ciągów śladów: pełne odświeżenie modelu danych.

Kompilowanie wizualizacji

Podczas analizowania śladów można je oceniać na wiele sposobów. W tym artykule skoncentrujemy się na dwóch podziałach wizualizacji — jednej, aby pokazać szczegółowe informacje, na których ci zależy, a drugiej, aby łatwo przyjrzeć się wkładowi czasowemu różnych czynników. W pierwszej wizualizacji jest używana tabela. Możesz wybrać dowolne pola, ale te, które są zalecane dla łatwego, ogólnego przeglądu tego, co się dzieje, to:

W przypadku drugiej wizualizacji jedną z opcji jest użycie skumulowanego wykresu kolumnowego. W parametrze "Oś" możesz użyć parametru "Id" lub "Step". Jeśli patrzymy na Odświeżenie, ponieważ nie ma to nic wspólnego z krokami w samym Edytorze, prawdopodobnie chcemy po prostu przyjrzeć się 'Identyfikatorowi'. Dla parametru "Legenda" należy ustawić wartość "Kategoria" lub "Operacja" (w zależności od żądanego stopnia szczegółowości). Dla parametru Value ustaw "Exclusive Duration" i upewnij się, że nie jest to %, aby uzyskać surową wartość czasu trwania. Na koniec dla etykietki narzędzia ustaw wartość "Najwcześniejszy czas rozpoczęcia".

Po utworzeniu wizualizacji upewnij się, że sortujesz rosnąco według "Najwcześniejszy czas rozpoczęcia", aby zobaczyć kolejność zdarzeń.

Wizualizacja szczegółów i agregacji czasu.

Chociaż dokładne potrzeby mogą się różnić, ta kombinacja wykresów jest dobrym miejscem do rozpoczęcia analizy wielu plików diagnostycznych i do wielu celów.

Interpretowanie wizualizacji

Jak wspomniano powyżej, istnieje wiele pytań, na które można odpowiedzieć za pomocą diagnostyki zapytań, ale te dwa, które widzimy, najczęściej pytają, jak poświęcany jest czas i pytają, jakie zapytanie jest wysyłane do źródła.

Zapytanie o to, jak jest wykorzystywany czas, to prosta czynność, która będzie podobna dla większości połączeń. Ostrzeżeniem związanym z diagnostyką zapytań, jak to zostało wspomniane gdzie indziej, jest to, że możesz dostrzec drastycznie różne możliwości w zależności od używanego złącza. Na przykład wiele łączników opartych na ODBC nie będzie miało dokładnego zapisu, jakie zapytanie jest wysyłane do rzeczywistego systemu zaplecza, ponieważ Power Query widzi tylko to, co wysyła do sterownika ODBC.

Jeśli chcemy zobaczyć, jak spędzasz czas, możemy po prostu przyjrzeć się wizualizacjom utworzonym powyżej.

Teraz, ponieważ wartości czasu dla przykładowych zapytań używanych w tym miejscu są tak małe, jeśli chcemy pracować z czasem raportowania usługi Power BI, lepiej jest przekonwertować kolumnę Wyłączny czas trwania na wartość "Sekundy" w edytorze Power Query. Po zakończeniu tej konwersji możemy przyjrzeć się naszemu wykresowi i uzyskać przyzwoity pomysł na to, gdzie jest spędzany czas.

W przypadku moich wyników OData widzę na obrazie, że zdecydowana większość czasu spędziła na pobieraniu danych ze źródła — jeśli wybierzę element "Źródło danych" na legendzie, pokazuje mi wszystkie różne operacje związane z wysyłaniem zapytania do źródła danych.

Podsumowanie diagnostyki zapytań OData Northwind.

Jeśli wykonamy wszystkie te same operacje i utworzymy podobne wizualizacje, ale ze śladami SQL zamiast tych ODATA, zobaczymy, jak porównać te dwa źródła danych!

OData Northwind Query Diagnostics Summary with SQL traces (Podsumowanie diagnostyki zapytań OData Northwind za pomocą śladów SQL).

Jeśli wybierzemy tabelę Źródło danych, tak jak w przypadku diagnostyki ODATA, możemy zauważyć, że pierwsza ocena (2.3 na tym obrazie) generuje zapytania metadanych, podczas gdy druga ocena faktycznie pobiera interesujące nas dane. Ponieważ w tym przypadku pobieramy małe ilości danych, dane pobierane z powrotem zajmują niewielką ilość czasu (mniej niż dziesiąta sekundy dla całej drugiej oceny, z mniej niż dwudziestą sekundą w przypadku samego pobierania danych), ale nie będzie to prawdziwe we wszystkich przypadkach.

Jak powyżej, możemy wybrać kategorię "Źródło danych" na legendzie, aby wyświetlić emitowane zapytania.

Zagłębianie się w dane

Przyglądanie się ścieżkom

Kiedy na to patrzysz, jeśli czas spędzony wydaje się dziwny — na przykład w zapytaniu OData może być wyświetlone zapytanie źródła danych z następującą 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% czasu trwania wyłączności. 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% czasu trwania wyłączności. Jeśli włączysz ścieżkę, odkryjesz, że ten ostatni jest w rzeczywistości dzieckiem byłego. Oznacza to, że pierwsze zapytanie w zasadzie dodało niewielką ilość czasu na własną rękę, a rzeczywiste pobieranie danych jest śledzone przez zapytanie "wewnętrzne".

Są to skrajne wartości, ale znajdują się one w granicach tego, co można zobaczyć.