Compartilhar via


Executar atividade de Pipeline no Azure Data Factory e no Synapse Analytics

APLICA-SE A: Azure Data Factory Azure Synapse Analytics

Dica

Data Factory no Microsoft Fabric é a próxima geração de Azure Data Factory, com uma arquitetura mais simples, IA interna e novos recursos. Se você não estiver familiarizado com a integração de dados, comece com Fabric Data Factory. As cargas de trabalho existentes do ADF podem ser atualizadas para Fabric para acessar novos recursos em ciência de dados, análise em tempo real e relatórios.

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

Crie uma atividade "Execute Pipeline" com a interface de 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.

    Mostra a interface do usuário para uma atividade de execução de pipeline.

  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
nome Nome da atividade de execução de pipeline. String Sim
tipo 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
parâmetros Parâmetros que devem ser passados para o pipeline invocado Um objeto JSON que mapeia os nomes de parâmetro para os valores de argumento Não
aguardarConclusão Define se a atividade de execução aguarda a execução do pipeline dependente ser concluída. O padrão é true. booleano Não

Amostra

Este cenário tem dois pipelines:

  • Pipeline mestre — Este pipeline contém a atividade Execute Pipeline, que chama o pipeline invocado. O pipeline principal usa dois parâmetros: masterSourceBlobContainer, masterSinkBlobContainer.
  • Pipeline invocado — Este pipeline contém a atividade Copy, que copia dados de uma origem Blob do Azure para um destino Blob do Azure. O pipeline invocado usa dois parâmetros: sourceBlobContainer, sinkBlobContainer.

Definição de pipeline principal

{
  "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: