Visualización e interpretación de diagnósticos de consultas en Power BI
Introducción
Una vez que haya grabado los diagnósticos que desea usar, el siguiente paso consiste en interpretar lo que dicen.
Resulta útil saber bien lo que significa exactamente cada columna del esquema de diagnóstico de consultas, lo que no repetiremos en este breve tutorial. Encontrará información completa al respecto aquí.
En general, al compilar visualizaciones, es mejor usar la tabla detallada completa. Porque, independientemente de cuántas filas haya, lo que probablemente esté viendo es algún tipo de representación de cómo se suma el tiempo invertido en recursos diferentes o cuál era la consulta nativa emitida.
Como mencionamos en nuestro artículo sobre cómo grabar los diagnósticos, estamos trabajando con los seguimientos de OData y SQL para la misma tabla (o casi): la tabla Customers (Clientes) de Northwind. En concreto, nos centraremos en la pregunta común de nuestros clientes y uno de los conjuntos de seguimientos más fáciles de interpretar: la actualización completa del modelo de datos.
Creación de las visualizaciones
Cuando vaya examinando los seguimientos, hay muchas maneras de evaluarlos. En este artículo, nos centraremos en una división de dos visualizaciones: una para mostrar los detalles que le interesan y otra para examinar fácilmente las contribuciones de tiempo de varios factores. Para la primera visualización, se usa una tabla. Puede elegir los campos que quiera, pero los recomendados para obtener fácilmente una visión general de lo que sucede son:
- Id
- Start Time
- Consultar
- Step
- Consulta de origen de datos
- Duración exclusiva (%)
- Recuento de filas
- Categoría
- Es consulta de usuario
- Path
Para la segunda visualización, una opción consiste en usar un gráfico de columnas apiladas. En el parámetro "Eje", es recomendable usar "ID" o "Paso". Si estamos viendo la actualización, porque no tiene nada que ver con los pasos del propio Editor, probablemente solo queramos ver "ID". Para el parámetro "Leyenda", debe establecer "Categoría" u "Operación" (según el nivel de detalle que desee). Para "Valor", establezca "Duración exclusiva" (y asegúrese de que no sea el %, de modo que obtenga el valor de duración sin procesar). Por último, para la información sobre herramientas, establezca "Hora de inicio más temprana".
Una vez compilada la visualización, asegúrese de ordenar por "Hora de inicio más temprana" de manera ascendente para poder pueda ver el orden en que suceden las cosas.
Aunque sus necesidades exactas pueden diferir, esta combinación de gráficos es un buen punto de inicio para examinar numerosos archivos de diagnóstico y para diversos fines.
Interpretación de las visualizaciones
Como se mencionó anteriormente, hay muchas preguntas que puede intentar responder con diagnósticos de consulta, pero las dos que vemos con más frecuencia son las que sirven para preguntar cómo se invierte el tiempo y para preguntar lo que la consulta envió al origen.
Preguntar cómo se invierte el tiempo es fácil y será similar para la mayoría de los conectores. Una cuestión a tener en cuenta con los diagnósticos de consultas, como se mencionó en otro apartado, es que verá funcionalidades drásticamente diferentes en función del conector. Por ejemplo, muchos conectores basados en ODBC no tendrán una grabación precisa de qué consulta se envía al sistema back-end real, ya que Power Query solo ve lo que envía al controlador ODBC.
Si queremos ver cómo se invierte el tiempo, solo hace falta ver las visualizaciones que creamos anteriormente.
Ahora, puesto que los valores de tiempo de las consultas de ejemplo que estamos usando aquí son tan pequeños, si queremos trabajar con la forma en que Power BI informa del tiempo, es mejor si se convierte la columna Duración exclusiva a "Segundos" en el editor de Power Query. Cuando hacemos esta conversión, podemos ver nuestro gráfico y obtener una idea razonable de dónde se invierte el tiempo.
Para los resultados de OData, vemos en la imagen que la gran mayoría del tiempo se ha dedicado a recuperar los datos del origen; si seleccionamos el elemento "Origen de datos" en la leyenda, nos muestra todas las distintas operaciones relacionadas con el envío de una consulta al origen de datos.
Si realizamos todas las mismas operaciones y compilamos visualizaciones similares, pero con los seguimientos de SQL en lugar de los de ODATA, podemos ver cómo se comparan los dos orígenes de datos.
Si seleccionamos la tabla Origen de datos, como con los diagnósticos de ODATA, podemos ver que la primera evaluación (2.3 en esta imagen) emite consultas de metadatos, y la segunda evaluación realmente recupera los datos que nos interesan. Puesto que en este caso estamos recuperando pequeñas cantidades de datos, los datos extraídos tardan poco tiempo (menos de una décima de segundo para que se produzca la segunda evaluación completa, con menos de una vigésima parte de un segundo para la recuperación de datos), pero esto no será cierto en todos los casos.
Como se ha indicado anteriormente, podemos seleccionar la categoría "Origen de datos" en la leyenda para ver las consultas emitidas.
Profundizar en los datos
Examinar las rutas de acceso
Al examinar esto, si parece que el tiempo invertido es extraño; por ejemplo, en la consulta de OData, es posible que vea que hay una consulta de origen de datos con el siguiente valor:
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>
Esta consulta de origen de datos está asociada a una operación que solo ocupa, por ejemplo, el 1 % de la duración exclusiva. Por otra parte, hay una similar:
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
Esta consulta de origen de datos está asociada a una operación que ocupa casi el 75 % de la duración exclusiva. Si activa la Ruta de acceso, descubrirá que este último es realmente un elemento secundario del primero. Esto significa que la primera consulta básicamente agregó una pequeña cantidad de tiempo por sí sola, y la consulta "interna" realiza un seguimiento de la recuperación de datos real.
Estos valores son extremos, pero quedan dentro de los límites de lo que se puede ver.