Compartir a través de


Configure Azure Log Analytics para Power BI

Power BI se integra con Azure Log Analytics para permitir que administradores y propietarios de áreas de trabajo Premium configuren una conexión de Log Analytics a su suscripción de Power BI. En este artículo se describe cómo funciona la integración entre Log Analytics y Power BI, y cómo configurarla para el entorno.

Hay dos elementos para que Azure Log Analytics funcione para Power BI:

  • Configure su suscripción en Azure Portal.
  • Habilite Log Analytics para Power BI en el portal de administrador de Power BI.

Las secciones siguientes lo conducen a través de los pasos a realizar de cada una.

Captura de pantalla del panel de configuración abierto en la pestaña conexiones.

Prerrequisitos

Para poder configurar la integración de Log Analytics desde Power BI, debe crear un área de trabajo de Log Analytics en Azure Portal. También debe conceder permiso en Azure para que el servicio de Power BI escriba registros. Los requisitos exactos son los siguientes:

  • Acceso de colaborador a la suscripción de Azure.
  • Registre el proveedor de recursos "microsoft.insights" en la suscripción de Azure donde recopilará los datos de registro de Power BI.
  • El usuario que configurará la integración de Log Analytics en Power BI debe tener el rol Colaborador de Log Analytics del área de trabajo de Log Analytics. Vea las preguntas más frecuentes sobre soluciones alternativas si no se puede asignar el rol Propietario.

Habilite el proveedor de recursos "microsoft.insights"

Log Analytics necesita que se habilite el proveedor de recursos "microsoft.insights" en el nivel de suscripción de Azure. Los pasos siguientes le guían por el proceso.

  1. Inicie sesión en Azure Portal y seleccione la suscripción que quiere usar con Log Analytics y que contiene las áreas de trabajo de Log Analytics. En la sección Configuración, seleccione Proveedores de recursos, como se muestra en la siguiente imagen.

    Captura de pantalla de las opciones del menú de configuración, que muestra proveedores de recursos seleccionado.

  2. Busque microsoft.insights enProveedores de recursos. Después, seleccione Register (Registrar).

    Captura de pantalla de los proveedores de recursos en el panel principal con Microsoft.insights está registrado.

Establecimiento de permisos

  1. Asegúrese de que el usuario que configure la integración de Log Analytics tenga el rol Colaborador de Log Analytics del área de trabajo de Log Analytics. Al seleccionar Control de acceso (IAM) para la suscripción en Azure Portal y, después, Asignaciones de roles en las selecciones superiores del panel, el usuario actual deberá ver al menos una entrada: Colaborador de Log Analytics para el usuario que configurará Log Analytics:

    Captura de pantalla del panel de control de acceso con el rol resaltado.

Una vez que se han completado estas etapas, finaliza la parte de configuración de Azure Log Analytics. En la sección siguiente se muestra cómo continuar y completar la configuración en el portal de administración de Power BI.

Permita el registro de nivel de área de trabajo desde el portal de administrador

Un administrador de Power BI debe completar el siguiente paso a fin de habilitar Azure Log Analytics para áreas de trabajo de Power BI Premium. Esta configuración permitirá a los administradores de áreas de trabajo de Power BI Premium enviar sus registros de área de trabajo a Azure Log Analytics cuando se hayan cumplido los requisitos previos.

  1. En el Portal de administrador de Power BI, vaya a Configuración de inquilinos > Configuración de auditoría y uso y expanda Conexiones de Azure Log Analytics para administradores del área de trabajo. Para permitir que los administradores del área de trabajo habiliten Log Analytics, cambie el control deslizante a Habilitado y especifique los grupos de seguridad necesarios en Aplicar a, tal como se muestra en la imagen siguiente.

     Captura de pantalla de la configuración del inquilino en el portal de administrador. Las conexiones de Azure Log Analytics para los administradores del área de trabajo se expanden y habilitan.

Configure el registro en un área de trabajo Premium

  1. En el área de trabajo Premium, los administradores pueden habilitar Log Analytics. Para ello, vaya a Configuración como se muestra en la imagen siguiente.

    Captura de pantalla del panel de configuración en un área de trabajo Premium.

  2. En el panel Configuración, seleccione Conexiones de Azure y expanda Log Analytics, como se muestra en la imagen siguiente.

    Captura de pantalla del panel de configuración abierto en la pestaña conexiones, con Log Analytics expandido.

  3. Seleccione la suscripción de Azure, el grupo de recursos y, después, el área de trabajo de Log Analytics configurada en la sección anterior. A continuación, elija Guardar. Cuando se completa correctamente, la sección expandida de Log Analytics de nivel de inquilino tendrá un aspecto similar al de la imagen siguiente.

    Captura de pantalla del panel de configuración abierto en la pestaña conexiones, exhibiendo información de muestra.

Desconexión de Azure Log Analytics

Puede desconectarse de Azure Log Analytics para dejar de enviar registros a Azure. Para desconectarse, en la Configuración de área de trabajo de Power BI, vaya a la configuración de Log Analytics. Seleccione Desconectar de Azure. A continuación, elija Guardar para desconectar.

Captura de pantalla de la advertencia de desconexión en el panel de configuración.

Nota

Cuando se desconecta un área de trabajo de Power BI de Azure Log Analytics, los registros no se eliminan. Los datos permanecen y siguen las directivas de almacenamiento y retención que estableció allí.

Escenarios de uso

Hay muchas maneras en que Azure Log Analytics y Power BI pueden ayudar a resolver los desafíos reales de la organización. Tenga en cuenta lo siguiente.

  • Identificación de períodos de actividad alta o inusual del motor de Analysis Services por capacidad, área de trabajo, informe o usuario.
  • Análisis del rendimiento de las consultas y las tendencias, incluidas las operaciones de DirectQuery externas.
  • Analice la duración de la actualización del modelo semántico, las superposiciones y los pasos de procesamiento.
  • Análisis de las operaciones personalizadas enviadas mediante el punto de conexión XMLA Premium.

Envíe comentarios a la Comunidad de Power BI sobre cómo usa el registro y de que manera esto ayudó a la organización.

Condiciones de error y soluciones

En la tabla siguiente se proporciona una colección de errores comunes, los eventos o configuraciones que los desencadenan y las resoluciones sugeridas.

Condición desencadenadora Tipo Mensaje
No tiene permiso para escribir en el área de trabajo de Log Analytics Error: no se puede continuar Necesita permisos de escritura en esta área de trabajo de Log Analytics para conectarla a Power BI. Póngase en contacto con la persona de la organización que administre las suscripciones de Azure para solucionar este problema.
No tiene permiso para escribir en la cuenta del área de trabajo de Log Analytics Error: no se puede continuar Necesita permisos de escritura en esta área de trabajo de Log Analytics para conectarla a Power BI.
No tiene acceso a ninguna suscripción de Azure Error: no se puede continuar No tiene acceso a ninguna suscripción de Azure. Pida a la persona que administra las suscripciones de Azure de la organización que le conceda acceso de colaborador o superior.
No tiene acceso a ningún área de trabajo de Azure Log Analytics dentro de esa suscripción Error: no se puede continuar No tiene acceso a un área de trabajo de Azure Log Analytics. Pida a la persona que administra las suscripciones de Azure de la organización que le agregue al rol de colaborador o propietario de Log Analytics.
Log Analytics de nivel de área de trabajo deshabilitado al intentar conectarse Información Pida al administrador del inquilino que conceda a los administradores del área de trabajo permiso para conectar áreas de trabajo de Log Analytics.
Log Analytics de nivel de área de trabajo deshabilitado al intentar desconectarse Información El administrador del inquilino ha revocado el permiso para que los administradores del área de trabajo conecten sus propias áreas de trabajo de Azure Log Analytics. Si se desconecta, no podrá conectarse a otra.

Eventos y esquema

Después de habilitar Azure Log Analytics, comienza a registrar las siguientes categorías de eventos. Para obtener más información sobre estos eventos, vea Eventos de seguimiento de Analysis Services.

  • AggregateTableRewriteQuery
  • Comando
  • Deadlock
  • DirectQuery
  • Descubra
  • Error
  • ProgressReport
  • Consultar
  • Inicialización de sesión
  • VertiPaqSEQuery
  • notificación

En la siguiente tabla se describe el esquema.

Propiedad Propiedad de Azure Analysis Services existente Descripción
TimeGenerated Marca de tiempo (UTC) de cuando se generó el registro.
OperationName EventClass_s Evento de seguimiento de Analysis Services asociado al registro. Consulte la página de documentación de eventos de seguimiento de AS para obtener más detalles sobre los posibles eventos para cada categoría.
CorrelationId Identificador de los eventos correlacionados. Se puede utilizar para identificar eventos correlacionados en varias tablas.
PowerBIWorkspaceId Identificador único del área de trabajo que contiene el artefacto sobre el que se opera.
PremiumCapacityId Identificador único de la capacidad Premium en la que se hospeda el artefacto sobre el que se opera.
ApplicationContext ApplicationContext_s Contenedor de propiedades de identificadores únicos que proporcionan detalles sobre la aplicación que ejecuta la solicitud. Por ejemplo, id. de informe.
ApplicationName ApplicationName_s Contiene el nombre de la aplicación cliente que ha creado la conexión con el servidor. Esta columna se rellena con los valores que pasa la aplicación, en lugar de con el nombre que se muestra para el programa.
ArtifactId Identificador único del recurso que registra los datos.
ArtifactKind Tipo de artefacto que registra la operación, por ejemplo, modelo semántico.
CpuTimeMs CPUTime_s Cantidad de tiempo de CPU (en milisegundos) que utiliza el evento.
ArtifactName DatabaseName_s Nombre del artefacto de Power BI que registra esta operación.
LogAnalyticsCategory Único Categoría de eventos de seguimiento de Analysis Services asociada al registro. Consulte la página de documentación de eventos de seguimiento de AS para obtener más detalles sobre los posibles categorías de eventos.
DatasetMode Modo del modelo semántico. Importación, DirectQuery o Composición.
DurationMs Duration_s Cantidad de tiempo (en milisegundos) que tarda la operación.
Usuario User_s Usuario asociado a la operación en ejecución. Se utiliza cuando se debe suplantar la identidad de un usuario final en el servidor.
ExecutingUser EffectiveUsername_s El usuario que ejecuta la operación.
OperationDetailName EventSubclass_s Más información sobre el evento de seguimiento de Analysis Services asociado al registro. Consulte la propiedad "Subclase" de la página de documentación del evento de seguimiento para obtener más detalles sobre los valores posibles, por ejemplo, Comando Empezar.
XmlaObjectPath ObjectPath_s Ruta del objeto. Lista separada por comas de elementos primarios, empezando por el elemento primario del objeto.
PowerBIWorkspaceName Nombre del área de trabajo de Power BI que contiene el artefacto.
StatusCode Error_s Código de estado de la operación. Indica si es correcta o no.
ProgressCounter ProgressTotal_s Contador del progreso.
XmlaProperties RequestProperties_s Propiedades de la solicitud XMLA.
XmlaSessionId SPID_s Identificador de la sesión de Analysis Services.
Level Severity_s Contiene el nivel de gravedad de la operación que se registra. Correcto, Informativo, Advertencia o Error.
Identidad Información sobre el usuario y las notificaciones.
Estado Estado de la operación.
EventText TextData_s Contiene información detallada asociada a la operación, por ejemplo, consulta DAX.
CustomerTenantId Identificador del inquilino de Power BI del cliente.
XmlaRequestId RootActivityId_g Identificador único de la solicitud.
ReplicaId Identificador de réplica que le permitirá identificar la réplica cuando esté habilitada la Escalabilidad horizontal de consulta (QSO). La réplica de lectura y escritura siempre tiene ReplicaId='AAA' y las réplicas de solo lectura tienen ReplicaId a partir de "AAB". Para los modelos semánticos no habilitados para QSO, el ReplicaId es siempre 'AAA'.

Evento ExecutionMetrics

Para cada solicitud Discover, Command y Query, se genera un evento denominado ExecutionMetrics al final de la solicitud. Este evento contiene métricas de ejecución para la solicitud, lo que puede ayudarle a diagnosticar y solucionar problemas de forma más eficaz. El seguimiento ExecutionMetrics se correlaciona con el evento [Discover|Command|Query]End más cercano.

La siguiente consulta KQL recupera los eventos ExecutionMetrics para todas las operaciones de actualización de un modelo semántico durante el último día:

let commands = PowerBIDatasetsWorkspace
    | where TimeGenerated > ago(1d)
    | where ArtifactId =~ "[Semantic Model Id]"
    | where OperationName in ("CommandEnd")
    | where EventText contains "<Refresh"
    | project TimeGenerated, ArtifactId, CommandOperationName = OperationName, XmlaRequestId, CorrelationId, CommandText = EventText;
let executionMetrics = PowerBIDatasetsWorkspace        
    | where OperationName == "ExecutionMetrics"
    | project TimeGenerated, XmlaRequestId, CorrelationId, EventText;
commands
| join kind=leftouter executionMetrics on XmlaRequestId

La siguiente consulta de KQL recupera los eventos que se limitaron durante el último día por área de trabajo, elemento y usuario:

let executionMetrics = PowerBIDatasetsWorkspace
    | where TimeGenerated > ago(1d)    
    | where OperationName == "ExecutionMetrics"    
    | extend eventTextJson = parse_json(EventText)      
    | extend capacityThrottlingMs=toint(eventTextJson.capacityThrottlingMs)
    | where capacityThrottlingMs > 0;
let commands = PowerBIDatasetsWorkspace    
    | where OperationName in ("CommandEnd", "QueryEnd", "DiscoverEnd")    
    | project
        TimeGenerated,
        ExecutingUser,
        ArtifactId,
        PowerBIWorkspaceId,
        CommandOperationName = OperationName,
        XmlaRequestId,
        CorrelationId,
        CommandText = EventText;
commands
| join kind=inner executionMetrics on XmlaRequestId
| project
    TimeGenerated,
    ArtifactId,
    PowerBIWorkspaceId,
    ExecutingUser,
    CommandOperationName,
    XmlaRequestId,
    EventText,
    CommandText,
    capacityThrottlingMs
| summarize countThrottling = count(), avgThrottlingDuration = avg(capacityThrottlingMs) by PowerBIWorkspaceId, ArtifactId, ExecutingUser, CommandOperationName

Las estadísticas se presentan como texto JSON en la propiedad EventText, consulte los ejemplos siguientes.

{
    "timeStart": "2024-03-20T12:39:59.681Z",
    "timeEnd": "2024-03-20T13:01:14.241Z",
    "durationMs": 1274559,    
    "vertipaqJobCpuTimeMs": 156,
    "mEngineCpuTimeMs": 9617484,
    "totalCpuTimeMs": 9618469,
    "executionDelayMs": 10,
    "approximatePeakMemConsumptionKB": 1683409,
    "mEnginePeakMemoryKB": 1676816,
    "tabularConnectionTimeoutMs": 18000000,    
    "refreshParallelism": 16,
    "vertipaqTotalRows": 114,
    "intendedUsage": 2
}

En la tabla siguiente se describen todas las propiedades posibles. No todas las propiedades se emiten en cada evento, ya que el contenido dependerá de la solicitud y del modelo semántico.

Propiedad Descripción
timeStart Marca de tiempo (UTC) del momento de inicio de la solicitud.
timeEnd Marca de tiempo (UTC) del momento de finalización de la solicitud.
durationMs Duración total de la ejecución.
datasourceConnectionThrottleTimeMs Tiempo total de limitación después de alcanzar el límite de conexión del origen de datos. Obtenga más información sobre el número máximo de conexiones simultáneas aquí.
externalQueryExecutionTimeMs Tiempo total invertido en ejecutar todas las consultas de orígenes de datos externos durante la solicitud.
directQueryConnectionTimeMs Tiempo total invertido en crear una nueva conexión de DirectQuery durante la solicitud.
directQueryIterationTimeMs Tiempo total invertido en iterar los resultados devueltos por las consultas de DirectQuery.
directQueryTotalTimeMs Tiempo total invertido en ejecutar y leer todas las consultas de DirectQuery durante la solicitud.
executionDelayMs Tiempo total invertido en esperar a la disponibilidad de los subprocesos del grupo de subprocesos del motor de Analysis Services.
totalCpuTimeMs Tiempo total de CPU de la solicitud.
vertipaqJobCpuTimeMs Tiempo total de CPU invertido por el motor de Vertipaq.
mEngineCpuTimeMs Tiempo total de CPU invertido por el motor de PowerQuery.
queryProcessingCpuTimeMs Tiempo total de CPU invertido por las tareas en el subproceso del grupo de subprocesos de consulta de Analysis Services.
approximatePeakMemoryConsumptionKB Consumo máximo aproximado de memoria total durante la solicitud.
mEnginePeakMemoryKB Tamaño aproximado de la confirmación de memoria máxima (en kilobytes) en todos los contenedores de mashup del motor de PowerQuery.
directQueryTimeoutMs Tiempo de espera asociado a consultas de DirectQuery.
externalQueryTimeoutMs Tiempo de espera asociado a consultas a orígenes de datos externos.
tabularConnectionTimeoutMs Tiempo de espera asociado a conexiones con orígenes de datos tabulares externos (p. ej., SQL).
refreshParallelism MaxParallelism efectivo usado en la solicitud.
vertipaqTotalRows Número total de filas procesadas por el motor de Vertipaq durante una operación de actualización.
queryResultRows Número total de filas devueltas como resultado de la consulta DAX.
directQueryTotalRows Número total de filas leídas de las distintas consultas de DirectQuery.
directQueryRequestCount Número total de consultas del motor de almacenamiento de DirectQuery ejecutadas por el motor DAX.
errorCount Número total de errores para la solicitud actual.
qsoReplicaVersion Versión de réplica para modelos semánticos habilitados para QSO, representados en formato FILETIME.
intendedUsage Uso previsto: valor predeterminado (0); actualización programada o de API (1); actualización a petición (2); actualización del icono del panel o la caché de consultas (3)
commandType Tipo de comando de Analysis Services solicitado por el cliente (por ejemplo, Batch, Instrucción, Copia de seguridad,...)
discoverType Tipo de detección solicitado por el cliente. Consulte EventSubclass para obtener una lista de tipos de detección.
queryDialect Tipo de dialecto usado por el cliente para consultar el servidor: desconocido (-1); MDX (0); DMX (1); SQL (2); DAX (3); JSON (4)
capacityThrottlingMs Tiempo total que se retrasó la solicitud debido a la limitación de capacidad. Obtenga más información sobre la limitación aquí.
  • Todas las duraciones y los tiempos de CPU se indican en milisegundos.
  • Es posible encontrar propiedades adicionales más allá de las descritas en la tabla anterior y se deben considerar como no documentadas y sujetas a cambios.

Consultas KQL de Log Analytics de ejemplo

La siguiente colección de consultas de muestras puede ser útil al usar Azure Log Analytics con Power BI. Se pueden ejecutar directamente en Azure Portal o mediante las API para consultar los datos más recientes, normalmente entre 5 y 10 minutos de antigüedad.

// log count per day for last 30d
PowerBIDatasetsWorkspace
| where TimeGenerated > ago(30d)
| summarize count() by format_datetime(TimeGenerated, 'yyyy-MM-dd')


// average query duration by day for last 30d
PowerBIDatasetsWorkspace
| where TimeGenerated > ago(30d)
| where OperationName == 'QueryEnd'
| summarize avg(DurationMs) by format_datetime(TimeGenerated, 'yyyy-MM-dd')


//query duration percentiles for a single day in 1 hour bins
PowerBIDatasetsWorkspace
| where TimeGenerated >= todatetime('2021-04-28') and TimeGenerated <= todatetime('2021-04-29')
| where OperationName == 'QueryEnd'
| summarize percentiles(DurationMs, 0.5, 0.9) by bin(TimeGenerated, 1h)


// refresh durations by workspace and semantic model for last 30d
PowerBIDatasetsWorkspace
| where TimeGenerated > ago(30d)
| where OperationName == 'CommandEnd'
| where ExecutingUser contains 'Power BI Service'
| where EventText contains 'refresh'
| project PowerBIWorkspaceName, DatasetName = ArtifactName, DurationMs

// query count, distinctUsers, avgCPU, avgDuration by workspace for last 30d
PowerBIDatasetsWorkspace  
| where TimeGenerated > ago(30d)
| where OperationName == "QueryEnd" 
| summarize QueryCount=count()
    , Users = dcount(ExecutingUser)
    , AvgCPU = avg(CpuTimeMs)
    , AvgDuration = avg(DurationMs)
by PowerBIWorkspaceId

Plantilla de informe de Power BI de ejemplo

Explore y obtenga información sobre los datos de Power BI de Azure Log Analytics mediante una plantilla de informe de Power BI de código abierto en GitHub.

Los artículos siguientes pueden ayudarle a obtener más información sobre Power BI y su integración con Azure Log Analytics.