Compartir vía


Inicio rápido: Creación de un Azure Data Factory mediante PowerShell

SE APLICA A: Azure Data Factory Azure Synapse Analytics

Sugerencia

Data Factory en Microsoft Fabric es la próxima generación de Azure Data Factory, con una arquitectura más sencilla, inteligencia artificial integrada y nuevas características. Si no está familiarizado con la integración de datos, comience con Fabric Data Factory. Las cargas de trabajo de ADF existentes pueden actualizarse a Fabric para acceder a nuevas funcionalidades en ciencia de datos, análisis en tiempo real e informes.

En este inicio rápido se describe cómo usar PowerShell para crear una Azure Data Factory. La canalización que creas en esta fábrica de datos copia datos de una carpeta a otra en un almacenamiento de blobs en Azure. Para obtener un tutorial sobre cómo transform datos mediante Azure Data Factory, consulte Tutorial: Transformar datos mediante Spark.

Nota:

En este artículo no se proporciona una introducción detallada del servicio Data Factory. Para obtener una introducción al servicio Azure Data Factory, consulte Introducción a Azure Data Factory.

Requisitos previos

suscripción de Azure

Si no tiene una suscripción de Azure, cree una cuenta free antes de comenzar.

roles de Azure

Para crear instancias de Data Factory, la cuenta de usuario que usa para iniciar sesión en Azure debe ser miembro del rol contributor o owner o un administrator de la suscripción de Azure. Para ver los permisos que tiene en la suscripción, vaya al portal Azure, seleccione el nombre de usuario en la esquina superior derecha, seleccione "... icono " para obtener más opciones y, a continuación, seleccione My permissions. Si tiene acceso a varias suscripciones, elija la correspondiente.

Para crear y administrar recursos secundarios para Data Factory incluidos los conjuntos de datos, servicios vinculados, canalizaciones, desencadenadores y entornos de ejecución de integración, se aplican los siguientes requisitos:

  • Para crear y administrar recursos secundarios en el portal de Azure, debe pertenecer al rol Data Factory Contributor en el nivel de grupo de recursos o superior.
  • Para crear y administrar recursos secundarios con Powershell o el SDK, el rol de Colaborador en el nivel de recurso u otro nivel superior es suficiente.

Para obtener instrucciones de ejemplo sobre cómo agregar un usuario a un rol, consulte el artículo sobre la adición de roles.

Para más información, consulte los siguientes artículos:

cuenta de Azure Storage

En esta guía de inicio rápido, use una cuenta de Azure Storage (en concreto Blob Storage) de uso general como almacén de datos de origen y destino. Si no tiene una cuenta de Azure Storage de uso general, consulte Crear una cuenta de almacenamiento para crear una.

Obtención del nombre de la cuenta de almacenamiento

Necesita el nombre de la cuenta de Azure Storage para este inicio rápido. El siguiente procedimiento especifica los pasos necesarios para obtener el nombre de una cuenta de almacenamiento:

  1. En un explorador web, vaya al portal Azure e inicie sesión con su nombre de usuario y contraseña de Azure.
  2. En el menú Azure portal, seleccione Todos los servicios, seleccione Storage>Cuentas de almacenamiento. También puede buscar y seleccionar cuentas de almacenamiento desde cualquier página.
  3. En la página Cuentas de Storage, filtre por su cuenta de almacenamiento (si fuera necesario) y, después, seleccione su cuenta de Storage.

También puede buscar y seleccionar cuentas de almacenamiento desde cualquier página.

Creación de un contenedor de blobs

En esta sección, creará un contenedor de blobs denominado adftutorial en Azure Blob Storage.

  1. En la página de la cuenta de almacenamiento, seleccione Información general>Contenedores.

  2. En la barra de herramientas de la página <Nombre de cuenta> - Contenedores, seleccione Contenedor.

  3. En el cuadro de diálogo Nuevo contenedor, escriba adftutorial para el nombre y seleccione Aceptar. La página <Nombre de cuenta> - Contenedores se actualiza para incluir adftutorial en la lista de contenedores.

    Lista de contenedores

Agregar una carpeta de entrada y un archivo para el contenedor de blobs

En esta sección, creará una carpeta denominada entrada en el contenedor que creó y cargará un archivo de ejemplo en dicha carpeta. Antes de empezar, abra un editor de texto, como el Bloc de notas, y cree un archivo denominado emp.txt con el siguiente contenido:

John, Doe
Jane, Doe

Guarde el archivo en la carpeta C:\ADFv2QuickStartPSH. (Si la carpeta aún no existe, créela). A continuación, vuelva al portal de Azure y siga estos pasos:

  1. En la página <Nombre de cuenta> - Contenedores, en el punto donde se quedó, seleccione adftutorial en la lista actualizada de contenedores.

    1. Si ha cerrado la ventana o ha ido a otra página, vuelva a iniciar sesión en el portal Azure.
    2. En el menú Azure portal, seleccione Todos los servicios, seleccione Storage>Cuentas de almacenamiento. También puede buscar y seleccionar cuentas de almacenamiento desde cualquier página.
    3. Seleccione la cuenta de almacenamiento y, después, seleccione Contenedores>adftutorial.
  2. En la barra de herramientas de la página del contenedor adftutorial, seleccione Cargar.

  3. En la página Cargar blob, seleccione Archivos y, a continuación, busque y seleccione el archivo emp.txt.

  4. Expanda el título Avanzado. La página aparece ahora como a continuación:

    Selección del vínculo Avanzado

  5. En el cuadro Cargar en carpeta, escriba input.

  6. Seleccione el botón Cargar. Debería ver el archivo emp.txt y el estado de la carga en la lista.

  7. Seleccione el icono Cerrar (X) para cerrar la página Cargar blob.

Mantenga abierta la página del contenedor adftutorial. Úsela para comprobar la salida al final de esta guía de inicio rápido.

Azure PowerShell

Nota:

Se recomienda usar el módulo Az de PowerShell de Azure para interactuar con Azure. Para empezar, consulte Install Azure PowerShell. Para obtener información sobre cómo migrar al módulo Az PowerShell, consulte Migrate Azure PowerShell de AzureRM a Az.

Instale los módulos de Azure PowerShell más recientes siguiendo las instrucciones de Cómo instalar y configurar Azure PowerShell.

Advertencia

Si no usa las versiones más recientes del módulo de PowerShell y Data Factory, podría encontrarse con errores de deserialización al ejecutar los comandos.

Inicio de sesión en PowerShell

  1. Inicie PowerShell en su equipo. Mantenga PowerShell abierto hasta el final de esta guía de inicio rápido. Si lo cierra y vuelve a abrirlo, deberá ejecutar los comandos de nuevo.

  2. Ejecute el comando siguiente y escriba el mismo Azure nombre de usuario y contraseña que usa para iniciar sesión en el portal de Azure:

    Connect-AzAccount
    
  3. Ejecute el siguiente comando para ver todas las suscripciones de esta cuenta:

    Get-AzSubscription
    
  4. Si ve varias suscripciones de Azure asociadas a su cuenta, ejecute el siguiente comando para seleccionar la suscripción con la que desea trabajar. Reemplace SubscriptionId por el identificador de la suscripción de Azure:

    Select-AzSubscription -SubscriptionId "<SubscriptionId>"
    

Crear una factoría de datos

  1. Defina una variable para el nombre del grupo de recursos que usa en los comandos de PowerShell más adelante. Copie el siguiente texto de comando en PowerShell, especifique un nombre para el grupo de recursos Azure entre comillas dobles y, a continuación, ejecute el comando . Por ejemplo: "ADFQuickStartRG".

    $resourceGroupName = "ADFQuickStartRG";
    

    Si el grupo de recursos ya existe, puede que no desee sobrescribirlo. Asigne otro valor a la variable $ResourceGroupName y vuelva a ejecutar el comando

  2. Para crear el grupo de recursos Azure, ejecute el siguiente comando:

    $ResGrp = New-AzResourceGroup $resourceGroupName -location 'East US'
    

    Si el grupo de recursos ya existe, puede que no desee sobrescribirlo. Asigne otro valor a la variable $ResourceGroupName y ejecute el comando de nuevo.

  3. Defina una variable para el nombre de la factoría de datos.

    Importante

    Actualice el nombre de la factoría de datos para que sea globalmente único. Por ejemplo, ADFTutorialFactorySP1127.

    $dataFactoryName = "ADFQuickStartFactory";
    
  4. Para crear la factoría de datos, ejecute el siguiente cmdlet Set-AzDataFactoryV2 con las propiedades ResourceGroupName y Location de la variable $ResGrp:

    $DataFactory = Set-AzDataFactoryV2 -ResourceGroupName $ResGrp.ResourceGroupName `
        -Location $ResGrp.Location -Name $dataFactoryName
    

Tenga en cuenta los siguientes puntos:

  • El nombre del Azure Data Factory debe ser único globalmente. Si recibe el siguiente error, cambie el nombre y vuelva a intentarlo.

    The specified Data Factory name 'ADFv2QuickStartDataFactory' is already in use. Data Factory names must be globally unique.
    
  • Para crear instancias de Data Factory, la cuenta de usuario que usa para iniciar sesión en Azure debe ser miembro de contributor o owner o un administrator de la suscripción de Azure.

  • Para obtener una lista de las regiones de Azure en las que Data Factory está disponible actualmente, seleccione las regiones que le interesan en la página siguiente y, a continuación, expanda Analytics para buscar Data Factory: Productos disponibles por región. Los almacenes de datos (Azure Storage, Azure SQL Database, etc.) y los procesos (HDInsight, etc.) usados por la factoría de datos pueden estar en otras regiones.

Creación de un servicio vinculado

Cree servicios vinculados en una factoría de datos para vincular los almacenes de datos y los servicios de proceso a la factoría de datos. En esta guía de inicio rápido, creará un servicio vinculado de Azure Storage que se utiliza para ambos almacenes: de origen y de recepción. El servicio vinculado tiene la información de conexión que usa el servicio Data Factory en el entorno de tiempo de ejecución para conectarse a él.

Sugerencia

En este inicio rápido, usará la clave de cuenta como tipo de autenticación para el almacén de datos, pero puede elegir otros métodos de autenticación admitidos: URI de SAS, *Entidad de servicio e Identidad administrada si es necesario. Consulte las secciones correspondientes en este artículo para más información. Para almacenar secretos para almacenes de datos de forma segura, también se recomienda usar una Azure Key Vault. Consulte este artículo para obtener instrucciones detalladas.

  1. Cree un archivo JSON denominado AzureStorageLinkedService.json en la carpeta C:\ADFv2QuickStartPSH con el siguiente contenido: (Cree la carpeta ADFv2QuickStartPSH si aún no existe).

    Importante

    Reemplace <accountName> y <accountKey> por el nombre y la clave de la cuenta de almacenamiento de Azure antes de guardar el archivo.

    {
        "name": "AzureStorageLinkedService",
        "properties": {
            "annotations": [],
            "type": "AzureBlobStorage",
            "typeProperties": {
                "connectionString": "DefaultEndpointsProtocol=https;AccountName=<accountName>;AccountKey=<accountKey>;EndpointSuffix=core.windows.net"
            }
        }
    }
    

    Si usa el Bloc de notas, seleccione Todos los archivos en el campo Guardar como tipo en el cuadro de diálogo Guardar como. De lo contrario, podría agregar la extensión .txt al archivo. Por ejemplo, AzureStorageLinkedService.json.txt. Si crea el archivo en el Explorador de archivos antes de abrirlo en el Bloc de notas, es posible que no vea la .txt extensión, ya que la opción Ocultar extensiones para tipos de archivos conocidos está establecida de forma predeterminada. Quite la extensión .txt antes de continuar con el paso siguiente.

  2. En PowerShell, cambie a la carpeta ADFv2QuickStartPSH.

    Set-Location 'C:\ADFv2QuickStartPSH'
    
  3. Ejecute el cmdlet Set-AzDataFactoryV2LinkedService para crear el servicio vinculado: AzureStorageLinkedService.

    Set-AzDataFactoryV2LinkedService -DataFactoryName $DataFactory.DataFactoryName `
        -ResourceGroupName $ResGrp.ResourceGroupName -Name "AzureStorageLinkedService" `
        -DefinitionFile ".\AzureStorageLinkedService.json"
    

    Esta es la salida de ejemplo:

    LinkedServiceName : AzureStorageLinkedService
    ResourceGroupName : <resourceGroupName>
    DataFactoryName   : <dataFactoryName>
    Properties        : Microsoft.Azure.Management.DataFactory.Models.AzureBlobStorageLinkedService
    

Creación de conjuntos de datos

En este procedimiento, va a crear dos conjuntos de datos: InputDataset y OutputDataset. Estos conjuntos de datos son del tipo Binario. Se refieren al servicio vinculado de Azure Storage que creó en la sección anterior. El conjunto de datos de entrada representa los datos de origen en la carpeta de entrada. En la definición del conjunto de datos de entrada, se especifica el contenedor de blobs (adftutorial), la carpeta (input) y el archivo (emp.txt) que contiene los datos de origen. El conjunto de datos de salida representa los datos que se copian en el destino. En la definición del conjunto de datos de salida, se especifica el contenedor de blobs (adftutorial), la carpeta (output) y el archivo en el que se copian los datos.

  1. Cree un archivo JSON llamado InputDataset.json en la carpeta C:\ADFv2QuickStartPSH con el siguiente contenido:

    {
        "name": "InputDataset",
        "properties": {
            "linkedServiceName": {
                "referenceName": "AzureStorageLinkedService",
                "type": "LinkedServiceReference"
            },
            "annotations": [],
            "type": "Binary",
            "typeProperties": {
                "location": {
                    "type": "AzureBlobStorageLocation",
                    "fileName": "emp.txt",
                    "folderPath": "input",
                    "container": "adftutorial"
                }
            }
        }
    }
    
  2. Para crear el conjunto de datos: InputDataset, ejecute el cmdlet Set-AzDataFactoryV2Dataset.

    Set-AzDataFactoryV2Dataset -DataFactoryName $DataFactory.DataFactoryName `
        -ResourceGroupName $ResGrp.ResourceGroupName -Name "InputDataset" `
        -DefinitionFile ".\InputDataset.json"
    

    Esta es la salida de ejemplo:

    DatasetName       : InputDataset
    ResourceGroupName : <resourceGroupname>
    DataFactoryName   : <dataFactoryName>
    Structure         :
    Properties        : Microsoft.Azure.Management.DataFactory.Models.BinaryDataset
    
  3. Repita los pasos para crear el conjunto de datos de salida. Cree un archivo JSON llamado OutputDataset.json en la carpeta C:\ADFv2QuickStartPSH con el siguiente contenido:

    {
        "name": "OutputDataset",
        "properties": {
            "linkedServiceName": {
                "referenceName": "AzureStorageLinkedService",
                "type": "LinkedServiceReference"
            },
            "annotations": [],
            "type": "Binary",
            "typeProperties": {
                "location": {
                    "type": "AzureBlobStorageLocation",
                    "folderPath": "output",
                    "container": "adftutorial"
                }
            }
        }
    }
    
  4. Ejecute el cmdlet Set-AzDataFactoryV2Dataset para crear OutDataset.

    Set-AzDataFactoryV2Dataset -DataFactoryName $DataFactory.DataFactoryName `
        -ResourceGroupName $ResGrp.ResourceGroupName -Name "OutputDataset" `
        -DefinitionFile ".\OutputDataset.json"
    

    Esta es la salida de ejemplo:

    DatasetName       : OutputDataset
    ResourceGroupName : <resourceGroupname>
    DataFactoryName   : <dataFactoryName>
    Structure         :
    Properties        : Microsoft.Azure.Management.DataFactory.Models.BinaryDataset
    

Crear una canalización

En este procedimiento se crea una canalización con una actividad de copia que utiliza los conjuntos de datos de entrada y de salida. La actividad de copia realiza una copia de los datos desde el archivo especificado en la configuración del conjunto de datos de entrada hasta el archivo especificado en la configuración del conjunto de datos de salida.

  1. Cree un archivo JSON llamado Adfv2QuickStartPipeline.json en la carpeta C:\ADFv2QuickStartPSH con el siguiente contenido:

    {
        "name": "Adfv2QuickStartPipeline",
        "properties": {
            "activities": [
                {
                    "name": "CopyFromBlobToBlob",
                    "type": "Copy",
                    "dependsOn": [],
                    "policy": {
                        "timeout": "7.00:00:00",
                        "retry": 0,
                        "retryIntervalInSeconds": 30,
                        "secureOutput": false,
                        "secureInput": false
                    },
                    "userProperties": [],
                    "typeProperties": {
                        "source": {
                            "type": "BinarySource",
                            "storeSettings": {
                                "type": "AzureBlobStorageReadSettings",
                                "recursive": true
                            }
                        },
                        "sink": {
                            "type": "BinarySink",
                            "storeSettings": {
                                "type": "AzureBlobStorageWriteSettings"
                            }
                        },
                        "enableStaging": false
                    },
                    "inputs": [
                        {
                            "referenceName": "InputDataset",
                            "type": "DatasetReference"
                        }
                    ],
                    "outputs": [
                        {
                            "referenceName": "OutputDataset",
                            "type": "DatasetReference"
                        }
                    ]
                }
            ],
            "annotations": []
        }
    }
    
  2. Para crear la canalización: Adfv2QuickStartPipeline, ejecute el cmdlet Set-AzDataFactoryV2Pipeline.

    $DFPipeLine = Set-AzDataFactoryV2Pipeline `
        -DataFactoryName $DataFactory.DataFactoryName `
        -ResourceGroupName $ResGrp.ResourceGroupName `
        -Name "Adfv2QuickStartPipeline" `
        -DefinitionFile ".\Adfv2QuickStartPipeline.json"
    

Creación de una ejecución de canalización

En este paso, se crea una ejecución de la canalización.

Ejecute el cmdlet Invoke-AzDataFactoryV2Pipeline para crear una ejecución de la canalización. El cmdlet devuelve el identificador de ejecución de la canalización para realizar una supervisión en un futuro.

$RunId = Invoke-AzDataFactoryV2Pipeline `
  -DataFactoryName $DataFactory.DataFactoryName `
  -ResourceGroupName $ResGrp.ResourceGroupName `
  -PipelineName $DFPipeLine.Name 

Supervisión de la ejecución de la canalización

  1. Ejecute el script de PowerShell siguiente para comprobar continuamente el estado de ejecución de la canalización hasta que termine de copiar los datos. Copie y pegue el siguiente script en la ventana de PowerShell y presione ENTRAR.

    while ($True) {
        $Run = Get-AzDataFactoryV2PipelineRun `
            -ResourceGroupName $ResGrp.ResourceGroupName `
            -DataFactoryName $DataFactory.DataFactoryName `
            -PipelineRunId $RunId
    
        if ($Run) {
            if ( ($Run.Status -ne "InProgress") -and ($Run.Status -ne "Queued") ) {
                Write-Output ("Pipeline run finished. The status is: " +  $Run.Status)
                $Run
                break
            }
            Write-Output ("Pipeline is running...status: " + $Run.Status)
        }
    
        Start-Sleep -Seconds 10
    }
    

    Esta es la salida de ejemplo de la ejecución de canalización:

    Pipeline is running...status: InProgress
    Pipeline run finished. The status is:  Succeeded
    
    ResourceGroupName : ADFQuickStartRG
    DataFactoryName   : ADFQuickStartFactory
    RunId             : 00000000-0000-0000-0000-0000000000000
    PipelineName      : Adfv2QuickStartPipeline
    LastUpdated       : 8/27/2019 7:23:07 AM
    Parameters        : {}
    RunStart          : 8/27/2019 7:22:56 AM
    RunEnd            : 8/27/2019 7:23:07 AM
    DurationInMs      : 11324
    Status            : Succeeded
    Message           : 
    
  2. Ejecute el script siguiente para recuperar detalles de la ejecución de la actividad de copia, como el tamaño de los datos leídos o escritos.

    Write-Output "Activity run details:"
    $Result = Get-AzDataFactoryV2ActivityRun -DataFactoryName $DataFactory.DataFactoryName -ResourceGroupName $ResGrp.ResourceGroupName -PipelineRunId $RunId -RunStartedAfter (Get-Date).AddMinutes(-30) -RunStartedBefore (Get-Date).AddMinutes(30)
    $Result
    
    Write-Output "Activity 'Output' section:"
    $Result.Output -join "`r`n"
    
    Write-Output "Activity 'Error' section:"
    $Result.Error -join "`r`n"
    
  3. Confirme que ha obtenido una salida similar a la siguiente salida de ejemplo de resultado de ejecución de actividad:

    ResourceGroupName : ADFQuickStartRG
    DataFactoryName   : ADFQuickStartFactory
    ActivityRunId     : 00000000-0000-0000-0000-000000000000
    ActivityName      : CopyFromBlobToBlob
    PipelineRunId     : 00000000-0000-0000-0000-000000000000
    PipelineName      : Adfv2QuickStartPipeline
    Input             : {source, sink, enableStaging}
    Output            : {dataRead, dataWritten, filesRead, filesWritten...}
    LinkedServiceName :
    ActivityRunStart  : 8/27/2019 7:22:58 AM
    ActivityRunEnd    : 8/27/2019 7:23:05 AM
    DurationInMs      : 6828
    Status            : Succeeded
    Error             : {errorCode, message, failureType, target}
    
    Activity 'Output' section:
    "dataRead": 20
    "dataWritten": 20
    "filesRead": 1
    "filesWritten": 1
    "sourcePeakConnections": 1
    "sinkPeakConnections": 1
    "copyDuration": 4
    "throughput": 0.01
    "errors": []
    "effectiveIntegrationRuntime": "DefaultIntegrationRuntime (Central US)"
    "usedDataIntegrationUnits": 4
    "usedParallelCopies": 1
    "executionDetails": [
      {
        "source": {
          "type": "AzureBlobStorage"
        },
        "sink": {
          "type": "AzureBlobStorage"
        },
        "status": "Succeeded",
        "start": "2019-08-27T07:22:59.1045645Z",
        "duration": 4,
        "usedDataIntegrationUnits": 4,
        "usedParallelCopies": 1,
        "detailedDurations": {
          "queuingDuration": 3,
          "transferDuration": 1
        }
      }
    ]
    
    Activity 'Error' section:
    "errorCode": ""
    "message": ""
    "failureType": ""
    "target": "CopyFromBlobToBlob"
    

Revisión de los recursos implementados

El conducto crea automáticamente la carpeta de salida en el contenedor de blob adftutorial. A continuación, copia el archivo emp.txt de la carpeta de entrada a la carpeta de salida.

  1. En el portal de Azure, en la página del contenedor adftutorial, seleccione Refresh para ver la carpeta de salida.

    Captura de pantalla que muestra la página del contenedor donde puede actualizar la página.

  2. En la lista de carpetas, seleccione output.

  3. Confirme que emp.txt se ha copiado en la carpeta de salida.

    Captura de pantalla que muestra el contenido de la carpeta de salida.

Limpieza de recursos

Hay dos forma de eliminar los recursos que ha creado en la guía de inicio rápido. Puede eliminar el grupo de recursos Azure, que incluye todos los recursos del grupo de recursos. Si quiere mantener intacto el resto de recursos, elimine solo la factoría de datos que creó en este tutorial.

Al eliminar un grupo de recursos, se eliminan todos los recursos incluidas las factorías de datos. Ejecute el comando siguiente para eliminar el grupo de recursos completo:

Remove-AzResourceGroup -ResourceGroupName $resourcegroupname

Nota:

La eliminación de un grupo de recursos puede tardar algún tiempo. Tenga paciencia con el proceso.

Si desea eliminar solo la factoría de datos, no el grupo de recursos completo, ejecute el siguiente comando:

Remove-AzDataFactoryV2 -Name $dataFactoryName -ResourceGroupName $resourceGroupName

La tubería de este ejemplo copia datos de una ubicación a otra en Azure Blob Storage. Consulte los tutoriales para obtener información acerca del uso de Data Factory en otros escenarios.