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
- Azure Blob Storage
- Azure Data Lake Storage Gen1
- Azure Data Lake Storage Gen2
- Azure Files
- Bestandssysteem
- FTP
- SFTP
- Microsoft Fabric Lakehouse
- Amazon S3
- Amazon S3-compatibele opslag
- Google Cloud Storage
- Oracle Cloud Storage
- HDFS
Een activiteit Verwijderen maken met de gebruikersinterface
Voer de volgende stappen uit om een verwijderactiviteit in een pijplijn te gebruiken:
Zoek naar Verwijderen in het deelvenster Pijplijnactiviteiten en sleep een activiteit Verwijderen naar het pijplijncanvas.
Selecteer de nieuwe activiteit Verwijderen op het canvas als deze nog niet is geselecteerd en het tabblad Bron om de details ervan te bewerken.
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.
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.
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 |
recursief | Hiermee wordt aangegeven of de bestanden recursief worden verwijderd uit de submappen of alleen uit de opgegeven map. | Nee De standaardwaarde is false . |
maxConcurrentConnections | 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 |
logStorageSettings | 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:
Wortel/
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 | recursief | Uitvoer |
---|---|---|---|
Hoofdmap/Folder_A_2 | NULL | Onwaar | Wortel/ Folder_A_1/ 1.txt 2.txt 3.csv Folder_A_2/ Folder_B_1/ 6.txt 7.csv Folder_B_2/ 8.txt |
Hoofdmap/Folder_A_2 | NULL | Waar | Wortel/ Folder_A_1/ 1.txt 2.txt 3.csv |
Hoofdmap/Folder_A_2 | *.Txt | Onwaar | Wortel/ 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 |
Hoofdmap/Folder_A_2 | *.Txt | Waar | Wortel/ Folder_A_1/ 1.txt 2.txt 3.csv Folder_A_2/ 5.csv Folder_B_1/ 7.csv Folder_B_2/ |
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.
Gerelateerde inhoud
Meer informatie over het verplaatsen van bestanden in Azure Data Factory- en Synapse-pijplijnen.