Creación de actividades y canalizaciones de factoría de datos
Las actividades dentro de Azure Data Factory definen las acciones que se realizarán en los datos y para ello, existen tres categorías, entre las que se incluyen:
- Actividades de movimiento de datos
- Actividades de transformación de datos
- Actividades de control
Actividades de movimiento de datos
Las actividades de movimiento de datos simplemente mueven datos de un almacén de datos a otro. Puede usar la actividad de copia para realizar actividades de movimiento de datos o mediante JSON. Hay una amplia gama de almacenes de datos que se admiten como origen y como receptor. Esta lista está aumentando en todo momento y puede encontrar la información más reciente aquí.
Actividades de transformación de datos
Las actividades de transformación de datos se pueden realizar de forma nativa en la herramienta de creación de Azure Data Factory mediante el flujo de datos de asignación. Como alternativa, puede llamar a un recurso de proceso para cambiar o mejorar los datos a través de la transformación, o realizar un análisis de los datos. Esto incluye tecnologías de proceso como Azure Databricks, Azure Batch, SQL Database y Azure Synapse Analytics, Machine Learning Services, máquinas virtuales de Azure y HDInsight. Puede usar cualquier paquete de SQL Server Integration Services existente (SSIS) almacenado en un catálogo para ejecutarse en Azure.
Como esta lista está evolucionando siempre, puede obtener la información más reciente aquí.
Actividades de control
Al crear de forma gráfica las soluciones ADF, puede usar el flujo de control en el diseño para orquestar las actividades de canalización que incluyen las actividades de encadenamiento en una secuencia, la bifurcación, la definición de parámetros en el nivel de canalización y el paso de argumentos al invocar la canalización a petición o desde un desencadenador. Las funcionalidades actuales incluyen:
Actividad de control | Descripción |
---|---|
Actividad de ejecución de canalización | La actividad de ejecución de canalización permite que una canalización de Data Factory invoque otra canalización. |
Actividad ForEach | La actividad ForEach define un flujo de control repetido en la canalización. Esta actividad se usa para iterar una colección y ejecuta las actividades especificadas en un bucle. La implementación del bucle de esta actividad es similar a la estructura de bucle ForEach de los lenguajes de programación. |
Actividad Web | La actividad Web puede usarse para llamar a un punto de conexión REST personalizado desde una canalización de Data Factory. Puede pasar conjuntos de datos y servicios vinculados que la actividad consumirá y a los que tendrá acceso. |
Actividad de búsqueda | La actividad de búsqueda puede usarse para leer o buscar un registro, un nombre de tabla o un valor de cualquier origen externo. Además, las actividades posteriores pueden hacer referencia a esta salida. |
Actividad de obtención de metadatos | La actividad GetMetadata se puede usar para recuperar metadatos de cualquier dato en Azure Data Factory. |
Actividad Until | Implementa el bucle Do-Until, que es similar a la estructura de bucle Do-Until de los lenguajes de programación. Ejecuta un conjunto de actividades en un bucle hasta que la condición asociada a la actividad la evalúa como "true". Puede especificar un valor de tiempo de espera para la actividad Until en Data Factory. |
Actividad If Condition | La condición If puede usarse para crear una rama basada en una condición que evalúa como true o false. La actividad de la condición IF proporciona la misma funcionalidad que proporciona una instrucción If en lenguajes de programación. Evalúa un conjunto de actividades cuando la condición se evalúa como true y otro conjunto de actividades cuando la condición se evalúa como false. |
Actividad Wait | Cuando use una actividad Wait en una canalización, esta espera durante el período de tiempo especificado antes de continuar con la ejecución de actividades sucesivas. |
Puede obtener la información más reciente aquí.
Actividades y canalizaciones
Definir actividades
Cuando se usa la notación JSON, la sección de actividades puede tener una o varias actividades definidas dentro de ella. Existen dos tipos principales de actividades: Actividades de ejecución y de control. Las actividades de ejecución (también conocido como proceso) incluyen las actividades de movimiento de datos y de transformación de datos. Tienen la siguiente estructura de nivel superior:
{
"name": "Execution Activity Name",
"description": "description",
"type": "<ActivityType>",
"typeProperties":
{
},
"linkedServiceName": "MyLinkedService",
"policy":
{
},
"dependsOn":
{
}
}
La tabla siguiente describe las propiedades del JSON anterior:
Propiedad | Descripción | Obligatorio |
---|---|---|
name | Nombre de la actividad. | Sí |
description | Texto que describe para qué se usa la actividad. | No |
type | Define el tipo de la actividad. | Sí |
linkedServiceName | Nombre del servicio vinculado utilizado por la actividad. | Sí para HDInsight, la actividad Scoring por lote de Machine Learning y la actividad de procedimiento almacenado. |
typeProperties | Las propiedades en la sección typeProperties dependen de cada tipo de actividad. | No |
policy | Directivas que afectan al comportamiento en tiempo de ejecución de la actividad. Esta propiedad incluye el comportamiento de tiempo de espera y reintento. | No |
dependsOn | Esta propiedad se utiliza para definir las dependencias de actividad, y cómo las actividades siguientes dependen de actividades anteriores. | No |
Definir actividades de control
Una actividad de control de Data Factory se define con formato JSON de la manera siguiente:
{
"name": "Control Activity Name",
"description": "description",
"type": "<ActivityType>",
"typeProperties":
{
},
"dependsOn":
{
}
}
La tabla siguiente describe las propiedades del JSON anterior:
Propiedad | Descripción | Obligatorio |
---|---|---|
name | Nombre de la actividad. | Sí |
description | Texto que describe para qué se usa la actividad. | Sí |
type | Define el tipo de la actividad. | Sí |
typeProperties | Las propiedades en la sección typeProperties dependen de cada tipo de actividad. | No |
dependsOn | Esta propiedad se utiliza para definir las dependencias de actividad, y cómo las actividades siguientes dependen de actividades anteriores. | No |
Definición de canalizaciones
Aquí encontrará cómo se define una canalización en formato JSON:
{
"name": "PipelineName",
"properties":
{
"description": "pipeline description",
"activities":
[
],
"parameters": {
}
}
}
La tabla siguiente describe las propiedades del JSON anterior:
Propiedad | Descripción | Obligatorio |
---|---|---|
name | Nombre de la canalización. | Sí |
description | Texto que describe para qué se usa la canalización. | No |
activities | La sección activities puede contener una o más actividades definidas. | Sí |
parámetros | La sección parámetros puede tener uno o varios de los parámetros definidos dentro de la canalización, lo que hace que la canalización sea flexible para su reutilización. | No |
Ejemplo
En el siguiente código JSON se define la canalización denominada "MyFirstPipeline" que contiene un tipo de actividad de HDInsightHive que llamará a una consulta desde el script "partitionweblogs.hql" que se almacena en el servicio vinculado denominado "StorageLinkedService", con una entrada denominada "AzureBlobInput" y una salida denominada "AzureBlobOutput". Lo ejecuta en el recurso de proceso definido en el servicio vinculado denominado "HDInsightOnDemandLinkedService".
La canalización está programada para ejecutarse mensualmente e intentará ejecutarse 3 veces si se produce un error.
{
"name": "MyFirstPipeline",
"properties": {
"description": "My first Azure Data Factory pipeline",
"activities": [
{
"type": "HDInsightHive",
"typeProperties": {
"scriptPath": "adfgetstarted/script/partitionweblogs.hql",
"scriptLinkedService": "StorageLinkedService",
"defines": {
"inputtable": "wasb://adfgetstarted@ctostorageaccount.blob.core.windows.net/inputdata",
"partitionedtable": "wasb://adfgetstarted@ctostorageaccount.blob.core.windows.net/partitioneddata"
}
},
"inputs": [
{
"name": "AzureBlobInput"
}
],
"outputs": [
{
"name": "AzureBlobOutput"
}
],
"policy": {
"concurrency": 1,
"retry": 3
},
"scheduler": {
"frequency": "Month",
"interval": 1
},
"name": "RunSampleHiveActivity",
"linkedServiceName": "HDInsightOnDemandLinkedService"
}
],
"start": "2017-04-01T00:00:00Z",
"end": "2017-04-02T00:00:00Z",
"isPaused": false,
"hubName": "ctogetstarteddf_hub",
"pipelineMode": "Scheduled"
}
}