Uso de Azure Data Factory actividad de comandos para ejecutar comandos de administración de Azure Data Explorer

Azure Data Factory (ADF) es un servicio de integración de datos basado en la nube que le permite realizar una combinación de actividades sobre los datos. Use ADF para crear flujos trabajo controlados por datos y así orquestar y automatizar el movimiento y la transformación de los datos. La actividad Comando de Azure Data Explorer en Azure Data Factory permite ejecutar comandos de administración de Azure Data Explorer dentro de un flujo de trabajo de ADF. En este artículo se enseña cómo crear una canalización con una actividad de búsqueda y una actividad ForEach que contiene una actividad de comando de Azure Data Explorer.

Prerrequisitos

Creación de una canalización

  1. Seleccione la herramienta de lápiz Autor.

  2. Para crear una canalización, seleccione + y, luego, Canalización en la lista desplegable.

    Crear nueva canalización.

Creación de una actividad de búsqueda

La actividad de búsqueda puede recuperar un conjunto de datos de cualquiera de los orígenes de datos compatibles con Azure Data Factory. La salida de la actividad de búsqueda se puede usar en una instrucción ForEach u otra actividad.

  1. En el panel Actividades, en General, seleccione la actividad Búsqueda. Arrástrela y colóquela en el lienzo principal de la derecha.

    Seleccionar actividad de búsqueda.

  2. Ahora, el lienzo contiene la actividad de búsqueda que creó. Use las pestañas situadas debajo del lienzo para cambiar los parámetros pertinentes. En General, cambie el nombre de la actividad.

    Editar actividad de búsqueda.

    Sugerencia

    Haga clic en el área del lienzo vacía para ver las propiedades de la canalización. Use la pestaña General para cambiar el nombre de la canalización. Nuestra canalización se denomina pipeline-4-docs.

Creación de un conjunto de datos de Azure Data Explorer en la actividad de búsqueda

  1. En Settings (Configuración), seleccione el conjunto de datos de Azure Data Explorer creado previamente o seleccione + New (+ Nuevo) para crear un conjunto de datos.

    Agregar conjunto de datos en la configuración de búsqueda.

  2. Seleccione el conjunto de datos Azure Data Explorer (Kusto) en la ventana New Dataset (Nuevo conjunto de datos). Seleccione Continue (Continuar) para agregar el nuevo conjunto de datos.

    Seleccionar nuevo conjunto de datos.

  3. Los nuevos parámetros del conjunto de datos de Azure Data Explorer son visibles en Settings (Configuración). Para actualizar los parámetros, seleccione Edit (Editar).

    Configuración de búsqueda con el conjunto de datos de Azure Data Explorer.

  4. Se abrirá la nueva pestaña AzureDataExplorerTable en el lienzo principal.

    • Seleccione General y edite el nombre del conjunto de datos.
    • Seleccione Connection (Conexión) para editar las propiedades del conjunto de datos.
    • Seleccione Linked service (Servicio vinculado) en la lista desplegable o seleccione + New (+ Nuevo) para crear un servicio vinculado.

    Edición de propiedades del conjunto de datos de Azure Data Explorer.

  5. Al crear un servicio vinculado, se abre la página New Linked Service (Azure Data Explorer) (Nuevo servicio vinculado [Azure Data Explorer]):

    Azure Data Explorer nuevo servicio vinculado.

    • Seleccione Nombre para el servicio vinculado de Azure Data Explorer. En Description (Descripción), agregue una descripción si es necesario.
    • En Connect via integration runtime (Conectar mediante el entorno de ejecución de integración), cambie la configuración actual, si es necesario.
    • En Account selection method (Método de selección de la cuenta), seleccione el clúster mediante dos métodos:
      • Seleccione el botón de radio Desde suscripción de Azure y seleccione su cuenta de suscripción de Azure. A continuación, seleccione el clúster. Tenga en cuenta que la lista desplegable mostrará solo los clústeres que pertenecen al usuario.
      • También puede seleccionar el botón de radio de Enter manually (Escribir manualmente) y especifique su punto de conexión (dirección URL del clúster).
    • Especifique el inquilino.
    • Escriba el Id. de entidad de servicio. Este valor se puede encontrar en el Azure Portal en App Registrations> OverviewApplication (client) ID (Id. de aplicación deinformación general> de registros de aplicaciones [cliente]). La entidad de seguridad debe tener los permisos adecuados, según el nivel de permiso requerido por el comando que se usa.
    • Seleccione el botón Clave de entidad de servicio y especifique Clave de entidad de servicio.
    • Seleccione la base de datos en el menú desplegable. También puede activar la casilla Editar y especificar el nombre de su base de datos.
    • Seleccione Probar conexión para probar la conexión de servicio vinculado que creó. Si puede conectarse a la configuración, aparecerá una marca verde de conexión correcta.
    • Seleccione Finalizar para completar la creación del servicio vinculado.
  6. Cuando haya configurado un servicio vinculado, en AzureDataExplorerTable>Connection (Conexión), agregue el nombre Table (Tabla). Seleccione Preview data (Vista previa de datos), para asegurarse de que los datos se presentan correctamente.

    El conjunto de datos ya está listo y puede seguir editando la canalización.

Adición de una consulta a la actividad de búsqueda

  1. En pipeline-4-docs>Settings (Configuración), agregue una consulta en el cuadro de texto Query (Consulta), por ejemplo:

    ClusterQueries
    | where Database !in ("KustoMonitoringPersistentDatabase", "$systemdb")
    | summarize count() by Database
    
  2. Cambie las propiedades Query timeout (Tiempo de espera de consulta), No truncation (Sin truncamiento) y First row only (Solo la primera fila), según sea necesario. En este flujo, se mantiene el valor predeterminado de Query timeout (Tiempo de espera de la consulta) y se desactivan las casillas.

    Configuración final de la actividad de búsqueda.

Creación de una actividad ForEach

La actividad For-Each se usa para iterar una colección y ejecuta las actividades especificadas en un bucle.

  1. A continuación, agregará una actividad For-Each a la canalización. Esta actividad procesará los datos devueltos por la actividad de búsqueda.

    • En el panel Activities (Actividades), en Iteration & Conditionals (Iteración y condicionales), seleccione la actividad ForEach y arrástrela y suéltela en el lienzo.

    • Dibuje una línea entre la salida de la actividad de búsqueda y la entrada de la actividad ForEach en el lienzo para conectarlas.

      Actividad ForEach.

  2. Seleccione la actividad ForEach en el lienzo. En la pestaña Settings (Configuración):

    • Active la casilla Sequential (Secuencial) para el procesamiento secuencial de los resultados de búsqueda, o déjela desactivada para crear procesamiento paralelo.

    • Establezca el valor de Batch count (Número de lotes).

    • En Items (Elementos), proporcione la siguiente referencia al valor de salida: @activity('Lookup1').output.value.

      Configuración de la actividad ForEach.

Creación de una actividad de comando de Azure Data Explorer dentro de la actividad ForEach

  1. Haga doble clic en la actividad ForEach en el lienzo para abrirla en un nuevo lienzo y especificar las actividades dentro de ForEach.

  2. En el panel Activities (Actividades), en Azure Data Explorer, seleccione la actividad Azure Data Explorer Command (Comando de Azure Data Explorer) y arrástrela y suéltela en el lienzo.

    Actividad de comando de Azure Data Explorer.

  3. En la pestaña Connection (Conexión), seleccione el mismo servicio vinculado creado anteriormente.

    Pestaña de conexión de la actividad de comando de Azure Data Explorer.

  4. En la pestaña Command (Comando), proporcione el siguiente comando:

    .export
    async compressed
    into csv h"http://<storageName>.blob.core.windows.net/data/ClusterQueries;<storageKey>" with (
    sizeLimit=100000,
    namePrefix=export
    )
    <| ClusterQueries | where Database == "@{item().Database}"
    

    El comando indica a Azure Data Explorer que exporte los resultados de una consulta dada a Blob Storage, en formato comprimido. Se ejecuta de forma asincrónica (mediante el modificador async). La consulta dirige la columna de base de datos de cada fila en el resultado de la actividad de búsqueda. El tiempo de espera del comando se puede dejar como está.

    Actividad de comando.

    Nota

    La actividad de comando tiene los siguientes límites:

    • Límite de tamaño: Tamaño de respuesta de 1 MB
    • Límite de tiempo: 20 minutos (valor predeterminado), 1 hora (máximo).
    • Si es necesario, puede anexar una consulta al resultado mediante AdminThenQuery para reducir el tamaño y la hora resultantes.
  5. Ahora la canalización está lista. Para volver a la vista de canalización principal, haga clic en el nombre de la canalización.

    Canalización de comando de Azure Data Explorer.

  6. Seleccione Debug (Depurar) antes de publicar la canalización. El progreso de la canalización se puede supervisar en la pestaña Output (Salida).

    Salida de la actividad de comando de Azure Data Explorer.

  7. Puede usar las opciones Publish All (Publicar todo) y, luego, Add trigger (Agregar desencadenador) para ejecutar la canalización.

Salidas del comando de administración

A continuación se detalla la estructura de la salida de la actividad de comando. Esta salida se puede usar con la siguiente actividad de la canalización.

Valor devuelto de un comando de administración no asincrónico

En un comando de administración no asincrónico, la estructura del valor devuelto es similar a la estructura del resultado de la actividad de búsqueda. El campo count indica el número de registros devueltos. Un campo de matriz fijo value contiene una lista de registros.

{ 
    "count": "2", 
    "value": [ 
        { 
            "ExtentId": "1b9977fe-e6cf-4cda-84f3-4a7c61f28ecd", 
            "ExtentSize": 1214.0, 
            "CompressedSize": 520.0 
        }, 
        { 
            "ExtentId": "b897f5a3-62b0-441d-95ca-bf7a88952974", 
            "ExtentSize": 1114.0, 
            "CompressedSize": 504.0 
        } 
    ] 
} 

Valor devuelto de un comando de administración asincrónica

En un comando de administración asincrónica, la actividad sondea la tabla de operaciones en segundo plano, hasta que la operación asincrónica se completa o agota el tiempo de espera. Por lo tanto, el valor devuelto contendrá el resultado de .show operations OperationId para esa propiedad OperationId dada. Compruebe los valores de las propiedades de estado para comprobar que la operación se ha realizado correctamente.

{ 
    "count": "1", 
    "value": [ 
        { 
            "OperationId": "910deeae-dd79-44a4-a3a2-087a90d4bb42", 
            "Operation": "TableSetOrAppend", 
            "NodeId": "", 
            "StartedOn": "2019-06-23T10:12:44.0371419Z", 
            "LastUpdatedOn": "2019-06-23T10:12:46.7871468Z", 
            "Duration": "00:00:02.7500049", 
            "State": "Completed", 
            "Status": "", 
            "RootActivityId": "f7c5aaaf-197b-4593-8ba0-e864c94c3c6f", 
            "ShouldRetry": false, 
            "Database": "MyDatabase", 
            "Principal": "<some principal id>", 
            "User": "<some User id>" 
        } 
    ] 
}