Aktivita odstranění ve službě Azure Data Factory a Azure Synapse Analytics
PLATÍ PRO: Azure Data Factory Azure Synapse Analytics
Tip
Vyzkoušejte si službu Data Factory v Microsoft Fabric, řešení pro analýzy typu all-in-one pro podniky. Microsoft Fabric zahrnuje všechno od přesunu dat až po datové vědy, analýzy v reálném čase, business intelligence a vytváření sestav. Přečtěte si, jak začít používat novou zkušební verzi zdarma.
Aktivitu odstranění ve službě Azure Data Factory můžete použít k odstranění souborů nebo složek z místních úložišť úložiště nebo úložišť cloudového úložiště. Tato aktivita slouží k vyčištění nebo archivaci souborů, když už je nepotřebujete.
Upozorňující
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 k odstranění složek nebo souborů z úložiště ú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
- Oracle Cloud Storage
- HDFS
Vytvoření aktivity odstranění pomocí uživatelského rozhraní
Pokud chcete v kanálu použít aktivitu odstranění, proveďte následující kroky:
Vyhledejte odstranění v podokně Aktivity kanálu a přetáhněte aktivitu Odstranění na plátno 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 vyberete existující nebo vytvoříte nové propojené umístění propojené služby s účtem protokolování, abyste mohli protokolovat výsledky provedených operací 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 | Povinní účastníci |
---|---|---|
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 . |
maxConcurrentConnections | Počet připojení pro připojení k úložišti úložiště souběžně pro odstranění složky 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. | No |
logStorageSettings | 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í. |
No |
linkedServiceName | Platí pouze v případě, že enablelogging = true. Propojená služba Azure Storage, Azure Data Lake Storage Gen1 nebo Azure Data Lake Storage Gen2 pro ukládání souboru protokolu, který obsahuje názvy složek nebo souborů odstraněných aktivitou odstranění. Mějte na paměti, že musí být nakonfigurovaný se stejným typem prostředí Integration Runtime, který používá aktivita odstranění k odstranění souborů. |
No |
path | Platí pouze v případě, že enablelogging = true. Cesta k uložení souboru protokolu do účtu úložiště. Pokud cestu nezadáte, služba za vás vytvoří kontejner. |
No |
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 | fileName | rekurzivní | Výstup |
---|---|---|---|
Kořen/ Folder_A_2 | NULL | False | 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 | True | Kořen/ Folder_A_1/ 1.txt 2.txt 3.csv |
Kořen/ Folder_A_2 | *.Txt | False | 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 | True | 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 kanál, který bude pravidelně vyčistit čas dě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 z triggeru plánu k identifikaci složky nebo souborů, které se mají v každém spuštění kanálu odstranit.
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řesunutí souborů zřetězeným aktivita Copy a aktivitou Delete
Soubor můžete přesunout pomocí aktivita Copy ke zkopírování souboru a následné aktivitě Odstranění pro odstranění souboru v kanálu. Pokud chcete přesunout více souborů, můžete použít aktivitu GetMetadata + Filtrovat aktivitu + Aktivita Foreach + aktivita Copy + Delete aktivity jako v následující ukázce.
Poznámka:
Pokud chcete přesunout celou složku tak, že definujete datovou sadu obsahující pouze cestu ke složce, a pak použijete aktivita Copy a aktivitu Odstranění, která odkazuje na stejnou datovou sadu představující složku, musíte 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 můžete také získat k přesunutí souborů 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.