Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
APLICA-SE A:
Azure Data Factory
Azure Synapse Analytics
Gorjeta
Data Factory em Microsoft Fabric é a próxima geração de Azure Data Factory, com uma arquitetura mais simples, IA incorporada e novas funcionalidades. Se és novo na integração de dados, começa pelo Fabric Data Factory. As cargas de trabalho existentes do ADF podem atualizar para o Fabric para aceder a novas capacidades em ciência de dados, análise em tempo real e relatórios.
Pode usar a atividade de exclusão no Azure Data Factory para eliminar ficheiros ou pastas de armazenamentos em locais físicos ou armazenamentos na nuvem. Use essa atividade para limpar ou arquivar arquivos quando eles não forem mais necessários.
Aviso
Os ficheiros ou pastas eliminados não podem ser restaurados (a menos que o armazenamento tenha a eliminação suave ativada). Tenha cuidado ao utilizar a ação Eliminar para eliminar ficheiros ou pastas.
Melhores práticas
Aqui estão algumas recomendações para usar a atividade Excluir:
Faça backup de seus arquivos antes de excluí-los com a atividade Excluir caso precise restaurá-los no futuro.
Verifique se o serviço tem permissões de escrita para excluir pastas ou arquivos do armazenamento.
Certifique-se de que não está a eliminar ficheiros que estão a ser escritos ao mesmo tempo.
Se você quiser excluir arquivos ou pastas de um sistema local, verifique se está usando um tempo de execução de integração auto-hospedado com uma versão maior que 3.14.
Arquivos de dados suportados
- Azure Blob Storage
- Azure Data Lake Storage Gen1
- Azure Data Lake Storage Gen2
- Ficheiros do Azure
- Sistema de Ficheiros
- FTP
- SFTP
- Microsoft Fabric Lakehouse
- Amazon S3
- Armazenamento compatível com Amazon S3
- Armazenamento em nuvem do Google
- Armazenamento em nuvem Oracle
- HDFS
Criar uma atividade de exclusão com a IU
Para usar uma atividade de eliminação em um pipeline, conclua as seguintes etapas:
Pesquise por Excluir no painel de Atividades do pipeline e arraste uma atividade Excluir para a área de trabalho do pipeline.
Selecione a nova atividade Excluir na tela, caso ainda não a tenha selecionado, e a guia Origem, para editar os seus detalhes.
Selecione um Dataset existente ou crie um novo Dataset especificando os arquivos a serem excluídos. Se vários arquivos forem selecionados, opcionalmente, habilite a exclusão recursiva, que também exclui dados em qualquer pasta filha. Você também pode especificar um número máximo de conexões simultâneas para a operação.
Opcionalmente, configure o registo em log selecionando o separador Configurações de log e escolhendo uma localização de serviço associada a uma conta de registo existente ou criando uma nova, para registar os resultados das operações de eliminação realizadas.
Sintaxe
{
"name": "DeleteActivity",
"type": "Delete",
"typeProperties": {
"dataset": {
"referenceName": "<dataset name>",
"type": "DatasetReference"
},
"storeSettings": {
"type": "<source type>",
"recursive": true/false,
"maxConcurrentConnections": <number>
},
"enableLogging": true/false,
"logStorageSettings": {
"linkedServiceName": {
"referenceName": "<name of linked service>",
"type": "LinkedServiceReference"
},
"path": "<path to save log file>"
}
}
}
Propriedades do tipo
| Propriedade | Descrição | Obrigatório |
|---|---|---|
| conjunto de dados | Fornece a referência do conjunto de dados para determinar quais arquivos ou pastas devem ser excluídos | Sim |
| recursiva | Indica se os arquivos são excluídos recursivamente das subpastas ou somente da pasta especificada. | N.º A predefinição é false. |
| máximoDeConexõesConcorrentes | O número de conexões ao armazenamento realizadas simultaneamente para excluir pastas ou arquivos. | N.º A predefinição é 1. |
| Ativar registro em log | Indica se você precisa registrar os nomes de pastas ou arquivos excluídos. Se verdadeiro, você precisa fornecer ainda mais uma conta de armazenamento para salvar o arquivo de log, para que você possa controlar os comportamentos da atividade Excluir lendo o arquivo de log. | Não |
| configuraçõesDeArmazenamentoDeRegistros | Aplicável apenas quando enablelogging = true. Um grupo de propriedades de armazenamento que pode ser especificado onde você deseja salvar o arquivo de log que contém os nomes de pasta ou arquivo excluídos pela atividade Excluir. |
Não |
| linkedServiceName | Aplicável apenas quando enablelogging = true. O serviço ligado de Armazenamento do Azure, Azure Data Lake Storage Gen1 ou Azure Data Lake Storage Gen2 para armazenar o ficheiro de registo que contém os nomes da pasta ou ficheiros eliminados pela atividade Eliminar. Esteja ciente de que deve ser configurado com o mesmo tipo de Integration Runtime do usado pela atividade de exclusão para eliminar ficheiros. |
Não |
| caminho | Aplicável apenas quando enablelogging = true. O caminho para salvar o arquivo de log em sua conta de armazenamento. Se você não fornecer um caminho, o serviço criará um contêiner para você. |
Não |
Monitorização
Há dois locais onde você pode ver e monitorar os resultados da atividade Excluir:
- A partir da saída da atividade Eliminar.
- A partir do ficheiro de registo.
Exemplo de saída da atividade Delete
{
"datasetName": "AmazonS3",
"type": "AmazonS3Object",
"prefix": "test",
"bucketName": "adf",
"recursive": true,
"isWildcardUsed": false,
"maxConcurrentConnections": 2,
"filesDeleted": 4,
"logPath": "https://sample.blob.core.windows.net/mycontainer/5c698705-a6e2-40bf-911e-e0a927de3f07",
"effectiveIntegrationRuntime": "MyAzureIR (West Central US)",
"executionDuration": 650
}
Exemplo de arquivo de log da atividade Excluir
| Nome | Categoria | Status | Erro |
|---|---|---|---|
| teste1/yyy.json | Ficheiro | Eliminado | |
| teste2/hello789.txt | Ficheiro | Eliminado | |
| teste2/teste3/hello000.txt | Ficheiro | Eliminado | |
| teste2/teste3/zzz.json | Ficheiro | Eliminado |
Exemplos de utilização da atividade Eliminar
Excluir pastas ou arquivos específicos
O repositório tem a seguinte estrutura de pastas:
Raiz/
Folder_A_1/
1.txt
2.txt
3.csv
Folder_A_2/
4.txt
5.csv
Folder_B_1/
6.txt
7.csv
Folder_B_2/
8.txt
Agora você está usando a atividade Excluir para excluir pastas ou arquivos pela combinação de diferentes valores de propriedade do conjunto de dados e da atividade Excluir:
| folderPath | nome do ficheiro | recursiva | Saída |
|---|---|---|---|
| Raiz/ Folder_A_2 | NULL | Falso | Raiz/ Folder_A_1/ 1.txt 2.txt 3.csv Folder_A_2/ Folder_B_1/ 6.txt 7.csv Folder_B_2/ 8.txt |
| Raiz/ Folder_A_2 | NULL | Verdadeiro | Raiz/ Folder_A_1/ 1.txt 2.txt 3.csv |
| Raiz/ Folder_A_2 | *.txt | Falso | Raiz/ Folder_A_1/ 1.txt 2.txt 3.csv Folder_A_2/ 5.csv Folder_B_1/ 6.txt 7.csv Folder_B_2/ 8.txt |
| Raiz/ Folder_A_2 | *.txt | Verdadeiro | Raiz/ Folder_A_1/ 1.txt 2.txt 3.csv Folder_A_2/ 5.csv Folder_B_1/ 7.csv Folder_B_2/ |
Limpe periodicamente a pasta ou os arquivos particionados por tempo
Você pode criar um pipeline para limpar periodicamente pastas ou ficheiros particionados por tempo. Por exemplo, a estrutura de pastas é semelhante a: /mycontainer/2018/12/14/*.csv. Você pode usar a variável de sistema de serviço do gatilho de agendamento para identificar qual pasta ou arquivos devem ser excluídos em cada execução de pipeline.
Canal de amostra
{
"name":"cleanup_time_partitioned_folder",
"properties":{
"activities":[
{
"name":"DeleteOneFolder",
"type":"Delete",
"dependsOn":[
],
"policy":{
"timeout":"7.00:00:00",
"retry":0,
"retryIntervalInSeconds":30,
"secureOutput":false,
"secureInput":false
},
"userProperties":[
],
"typeProperties":{
"dataset":{
"referenceName":"PartitionedFolder",
"type":"DatasetReference",
"parameters":{
"TriggerTime":{
"value":"@formatDateTime(pipeline().parameters.TriggerTime, 'yyyy/MM/dd')",
"type":"Expression"
}
}
},
"logStorageSettings":{
"linkedServiceName":{
"referenceName":"BloblinkedService",
"type":"LinkedServiceReference"
},
"path":"mycontainer/log"
},
"enableLogging":true,
"storeSettings":{
"type":"AzureBlobStorageReadSettings",
"recursive":true
}
}
}
],
"parameters":{
"TriggerTime":{
"type":"string"
}
},
"annotations":[
]
}
}
Conjunto de dados de exemplo
{
"name":"PartitionedFolder",
"properties":{
"linkedServiceName":{
"referenceName":"BloblinkedService",
"type":"LinkedServiceReference"
},
"parameters":{
"TriggerTime":{
"type":"string"
}
},
"annotations":[
],
"type":"Binary",
"typeProperties":{
"location":{
"type":"AzureBlobStorageLocation",
"folderPath":{
"value":"@dataset().TriggerTime",
"type":"Expression"
},
"container":{
"value":"mycontainer",
"type":"Expression"
}
}
}
}
}
Trigger de exemplo
{
"name": "DailyTrigger",
"properties": {
"runtimeState": "Started",
"pipelines": [
{
"pipelineReference": {
"referenceName": "cleanup_time_partitioned_folder",
"type": "PipelineReference"
},
"parameters": {
"TriggerTime": "@trigger().scheduledTime"
}
}
],
"type": "ScheduleTrigger",
"typeProperties": {
"recurrence": {
"frequency": "Day",
"interval": 1,
"startTime": "2018-12-13T00:00:00.000Z",
"timeZone": "UTC",
"schedule": {
"minutes": [
59
],
"hours": [
23
]
}
}
}
}
}
Limpar os ficheiros expirados que foram modificados pela última vez antes de 2018.1.1
Você pode criar um pipeline para limpar os arquivos antigos ou expirados usando o filtro de atributo de arquivo: "LastModified" no conjunto de dados.
Canal de amostra
{
"name":"CleanupExpiredFiles",
"properties":{
"activities":[
{
"name":"DeleteFilebyLastModified",
"type":"Delete",
"dependsOn":[
],
"policy":{
"timeout":"7.00:00:00",
"retry":0,
"retryIntervalInSeconds":30,
"secureOutput":false,
"secureInput":false
},
"userProperties":[
],
"typeProperties":{
"dataset":{
"referenceName":"BlobFilesLastModifiedBefore201811",
"type":"DatasetReference"
},
"logStorageSettings":{
"linkedServiceName":{
"referenceName":"BloblinkedService",
"type":"LinkedServiceReference"
},
"path":"mycontainer/log"
},
"enableLogging":true,
"storeSettings":{
"type":"AzureBlobStorageReadSettings",
"recursive":true,
"modifiedDatetimeEnd":"2018-01-01T00:00:00.000Z"
}
}
}
],
"annotations":[
]
}
}
Conjunto de dados de exemplo
{
"name":"BlobFilesLastModifiedBefore201811",
"properties":{
"linkedServiceName":{
"referenceName":"BloblinkedService",
"type":"LinkedServiceReference"
},
"annotations":[
],
"type":"Binary",
"typeProperties":{
"location":{
"type":"AzureBlobStorageLocation",
"fileName":"*",
"folderPath":"mydirectory",
"container":"mycontainer"
}
}
}
}
Mover ficheiros encadeando a atividade de cópia e a atividade de eliminação.
Podes mover um ficheiro usando uma atividade Copy para copiar um ficheiro e depois uma atividade Delete para eliminar um ficheiro num pipeline. Quando quiser mover vários ficheiros, pode usar a atividade GetMetadata + Filter activity + Foreach activity + atividade Copy + Delete activity, como no exemplo seguinte.
Nota
Se quiseres mover toda a pasta definindo um conjunto de dados que contenha apenas um caminho de pasta, e depois usar uma atividade Copy e uma atividade Delete para referenciar o mesmo conjunto de dados que representa uma pasta, tens de ter muito cuidado. Você deve garantir que não haverá novos arquivos chegando à pasta entre a operação de cópia e a operação de exclusão. Se novos arquivos chegarem à pasta no momento em que sua atividade de cópia acabou de concluir o trabalho de cópia, mas a atividade Excluir não tiver sido iniciada, a atividade Excluir poderá excluir o arquivo recém-chegado que AINDA NÃO foi copiado para o destino, excluindo a pasta inteira.
Canal de amostra
{
"name":"MoveFiles",
"properties":{
"activities":[
{
"name":"GetFileList",
"type":"GetMetadata",
"dependsOn":[
],
"policy":{
"timeout":"7.00:00:00",
"retry":0,
"retryIntervalInSeconds":30,
"secureOutput":false,
"secureInput":false
},
"userProperties":[
],
"typeProperties":{
"dataset":{
"referenceName":"OneSourceFolder",
"type":"DatasetReference",
"parameters":{
"Container":{
"value":"@pipeline().parameters.SourceStore_Location",
"type":"Expression"
},
"Directory":{
"value":"@pipeline().parameters.SourceStore_Directory",
"type":"Expression"
}
}
},
"fieldList":[
"childItems"
],
"storeSettings":{
"type":"AzureBlobStorageReadSettings",
"recursive":true
},
"formatSettings":{
"type":"BinaryReadSettings"
}
}
},
{
"name":"FilterFiles",
"type":"Filter",
"dependsOn":[
{
"activity":"GetFileList",
"dependencyConditions":[
"Succeeded"
]
}
],
"userProperties":[
],
"typeProperties":{
"items":{
"value":"@activity('GetFileList').output.childItems",
"type":"Expression"
},
"condition":{
"value":"@equals(item().type, 'File')",
"type":"Expression"
}
}
},
{
"name":"ForEachFile",
"type":"ForEach",
"dependsOn":[
{
"activity":"FilterFiles",
"dependencyConditions":[
"Succeeded"
]
}
],
"userProperties":[
],
"typeProperties":{
"items":{
"value":"@activity('FilterFiles').output.value",
"type":"Expression"
},
"batchCount":20,
"activities":[
{
"name":"CopyAFile",
"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":false,
"deleteFilesAfterCompletion":false
},
"formatSettings":{
"type":"BinaryReadSettings"
},
"recursive":false
},
"sink":{
"type":"BinarySink",
"storeSettings":{
"type":"AzureBlobStorageWriteSettings"
}
},
"enableStaging":false,
"dataIntegrationUnits":0
},
"inputs":[
{
"referenceName":"OneSourceFile",
"type":"DatasetReference",
"parameters":{
"Container":{
"value":"@pipeline().parameters.SourceStore_Location",
"type":"Expression"
},
"Directory":{
"value":"@pipeline().parameters.SourceStore_Directory",
"type":"Expression"
},
"filename":{
"value":"@item().name",
"type":"Expression"
}
}
}
],
"outputs":[
{
"referenceName":"OneDestinationFile",
"type":"DatasetReference",
"parameters":{
"Container":{
"value":"@pipeline().parameters.DestinationStore_Location",
"type":"Expression"
},
"Directory":{
"value":"@pipeline().parameters.DestinationStore_Directory",
"type":"Expression"
},
"filename":{
"value":"@item().name",
"type":"Expression"
}
}
}
]
},
{
"name":"DeleteAFile",
"type":"Delete",
"dependsOn":[
{
"activity":"CopyAFile",
"dependencyConditions":[
"Succeeded"
]
}
],
"policy":{
"timeout":"7.00:00:00",
"retry":0,
"retryIntervalInSeconds":30,
"secureOutput":false,
"secureInput":false
},
"userProperties":[
],
"typeProperties":{
"dataset":{
"referenceName":"OneSourceFile",
"type":"DatasetReference",
"parameters":{
"Container":{
"value":"@pipeline().parameters.SourceStore_Location",
"type":"Expression"
},
"Directory":{
"value":"@pipeline().parameters.SourceStore_Directory",
"type":"Expression"
},
"filename":{
"value":"@item().name",
"type":"Expression"
}
}
},
"logStorageSettings":{
"linkedServiceName":{
"referenceName":"BloblinkedService",
"type":"LinkedServiceReference"
},
"path":"container/log"
},
"enableLogging":true,
"storeSettings":{
"type":"AzureBlobStorageReadSettings",
"recursive":true
}
}
}
]
}
}
],
"parameters":{
"SourceStore_Location":{
"type":"String"
},
"SourceStore_Directory":{
"type":"String"
},
"DestinationStore_Location":{
"type":"String"
},
"DestinationStore_Directory":{
"type":"String"
}
},
"annotations":[
]
}
}
Conjuntos de dados de exemplo
Conjunto de dados usado pela atividade GetMetadata para enumerar a lista de arquivos.
{
"name":"OneSourceFolder",
"properties":{
"linkedServiceName":{
"referenceName":"AzureStorageLinkedService",
"type":"LinkedServiceReference"
},
"parameters":{
"Container":{
"type":"String"
},
"Directory":{
"type":"String"
}
},
"annotations":[
],
"type":"Binary",
"typeProperties":{
"location":{
"type":"AzureBlobStorageLocation",
"folderPath":{
"value":"@{dataset().Directory}",
"type":"Expression"
},
"container":{
"value":"@{dataset().Container}",
"type":"Expression"
}
}
}
}
}
Conjunto de dados para a fonte de dados usada pela atividade de cópia e pela atividade Excluir.
{
"name":"OneSourceFile",
"properties":{
"linkedServiceName":{
"referenceName":"AzureStorageLinkedService",
"type":"LinkedServiceReference"
},
"parameters":{
"Container":{
"type":"String"
},
"Directory":{
"type":"String"
},
"filename":{
"type":"string"
}
},
"annotations":[
],
"type":"Binary",
"typeProperties":{
"location":{
"type":"AzureBlobStorageLocation",
"fileName":{
"value":"@dataset().filename",
"type":"Expression"
},
"folderPath":{
"value":"@{dataset().Directory}",
"type":"Expression"
},
"container":{
"value":"@{dataset().Container}",
"type":"Expression"
}
}
}
}
}
Conjunto de dados para o destino dos dados usado pela atividade de cópia.
{
"name":"OneDestinationFile",
"properties":{
"linkedServiceName":{
"referenceName":"AzureStorageLinkedService",
"type":"LinkedServiceReference"
},
"parameters":{
"Container":{
"type":"String"
},
"Directory":{
"type":"String"
},
"filename":{
"type":"string"
}
},
"annotations":[
],
"type":"Binary",
"typeProperties":{
"location":{
"type":"AzureBlobStorageLocation",
"fileName":{
"value":"@dataset().filename",
"type":"Expression"
},
"folderPath":{
"value":"@{dataset().Directory}",
"type":"Expression"
},
"container":{
"value":"@{dataset().Container}",
"type":"Expression"
}
}
}
}
}
Você também pode obter o modelo para mover arquivos daqui.
Limitações conhecidas
A atividade de eliminação não suporta a exclusão de listas de pastas descritas por caracteres curinga.
Ao usar o filtro de atributo de arquivo na atividade de exclusão: modifiedDatetimeStart e modifiedDatetimeEnd para selecionar os arquivos a serem excluídos, certifique-se de definir "wildcardFileName": "*" na atividade de exclusão também.
Conteúdos relacionados
Saiba mais sobre como mover ficheiros nos pipelines Azure Data Factory e Synapse.