Atividade Execute Pipeline no Azure Data Factory e no Synapse Analytics

APLICA-SE A: Azure Data Factory Azure Synapse Analytics

Dica

Experimente o Data Factory no Microsoft Fabric, uma solução de análise tudo-em-um para empresas. O Microsoft Fabric abrange desde movimentação de dados até ciência de dados, análise em tempo real, business intelligence e relatórios. Saiba como iniciar uma avaliação gratuita!

A atividade Execute Pipeline permite que um pipeline do Data Factory ou do Synapse invoque outro pipeline.

Criar uma atividade Execute Pipeline com interface do usuário

Para usar um atividade Execute Pipeline em um pipeline, siga estas etapas:

  1. Procure pipeline no painel Atividades do pipeline e arraste uma atividade Execute Pipeline para a tela do pipeline.

  2. Selecione a nova atividade Execute Pipeline na tela, se ainda não estiver selecionada, e a guia Configurações para editar os detalhes.

    Shows the UI for an execute pipeline activity.

  3. Selecione um pipeline existente ou crie um usando o botão Novo. Selecione outras opções e configure os parâmetros para o pipeline conforme necessário para concluir sua configuração.

Sintaxe

{
    "name": "MyPipeline",
    "properties": {
        "activities": [
            {
                "name": "ExecutePipelineActivity",
                "type": "ExecutePipeline",
                "typeProperties": {
                    "parameters": {                        
                        "mySourceDatasetFolderPath": {
                            "value": "@pipeline().parameters.mySourceDatasetFolderPath",
                            "type": "Expression"
                        }
                    },
                    "pipeline": {
                        "referenceName": "<InvokedPipelineName>",
                        "type": "PipelineReference"
                    },
                    "waitOnCompletion": true
                 }
            }
        ],
        "parameters": [
            {
                "mySourceDatasetFolderPath": {
                    "type": "String"
                }
            }
        ]
    }
}

Propriedades de tipo

Propriedade Descrição Valores permitidos Obrigatório
name Nome da atividade de execução de pipeline. String Sim
type Deve ser definido como: ExecutePipeline. String Sim
pipeline Referência de pipeline para o pipeline dependente que invoca esse pipeline. Um objeto de referência do pipeline tem duas propriedades: referenceName e type. A propriedade referenceName especifica o nome do pipeline de referência. A propriedade type deve ser definida como PipelineReference. PipelineReference Sim
parameters Parâmetros a serem passados para o pipeline invocado Um objeto JSON que mapeia os nomes de parâmetro para os valores de argumento No
waitOnCompletion Define se a atividade de execução aguarda a execução do pipeline dependente ser concluída. O padrão é true. Boolean No

Amostra

Este cenário tem dois pipelines:

  • Pipeline mestre – esse pipeline tem uma atividade de execução de pipeline que chama o pipeline invocado. O pipeline mestre usa dois parâmetros: masterSourceBlobContainer, masterSinkBlobContainer.
  • Pipeline invocado – esse pipeline tem uma atividade de cópia que copia dados de uma origem do Blob do Azure para o coletor de Blob do Azure. O pipeline invocado usa dois parâmetros: sourceBlobContainer, sinkBlobContainer.

Definição de pipeline mestre

{
  "name": "masterPipeline",
  "properties": {
    "activities": [
      {
        "type": "ExecutePipeline",
        "typeProperties": {
          "pipeline": {
            "referenceName": "invokedPipeline",
            "type": "PipelineReference"
          },
          "parameters": {
            "sourceBlobContainer": {
              "value": "@pipeline().parameters.masterSourceBlobContainer",
              "type": "Expression"
            },
            "sinkBlobContainer": {
              "value": "@pipeline().parameters.masterSinkBlobContainer",
              "type": "Expression"
            }
          },
          "waitOnCompletion": true
        },
        "name": "MyExecutePipelineActivity"
      }
    ],
    "parameters": {
      "masterSourceBlobContainer": {
        "type": "String"
      },
      "masterSinkBlobContainer": {
        "type": "String"
      }
    }
  }
}

Definição de pipeline invocado

{
  "name": "invokedPipeline",
  "properties": {
    "activities": [
      {
        "type": "Copy",
        "typeProperties": {
          "source": {
            "type": "BlobSource"
          },
          "sink": {
            "type": "BlobSink"
          }
        },
        "name": "CopyBlobtoBlob",
        "inputs": [
          {
            "referenceName": "SourceBlobDataset",
            "type": "DatasetReference"
          }
        ],
        "outputs": [
          {
            "referenceName": "sinkBlobDataset",
            "type": "DatasetReference"
          }
        ]
      }
    ],
    "parameters": {
      "sourceBlobContainer": {
        "type": "String"
      },
      "sinkBlobContainer": {
        "type": "String"
      }
    }
  }
}

Serviço vinculado

{
    "name": "BlobStorageLinkedService",
    "properties": {
    "type": "AzureStorage",
    "typeProperties": {
      "connectionString": "DefaultEndpointsProtocol=https;AccountName=*****;AccountKey=*****"
    }
  }
}

Conjunto de dados de origem

{
    "name": "SourceBlobDataset",
    "properties": {
    "type": "AzureBlob",
    "typeProperties": {
      "folderPath": {
        "value": "@pipeline().parameters.sourceBlobContainer",
        "type": "Expression"
      },
      "fileName": "salesforce.txt"
    },
    "linkedServiceName": {
      "referenceName": "BlobStorageLinkedService",
      "type": "LinkedServiceReference"
    }
  }
}

Conjunto de dados do coletor

{
    "name": "sinkBlobDataset",
    "properties": {
    "type": "AzureBlob",
    "typeProperties": {
      "folderPath": {
        "value": "@pipeline().parameters.sinkBlobContainer",
        "type": "Expression"
      }
    },
    "linkedServiceName": {
      "referenceName": "BlobStorageLinkedService",
      "type": "LinkedServiceReference"
    }
  }
}

Executando o pipeline

Para executar o pipeline mestre neste exemplo, os seguintes valores são passados para os parâmetros masterSourceBlobContainer e masterSinkBlobContainer:

{
  "masterSourceBlobContainer": "executetest",
  "masterSinkBlobContainer": "executesink"
}

O pipeline mestre encaminha esses valores para o pipeline invocado, conforme mostrado no exemplo a seguir:

{
    "type": "ExecutePipeline",
    "typeProperties": {
      "pipeline": {
        "referenceName": "invokedPipeline",
        "type": "PipelineReference"
      },
      "parameters": {
        "sourceBlobContainer": {
          "value": "@pipeline().parameters.masterSourceBlobContainer",
          "type": "Expression"
        },
        "sinkBlobContainer": {
          "value": "@pipeline().parameters.masterSinkBlobContainer",
          "type": "Expression"
        }
      },

      ....
}

Aviso

A atividade Execute Pipeline passa o parâmetro de matriz como cadeia de caracteres para o pipeline filho. Isso ocorre devido ao fato de que o conteúdo é passado do pipeline pai para o > filho como cadeia de caracteres. Podemos vê-lo quando verificamos a entrada passada para o pipeline filho. Confira esta seção para saber mais detalhes.

Veja outras atividades de fluxo de controle com suporte: