Azure Data Explorer (Kusto)

Resumen

Elemento Descripción
Estado de la versión Disponibilidad general
Productos Excel
Power BI (Modelos semánticos)
Power BI (Flujos de datos)
Fabric (Flujo de datos Gen2)
Power Apps (Flujos de datos)
Dynamics 365 Customer Insights
Tipos de autenticación admitidos Cuenta de organización
Documentación de Referencia de las Funciones

Nota:

Algunas capacidades pueden estar presentes en un producto, pero otras no, debido a los programas de implementación y las capacidades específicas del host.

Requisitos previos

Funcionalidades admitidas

  • Importar
  • DirectQuery (modelos semánticos de Power BI)
  • Opciones avanzadas
    • Limitar el número de registro de resultados de consulta
    • Limitar el tamaño de los datos del resultado de la consulta (en bytes)
    • Deshabilitar el truncamiento del conjunto de resultados
    • Instrucciones de establecimiento adicionales

Conexión a Azure Data Explorer desde Power Query Desktop

Para conectar a Azure Data Explorer desde Power Query Desktop:

  1. Seleccione Azure Data Explorer (Kusto) en la experiencia de obtención de datos. La experiencia de obtención de datos en Power Query Desktop varía entre las aplicaciones. Para obtener más información sobre la experiencia de obtención de datos de Power Query Desktop para la aplicación, vaya a Dónde obtener datos.

  2. En Azure Data Explorer (Kusto), proporcione el nombre del clúster de Azure Data Explorer. En este ejemplo, use https://help.kusto.windows.net para acceder al clúster de ayuda de ejemplo. Para otros clústeres, la dirección URL tiene el formato https://<NombreClúster>.<Región>.kusto.windows.net.

    También puede seleccionar una base de datos hospedada en el clúster al que se está conectando, y una de las tablas de la base de datos, o una consulta similar a StormEvents | take 1000.

  3. Si desea usar opciones avanzadas, seleccione la opción y escriba los datos que se van a usar con esa opción. Más información: Conectar con opciones avanzadas

    Nota:

    Es posible que tenga que desplazarse hacia abajo para mostrar todas las opciones avanzadas y la selección de conectividad de datos.

  4. Seleccione el modo de conectividad de datos Importar o DirectQuery (solo Power BI Desktop). Más información: Cuándo usar el modo Importar o Direct Query

  5. Seleccione OK (Aceptar) para continuar.

    Captura de pantalla del cuadro de diálogo de Azure Data Explorer (Kusto), con la dirección URL del clúster especificada.

  6. Si no dispone de una conexión al clúster de ayuda, seleccione Iniciar sesión. Inicie sesión con una cuenta de organización y, luego, seleccione Conectar.

    Captura de pantalla del cuadro de diálogo de inicio de sesión de Azure Data Explorer, con la cuenta profesional lista para iniciar sesión.

  7. En Navegador, seleccione la información de base de datos que desee y después elija Cargar para cargar los datos o Transformar datos para seguir transformando los datos en el editor de Power Query. En este ejemplo, StormEvents se seleccionó en la base de datos Samples.

    Captura de pantalla del navegador abierto y que contiene los datos de StormEvents en la base de datos de ejemplos.

Conexión a Azure Data Explorer desde Power Query Online

Para conectar a Azure Data Explorer desde Power Query Online:

  1. Seleccione la opción Azure Data Explorer (Kusto) en la experiencia de obtención de datos. Las distintas aplicaciones tienen diferentes formas de obtener datos en Power Query Online. Para obtener más información sobre cómo acceder a la experiencia de obtención de datos de Power Query Online desde la aplicación, vaya a Dónde obtener datos.

    Captura de pantalla de la ventana Obtener datos con Azure Data Explorer enfatizado.

  2. En Conectar a origen de datos, proporcione el nombre del clúster de Azure Data Explorer. En este ejemplo, use https://help.kusto.windows.net para acceder al clúster de ayuda de ejemplo. Para otros clústeres, la dirección URL tiene el formato https://<NombreClúster>.<Región>.kusto.windows.net.

    También puede seleccionar una base de datos hospedada en el clúster al que se está conectando, y una de las tablas de la base de datos, o una consulta similar a StormEvents | take 1000.

    Captura de pantalla de la página Elegir origen de datos de Azure Data Explorer (Kusto), con la dirección URL del clúster especificada.

  3. Si desea usar opciones avanzadas, seleccione la opción y escriba los datos que se van a usar con esa opción. Más información: Conectar con opciones avanzadas

  4. Si es necesario, seleccione la puerta de enlace de datos local en Puerta de enlace de datos .

  5. Si no dispone de una conexión al clúster de ayuda, seleccione Iniciar sesión. Inicie sesión con una cuenta de organización.

  6. Una vez que haya iniciado sesión correctamente, seleccione Siguiente.

  7. En la página Elegir datos, seleccione la información de base de datos que desee y después elija Transformar datos o Siguiente para seguir transformando los datos en el editor de Power Query. En este ejemplo, StormEvents se seleccionó en la base de datos Samples.

    Captura de pantalla de la página Elegir datos, que contiene los datos de StormEvents en la base de datos de ejemplos.

Conectarse mediante las opciones avanzadas

Tanto el espacio de trabajo de Power Query como Power Query Online proporcionan un conjunto de opciones avanzadas que puede agregar a la consulta de ser necesario.

En la siguiente tabla se enumeran todas las opciones avanzadas que puede configurar en el espacio de trabajo de Power Query y en Power Query Online.

Opción avanzada Descripción
Limitar el número de registro de resultados de consulta Número máximo de registros que se van a devolver en el resultado.
Limitar el tamaño de los datos del resultado de la consulta (en bytes) Tamaño máximo de los datos en bytes que se van a devolver en el resultado.
Deshabilitar el truncamiento del conjunto de resultados Habilite o deshabilite el truncamiento de resultados mediante la opción notruncation de la solicitud.
Instrucciones SET adicionales Establece las opciones de consulta para la duración de la consulta. Las opciones de consulta controlan cómo se ejecuta una consulta y devuelve los resultados. Varias instrucciones SET se pueden separar por punto y coma.

Para obtener información sobre las opciones avanzadas adicionales que no están disponibles en la interfaz de usuario de Power Query, vaya a Configuración de las opciones del conector de Azure Data Explorer en una consulta M.

Cuándo usar el modo Importar o Direct Query

En el modo de importación, los datos se trasladan a Power BI. En el modo DirectQuery, los datos se consultan directamente desde el clúster.

Use el modo de importación si:

  • El conjunto de datos es pequeño.
  • No necesita datos casi en tiempo real.
  • Los datos ya están agregados o si realiza una agregación en Kusto.

Use el modo DirectQuery si:

  • El conjunto de datos es muy grande.
  • Necesita datos casi en tiempo real.

Para obtener más información sobre el uso de DirectQuery, vaya a Acerca del uso de DirectQuery en Power BI.

Sugerencias para usar el conector de Azure Data Explorer para consultar datos

En las secciones siguientes se incluyen sugerencias y trucos para usar el lenguaje de consulta Kusto con Power Query.

Consultas complejas en Power BI

Las consultas complejas se expresan más fácilmente en Kusto que en Power Query. Deben implementarse como funciones de Kusto y se invocan en Power BI. Este método es necesario cuando DirectQuery se usa con instrucciones let en la consulta Kusto. Como Power BI combina dos consultas y las instrucciones let no se pueden usar con el operador join, pueden producirse errores de sintaxis. Por lo tanto, guarde cada parte de la combinación como una función Kusto y permita que Power BI combine estas dos funciones.

Simulación de un operador relativo de fecha y hora

Power Query no contiene un operador relativo de fecha y hora como ago(). Para simular ago(), use una combinación de las funciones M DateTime.FixedLocalNow y #duration de Power Query.

En lugar de esta consulta con el operador ago():

    StormEvents | where StartTime > (now()-5d)
    StormEvents | where StartTime > ago(5d)

Use la consulta equivalente siguiente:

let
    Source = AzureDataExplorer.Contents("help", "Samples", "StormEvents", []),
    #"Filtered Rows" = Table.SelectRows(Source, each [StartTime] > (DateTime.FixedLocalNow()-#duration(5,0,0,0)))
in
    #"Filtered Rows"

Configuración de las opciones del conector de Azure Data Explorer en una consulta M

Puede configurar las opciones del conector de Azure Data Explorer desde el editor avanzado de Power Query en el lenguaje de consulta M. Con estas opciones, puede controlar la consulta generada que se envía al clúster de Azure Data Explorer.

let
    Source = AzureDataExplorer.Contents("help", "Samples", "StormEvents", [<options>])
in
    Source

Puede usar cualquiera de las siguientes opciones en la consulta M:

Opción Ejemplo Descripción
MaxRows [MaxRows=300000] Agrega a la consulta la instrucción para establecer truncationmaxrecords. Invalida el número máximo predeterminado de registros que una consulta puede devolver al autor de la llamada (truncamiento).
MaxSize [MaxSize=4194304] Agrega a la consulta la instrucción para establecer truncationmaxsize. Invalida el tamaño máximo predeterminado de los datos que una consulta puede devolver al autor de la llamada (truncamiento).
NoTruncate [NoTruncate=true] Agrega a la consulta la instrucción para establecer notruncation. Permite suprimir el truncamiento de los resultados de la consulta que se devuelven al autor de la llamada.
AdditionalSetStatements [AdditionalSetStatements="set query_datascope=hotcache"] Agrega a la consulta las instrucciones de establecimiento proporcionadas. Estas instrucciones se utilizan para establecer las opciones de consulta mientras dure la consulta. Las opciones de consulta controlan cómo se ejecuta una consulta y devuelve los resultados.
CaseInsensitive [CaseInsensitive=true] Hace que el conector genere consultas que no distinguen mayúsculas de minúsculas: las consultas usarán el operador =~ en lugar del operador == al comparar valores.
ForceUseContains [ForceUseContains=true] Hace que el conector genere consultas que utilizan contains en lugar del valor predeterminado has al trabajar con campos de texto. Aunque has es mucho más eficaz, no controla las subcadenas. Para más información sobre la diferencia entre los dos tipos de operadores, consulte los operadores de cadena.
Tiempo de espera [Timeout=#duration(0,10,0,0)] Configura el tiempo de espera del cliente y del servidor de la consulta con la duración proporcionada.
ClientRequestIdPrefix [ClientRequestIdPrefix="MyReport"] Configura un prefijo ClientRequestId para todas las consultas enviadas por el conector. Esto permite identificar las consultas en el clúster como procedentes de un informe o origen de datos específicos.

Nota:

Puede combinar varias opciones para lograr el comportamiento necesario: [NoTruncate=true, CaseInsensitive=true]

Alcance de los límites de la consulta Kusto

De manera predeterminada, las consultas Kusto devuelven hasta 500 000 filas o 64 MB, como se describe en los límites de consulta. Para reemplazar estos valores predeterminados, use las opciones avanzadas en la ventana de conexión de Azure Data Explorer (Kusto):

Opciones avanzadas.

Estas opciones emiten instrucciones SET con la consulta para cambiar los límites de consulta predeterminados:

  • Limitar el número de registros de los resultados de la consulta genera un set truncationmaxrecords
  • Limitar el tamaño de los datos de los resultados de la consulta en Bytes genera un set truncationmaxsize
  • Deshabilitar el truncamiento del conjunto de resultados genera un set notruncation

Distinción entre mayúsculas y minúsculas

De forma predeterminada, el conector genera consultas que usan el operador ==, que distingue entre mayúsculas y minúsculas, al comparar valores de cadena. Si los datos no distinguen mayúsculas de minúsculas, este no es el comportamiento deseado. Para cambiar la consulta generada, use la opción CaseInsensitive del conector:

let
    Source = AzureDataExplorer.Contents("help", "Samples", "StormEvents", [CaseInsensitive=true]),
    #"Filtered Rows" = Table.SelectRows(Source, each [State] == "aLaBama")
in
    #"Filtered Rows"

Uso de los parámetros de consulta

Puede usar los parámetros de consulta para modificar la consulta de manera dinámica.

Uso de un parámetro de consulta en los pasos de la consulta

Puede usar un parámetro de consulta en cualquier paso de la consulta que lo admita. Por ejemplo, filtre los resultados en función del valor de un parámetro. En este ejemplo, seleccione el menú desplegable del lado derecho de la columna State en el editor de Power Query, seleccione Filtros de texto>Igual a y, a continuación, seleccione ALABAMA en Mantener filas donde "Estado".

Filtre los resultados con un parámetro.

Proporcionar parámetros a una función de Azure Data Explorer

Las funciones de Kusto son una excelente manera de mantener consultas complejas del lenguaje de consulta Kusto (KQL). Se recomienda usar funciones en lugar de insertar KQL en Power Query. La principal ventaja de usar la función es que la lógica se mantiene una vez en un entorno que es fácil de crear y probar.

Las funciones también pueden recibir parámetros y, por tanto, agregar una gran flexibilidad al usuario de Power BI. Power BI tiene muchas maneras de segmentar los datos. Pero todos los filtros y segmentaciones se agregan después del KQL original y, en muchos casos, querrá usar el filtrado en una fase temprana de la consulta. El uso de funciones y parámetros dinámicos es una manera muy eficaz de personalizar la consulta final.

Crear una función

Puede crear la siguiente función en cualquier clúster de Azure Data Explorer al que tenga acceso, incluido un clúster gratuito. La función devuelve la tabla SalesTable del clúster de ayuda, filtrada por transacciones de ventas mayores o menores que un número proporcionado por el usuario del informe.

.create-or-alter  function LargeOrSmallSales(Cutoff:long,Op:string=">")
{
    cluster("help").database("ContosoSales").SalesTable
    | where  (Op==">" and SalesAmount >= Cutoff) or (Op=="<"  and SalesAmount <= Cutoff)
}

Después de crear la función, puede probarla mediante:

LargeOrSmallSales(2000,">")
| summarize Sales=tolong(sum(SalesAmount)) by Country

También puede probarla mediante:

LargeOrSmallSales(20,"<")
| summarize Sales=tolong(sum(SalesAmount)) by Country
Uso de la función en Power BI
  1. Conéctese al clúster donde creó la función.

  2. En el navegador de Power Query, seleccione la función en la lista de objetos. El conector analiza los parámetros y los presenta encima de los datos del lado derecho del navegador.

    Captura de pantalla con los parámetros Cutoff y Op mostrados encima de los datos del navegador.

  3. Agregue valores a los parámetros y seleccione Aplicar.

  4. Una vez que aparezca la vista previa, seleccione Transformar datos.

  5. Una vez en el editor de Power Query, cree dos parámetros, uno para el valor de límite y otro para el operador.

  6. Vuelva a la consulta LargeOrSmallSales y reemplace los valores por los parámetros de consulta en la barra de fórmulas.

    Captura de pantalla con la función LargeOrSmallSales, con énfasis en los parámetros Cutoff_Param y Op_Param de la barra de fórmulas.

  7. En el editor, cree dos tablas estáticas (Escribir datos) para proporcionar opciones para los dos parámetros. Para el límite, puede crear una tabla con valores como 10, 50, 100, 200, 500, 1000, 2000. Para Op, una tabla con dos valores de texto < y >.

  8. Las dos columnas de las tablas deben enlazarse a los parámetros de consulta mediante la selección Enlazar a parámetros.

    Captura de pantalla con Op enlazado al parámetro Op_Param.

El informe final incluirá segmentaciones para las dos tablas estáticas y los objetos visuales de las ventas de resumen.

Captura de pantalla de Power BI con las selecciones de valor de Cutoff y Op que se muestran junto a la tabla.

La tabla base se filtra primero y, a continuación, se agrega.

Uso de un parámetro de consulta en los detalles de conexión

Use un parámetro de consulta para filtrar la información de la consulta y optimizar el rendimiento de las consultas.

En el Editor avanzado:

  1. Busque la sección siguiente de la consulta:

    Source = AzureDataExplorer.Contents("<Cluster>", "<Database>", "<Query>", [])

    Por ejemplo:

    Source = AzureDataExplorer.Contents("Help", "Samples", "StormEvents | where State == 'ALABAMA' | take 100", [])
    
  2. Inserte un parámetro de consulta en la consulta del lenguaje de consulta Kusto (KQL).

    Si pega una consulta KQL directamente en el cuadro de diálogo de conexión, la consulta formará parte del paso de origen en Power Query. Puede insertar parámetros como parte de la consulta mediante el editor avanzado o al editar la instrucción de origen en la barra de fórmulas. Una consulta de ejemplo podría ser StormEvents | where State == ' " & State & " ' | take 100. State es un parámetro y en tiempo de ejecución la consulta será:

    StormEvents | where State == 'ALABAMA' | take 100

  3. Si la consulta contiene comillas, codifíquelas correctamente. Por ejemplo, la siguiente consulta en KQL:

    "StormEvents | where State == "ALABAMA" | take 100"
    

    aparecerá en el Editor avanzado como se muestra a continuación con dos comillas:

     "StormEvents | where State == ""ALABAMA"" | take 100"
    

    Si usa un parámetro, como State, se debe reemplazar por la consulta siguiente, que contiene tres comillas:

    "StormEvents | where State == """ & State & """ | take 100"
    

Use Value.NativeQuery para las características de Azure Data Explorer

Para usar una característica de Azure Data Explorer que no se admita en Power Query, use el método Value.NativeQuery() en Power Query M. Este método inserta un fragmento del lenguaje de consulta Kusto en la consulta generada y también se puede usar para proporcionar más control sobre la consulta ejecutada.

En el ejemplo siguiente se muestra cómo usar la función percentiles en Azure Data Explorer:

let
    StormEvents = AzureDataExplorer.Contents(DefaultCluster, DefaultDatabase){[Name = DefaultTable]}[Data],
    Percentiles = Value.NativeQuery(StormEvents, "| summarize percentiles(DamageProperty, 50, 90, 95) by State")
in
    Percentiles

No use el programador de actualización de Power BI para emitir comandos de control a Kusto

Power BI incluye un programador de actualización de datos que puede emitir consultas periódicamente en un origen de datos. Este mecanismo no debe usarse para programar comandos de control en Kusto, ya que Power BI supone que todas las consultas son de solo lectura.