Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
APPLIES TO:
Azure Data Factory
Azure Synapse Analytics
Tip
Data Factory v Microsoft Fabric je nová generace Azure Data Factory s jednodušší architekturou, integrovanou AI a novými funkcemi. Pokud s integrací dat začínáte, začněte Fabric Data Factory. Stávající úlohy ADF lze upgradovat na Fabric pro přístup k novým funkcím v oblastech datové vědy, analýz v reálném čase a vytváření sestav.
Aktivitu odstranění v Azure Data Factory můžete použít k odstranění souborů nebo složek z místních úložišť úložiště nebo z úložišť cloudového úložiště. Tato aktivita slouží k vyčištění nebo archivaci souborů, když už je nepotřebujete.
Upozornění
Odstraněné soubory nebo složky nelze obnovit (pokud úložiště nemá povolené obnovitelné odstranění). Při odstraňování souborů nebo složek pomocí aktivity odstranění postupujte opatrně.
Osvědčené postupy
Tady je několik doporučení pro použití aktivity Odstranění:
Před odstraněním souborů zálohujte soubory s aktivitou Odstranění v případě, že je v budoucnu potřebujete obnovit.
Ujistěte se, že služba má oprávnění k zápisu a mazání složek nebo souborů z úložiště.
Ujistěte se, že neodstraníte soubory, které se zapisují současně.
Pokud chcete odstranit soubory nebo složku z místního systému, ujistěte se, že používáte místní prostředí Integration Runtime s verzí vyšší než 3.14.
Podporovaná úložiště dat
- Azure Blob Storage
- Azure Data Lake Storage Gen1
- Azure Data Lake Storage Gen2
- Azure Files
- Systém souborů
- FTP
- SFTP
- Microsoft Fabric Lakehouse
- Amazon S3
- Úložiště kompatibilní s Amazon S3
- Cloudové úložiště Googlu
- Cloudové úložiště Oracle
- HDFS
Vytvoření aktivity odstranění pomocí uživatelského rozhraní
Pro použití aktivity odstranění v potrubí proveďte následující kroky:
Vyhledejte Odstranění v podokně Aktivity datového kanálu a přetáhněte aktivitu Odstranění na plátno datového kanálu.
Pokud ještě není vybraná, vyberte na plátně novou aktivitu Odstranit a její podrobnosti upravte na kartě Zdroj .
Vyberte existující nebo vytvořte novou datovou sadu určující soubory, které se mají odstranit. Pokud je vybráno více souborů, volitelně povolte rekurzivní odstranění, které odstraní i data v podřízených složkách. Můžete také zadat maximální počet souběžných připojení pro operaci.
Volitelně můžete nakonfigurovat protokolování tak, že vyberete kartu Nastavení protokolování a poté vyberete existující umístění propojené služby účtu pro protokolování nebo vytvoříte nové, čímž budete schopni protokolovat výsledky operací odstranění.
Zobrazuje kartu Nastavení protokolování pro aktivitu odstranění.
Syntaxe
{
"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>"
}
}
}
Vlastnosti typu
| Vlastnost | Popis | Požadováno |
|---|---|---|
| datová sada | Poskytuje odkaz na datovou sadu pro určení souborů nebo složek, které se mají odstranit. | Ano |
| rekurzivní | Určuje, zda jsou soubory odstraněny rekurzivně z podsložek nebo pouze ze zadané složky. | Ne. Výchozí hodnota je false. |
| maximálníPočetSoučasnýchPřipojení | Počet současných připojení k úložišti pro odstranění složek nebo souborů. | Ne. Výchozí hodnota je 1. |
| povolení protokolování | Určuje, jestli potřebujete zaznamenat odstraněnou složku nebo názvy souborů. Pokud je pravda, budete muset dále poskytnout účet úložiště pro uložení souboru protokolu, abyste mohli sledovat chování aktivity odstranění přečtením souboru protokolu. | Ne |
| Nastavení úložiště záznamů | Platí pouze v případě, že enablelogging = true. Skupinu vlastností úložiště, které lze určit, kam chcete uložit soubor protokolu obsahující názvy složek nebo souborů odstraněných aktivitou Odstranění. |
Ne |
| názevPropojenéSlužby | Platí pouze v případě, že enablelogging = true. Propojená služba Azure Storage, Azure Data Lake Storage Gen1 nebo Azure Data Lake Storage Gen2 k uložení souboru protokolu, který obsahuje názvy složek nebo souborů odstraněných aktivitou Delete. Mějte na paměti, že musí být nakonfigurován stejný typ Integration Runtime jako ten, který používá aktivita odstranění pro odstraňování souborů. |
Ne |
| cesta | Platí pouze v případě, že enablelogging = true. Cesta k uložení souboru protokolu do účtu úložiště. Pokud nezadáte nějakou cestu, služba za vás vytvoří kontejner. |
Ne |
Sledování
Existují dvě místa, kde můžete zobrazit a monitorovat výsledky aktivity odstranění:
- Z výstupu aktivity Delete.
- Ze souboru protokolu.
Ukázkový výstup aktivity Odstranění
{
"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
}
Ukázkový soubor protokolu aktivity Odstranění
| Název | Kategorie | Stav | Chyba |
|---|---|---|---|
| test1/yyy.json | Soubor | Odstraněné | |
| test2/hello789.txt | Soubor | Odstraněné | |
| test2/test3/hello000.txt | Soubor | Odstraněné | |
| test2/test3/zzz.json | Soubor | Odstraněné |
Příklady použití aktivity Odstranění
Odstranění konkrétních složek nebo souborů
Úložiště má následující strukturu složek:
Kořen/
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
Teď používáte aktivitu Odstranění k odstranění složek nebo souborů kombinací různých hodnot vlastností z datové sady a aktivity Delete:
| folderPath | název souboru | rekurzivní | Výstup |
|---|---|---|---|
| Kořen/ Folder_A_2 | NULL | Nepravda | Kořen/ Folder_A_1/ 1.txt 2.txt 3.csv Folder_A_2/ Folder_B_1/ 6.txt 7.csv Folder_B_2/ 8.txt |
| Kořen/ Folder_A_2 | NULL | Pravda | Kořen/ Folder_A_1/ 1.txt 2.txt 3.csv |
| Kořen/ Folder_A_2 | *.txt | Nepravda | Kořen/ 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 |
| Kořen/ Folder_A_2 | *.txt | Pravda | Kořen/ Folder_A_1/ 1.txt 2.txt 3.csv Folder_A_2/ 5.csv Folder_B_1/ 7.csv Folder_B_2/ |
Pravidelné čištění časově dělené složky nebo souborů
Můžete vytvořit potrubí, které bude pravidelně čistit časově rozdělenou složku nebo soubory. Například struktura složek je podobná jako: /mycontainer/2018/12/14/*.csv. Systémovou proměnnou služby můžete použít ze spouštěče plánu k určení, které složky nebo soubory by měly být odstraněny při každém spuštění datového toku.
Ukázkový kanál
{
"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":[
]
}
}
Ukázková datová sada
{
"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"
}
}
}
}
}
Příklad triggeru
{
"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
]
}
}
}
}
}
Vyčištění souborů s vypršenou platností, které byly naposledy změněny před 2018.1.1
Kanál pro vyčištění starých souborů nebo souborů s vypršenou platností můžete vytvořit pomocí filtru atributů souboru: LastModified v datové sadě.
Ukázkový kanál
{
"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":[
]
}
}
Ukázková datová sada
{
"name":"BlobFilesLastModifiedBefore201811",
"properties":{
"linkedServiceName":{
"referenceName":"BloblinkedService",
"type":"LinkedServiceReference"
},
"annotations":[
],
"type":"Binary",
"typeProperties":{
"location":{
"type":"AzureBlobStorageLocation",
"fileName":"*",
"folderPath":"mydirectory",
"container":"mycontainer"
}
}
}
}
Přesuňte soubory propojením aktivity kopírování a aktivity mazání
Můžete přesunout soubor tak, že nejprve použijete aktivitu Kopírování ke zkopírování souboru a poté aktivitu Odstranění k jeho odstranění v kanálu. Pokud chcete přesunout více souborů, můžete použít aktivitu GetMetadata + Filtrovat aktivitu + Aktivita Foreach + aktivita Copy + Delete, jak je znázorněno v následující ukázce.
Poznámka:
Pokud chcete přesunout celou složku tím, že definujete datovou sadu obsahující pouze cestu ke složce, a poté použijete aktivitu "aktivita Copy" a "Delete activity", která odkazuje na stejnou datovou sadu představující složku, je třeba být velmi opatrní. Musíte zajistit, aby mezi operací kopírování a operací odstranění nebyly žádné nové soubory přicházející do složky. Pokud nové soubory dorazí do složky v okamžiku, kdy aktivita kopírování právě dokončila úlohu kopírování, ale aktivita Odstranění nebyla spuštěna, může odstranit nově přicházející soubor, který ještě nebyl zkopírován do cíle odstraněním celé složky.
Ukázkový kanál
{
"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":[
]
}
}
Ukázkové datové sady
Datová sada používaná aktivitou GetMetadata k vytvoření výčtu seznamu souborů
{
"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"
}
}
}
}
}
Datová sada pro zdroj dat používaný aktivitou kopírování a aktivitou Delete
{
"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"
}
}
}
}
}
Datová sada pro cíl dat používaný aktivitou kopírování
{
"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"
}
}
}
}
}
Šablonu k přesunutí souborů můžete získat také odsud.
Známá omezení
Aktivita odstranění nepodporuje odstranění seznamu složek popsaných zástupným znakem.
Při použití filtru atributu souboru v aktivitě odstranění: modifiedDatetimeStart a modifiedDatetimeEnd k výběru souborů, které chcete odstranit, nezapomeňte také nastavit "wildcardFileName": "*" v aktivitě odstranění.
Související obsah
Přečtěte si další informace o přesouvání souborů v kanálech Azure Data Factory a Synapse.