Activiteit verwijderen in Azure Data Factory en Azure Synapse Analytics

VAN TOEPASSING OP: Azure Data Factory Azure Synapse Analytics

Tip

Probeer Data Factory uit in Microsoft Fabric, een alles-in-één analyseoplossing voor ondernemingen. Microsoft Fabric omvat alles, van gegevensverplaatsing tot gegevenswetenschap, realtime analyses, business intelligence en rapportage. Meer informatie over het gratis starten van een nieuwe proefversie .

U kunt de activiteit Verwijderen in Azure Data Factory gebruiken om bestanden of mappen uit on-premises opslagarchieven of cloudopslagarchieven te verwijderen. Gebruik deze activiteit om bestanden op te schonen of te archiveren wanneer ze niet meer nodig zijn.

Waarschuwing

Verwijderde bestanden of mappen kunnen niet worden hersteld (tenzij voorlopig verwijderen is ingeschakeld voor de opslag). Wees voorzichtig wanneer u de activiteit Verwijderen gebruikt voor het verwijderen van bestanden of mappen.

Aanbevolen procedures

Hier volgen enkele aanbevelingen voor het gebruik van de activiteit Verwijderen:

  • Maak een back-up van uw bestanden voordat u ze verwijdert met de activiteit Verwijderen voor het geval u ze in de toekomst moet herstellen.

  • Zorg ervoor dat de service schrijfmachtigingen heeft om mappen of bestanden uit het opslagarchief te verwijderen.

  • Zorg ervoor dat u geen bestanden verwijdert die tegelijkertijd worden geschreven.

  • Als u bestanden of mappen uit een on-premises systeem wilt verwijderen, moet u ervoor zorgen dat u een zelf-hostende Integration Runtime gebruikt met een versie die groter is dan 3.14.

Ondersteunde gegevensarchieven

Een activiteit Verwijderen maken met de gebruikersinterface

Voer de volgende stappen uit om een verwijderactiviteit in een pijplijn te gebruiken:

  1. Zoek naar Verwijderen in het deelvenster Pijplijnactiviteiten en sleep een activiteit Verwijderen naar het pijplijncanvas.

  2. Selecteer de nieuwe activiteit Verwijderen op het canvas als deze nog niet is geselecteerd en het tabblad Bron om de details ervan te bewerken.

    Shows the UI for a Delete activity.

  3. Selecteer een bestaande of maak een nieuwe gegevensset die de bestanden opgeeft die moeten worden verwijderd. Als er meerdere bestanden zijn geselecteerd, schakelt u eventueel recursieve verwijdering in, waardoor ook gegevens in onderliggende mappen worden verwijderd. U kunt ook een maximum aantal gelijktijdige verbindingen voor de bewerking opgeven.

  4. Configureer eventueel logboekregistratie door het tabblad Logboekregistratie-instellingen te selecteren en een bestaande of een nieuwe gekoppelde servicelocatie voor logboekregistratieaccounts te maken om de resultaten van de uitgevoerde verwijderingsbewerkingen te registreren.

    Shows the  Logging settings  tab for a Delete activity.

Syntaxis

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

Typeeigenschappen

Eigenschappen Beschrijving Vereist
gegevensset Geeft de verwijzing naar de gegevensset om te bepalen welke bestanden of mappen moeten worden verwijderd Ja
Recursieve Hiermee wordt aangegeven of de bestanden recursief worden verwijderd uit de submappen of alleen uit de opgegeven map. Nee De standaardwaarde is false.
maxConcurrent Verbinding maken ions Het aantal verbindingen dat gelijktijdig verbinding moet maken met het opslagarchief voor het verwijderen van mappen of bestanden. Nee De standaardwaarde is 1.
logboekregistratie inschakelen Hiermee wordt aangegeven of u de verwijderde map- of bestandsnamen moet opnemen. Indien waar, moet u verder een opslagaccount opgeven om het logboekbestand op te slaan, zodat u het gedrag van de activiteit Verwijderen kunt bijhouden door het logboekbestand te lezen. Nee
logStorage Instellingen Alleen van toepassing als enablelogging = true.

Een groep opslageigenschappen die kunnen worden opgegeven waar u het logboekbestand wilt opslaan met de map- of bestandsnamen die zijn verwijderd door de activiteit Verwijderen.
Nee
linkedServiceName Alleen van toepassing als enablelogging = true.

De gekoppelde service van Azure Storage, Azure Data Lake Storage Gen1 of Azure Data Lake Storage Gen2 om het logboekbestand op te slaan dat de map- of bestandsnamen bevat die zijn verwijderd door de activiteit Verwijderen. Houd er rekening mee dat het moet worden geconfigureerd met hetzelfde type Integration Runtime van het type dat door de verwijderactiviteit wordt gebruikt om bestanden te verwijderen.
Nee
path Alleen van toepassing als enablelogging = true.

Het pad om het logboekbestand op te slaan in uw opslagaccount. Als u geen pad opgeeft, maakt de service een container voor u.
Nee

Controleren

Er zijn twee plaatsen waar u de resultaten van de activiteit Verwijderen kunt bekijken en controleren:

  • Uit de uitvoer van de activiteit Verwijderen.
  • Uit het logboekbestand.

Voorbeelduitvoer van de activiteit Verwijderen

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

Voorbeeldlogboekbestand van de activiteit Verwijderen

Naam Categorie Status Error
test1/yyy.json Bestand Verwijderd
test2/hello789.txt Bestand Verwijderd
test2/test3/hello000.txt Bestand Verwijderd
test2/test3/zzz.json Bestand Verwijderd

Voorbeelden van het gebruik van de activiteit Verwijderen

Specifieke mappen of bestanden verwijderen

Het archief heeft de volgende mapstructuur:

Root/
    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

U gebruikt nu de activiteit Verwijderen om map of bestanden te verwijderen door de combinatie van verschillende eigenschapswaarde uit de gegevensset en de activiteit Verwijderen:

folderPath fileName Recursieve Uitvoer
Hoofdmap/Folder_A_2 NULL Onwaar Root/
    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
Hoofdmap/Folder_A_2 NULL Waar Root/
    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
Hoofdmap/Folder_A_2 *.Txt Onwaar Root/
    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
Hoofdmap/Folder_A_2 *.Txt Waar Root/
    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

Regelmatig de tijdpartitioneerde map of bestanden opschonen

U kunt een pijplijn maken om de tijd gepartitioneerde map of bestanden periodiek op te schonen. De mapstructuur is bijvoorbeeld vergelijkbaar met: /mycontainer/2018/12/14/*.csv. U kunt de servicesysteemvariabele van de schematrigger gebruiken om te bepalen welke map of bestanden in elke pijplijnuitvoering moeten worden verwijderd.

Voorbeeldpijplijn

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

        ]
    }
}

Voorbeeldgegevensset

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

Voorbeeldtrigger

{
    "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
                    ]
                }
            }
        }
    }
}

De verlopen bestanden opschonen die voor het laatst zijn gewijzigd vóór 2018.1.1

U kunt een pijplijn maken om de oude of verlopen bestanden op te schonen met behulp van het bestandskenmerkfilter: 'LastModified' in de gegevensset.

Voorbeeldpijplijn

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

        ]
    }
}

Voorbeeldgegevensset

{
    "name":"BlobFilesLastModifiedBefore201811",
    "properties":{
        "linkedServiceName":{
            "referenceName":"BloblinkedService",
            "type":"LinkedServiceReference"
        },
        "annotations":[

        ],
        "type":"Binary",
        "typeProperties":{
            "location":{
                "type":"AzureBlobStorageLocation",
                "fileName":"*",
                "folderPath":"mydirectory",
                "container":"mycontainer"
            }
        }
    }
}

Bestanden verplaatsen door de Copy-activiteit en de activiteit Verwijderen te koppelen

U kunt een bestand verplaatsen met behulp van een Copy-activiteit om een bestand te kopiëren en vervolgens een activiteit Verwijderen om een bestand in een pijplijn te verwijderen. Wanneer u meerdere bestanden wilt verplaatsen, kunt u de GetMetadata-activiteit + Filteractiviteit + Foreach-activiteit + Copy-activiteit + Delete-activiteit gebruiken, zoals in het volgende voorbeeld.

Notitie

Als u de hele map wilt verplaatsen door alleen een gegevensset met een mappad te definiëren en vervolgens een Copy-activiteit en een activiteit Verwijderen te gebruiken om te verwijzen naar dezelfde gegevensset die een map vertegenwoordigt, moet u heel voorzichtig zijn. U moet ervoor zorgen dat er geen nieuwe bestanden in de map terechtkomen tussen de kopieerbewerking en de verwijderbewerking. Als nieuwe bestanden in de map binnenkomen op het moment dat de kopieeractiviteit zojuist de kopieertaak heeft voltooid, maar de activiteit Verwijderen niet is gestart, kan de activiteit Verwijderen het zojuist binnengekomen bestand verwijderen dat nog niet naar het doel is gekopieerd door de hele map te verwijderen.

Voorbeeldpijplijn

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

        ]
    }
}

Voorbeeldgegevenssets

Gegevensset die wordt gebruikt door getMetadata-activiteit om de lijst met bestanden op te sommen.

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

Gegevensset voor gegevensbron die wordt gebruikt door kopieeractiviteit en de activiteit Verwijderen.

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

Gegevensset voor gegevensbestemming die wordt gebruikt door kopieeractiviteit.

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

U kunt de sjabloon ook ophalen om bestanden hier te verplaatsen.

Bekende beperkingen

  • Verwijderen-activiteit biedt geen ondersteuning voor het verwijderen van een lijst met mappen die worden beschreven met jokertekens.

  • Wanneer u het filter voor bestandskenmerken gebruikt in de verwijderactiviteit: modifiedDatetimeStart en modifiedDatetimeEnd om bestanden te selecteren die moeten worden verwijderd, moet u ook 'jokertekenBestandName': '*' instellen in de verwijderactiviteit.

Meer informatie over het verplaatsen van bestanden in Azure Data Factory- en Synapse-pijplijnen.