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

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:

  1. Vyhledejte odstranění v podokně Aktivity kanálu a přetáhněte aktivitu Odstranění na plátno kanálu.

  2. Pokud ještě není vybraná, vyberte na plátně novou aktivitu Odstranit a její podrobnosti upravte na kartě Zdroj .

    Shows the UI for a Delete activity.

  3. 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.

  4. 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í.

    Shows the  Logging settings  tab for a Delete activity.

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.
maxConcurrent Připojení ions 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
logStorage Nastavení 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ěno
test2/hello789.txt Soubor Odstraněno
test2/test3/hello000.txt Soubor Odstraněno
test2/test3/zzz.json Soubor Odstraněno

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řenové/
    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řenové/
    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
Kořen/ Folder_A_2 NULL True Kořenové/
    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
Kořen/ Folder_A_2 *.Txt False Kořenové/
    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
Kořen/ Folder_A_2 *.Txt True Kořenové/
    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

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í.

Přečtěte si další informace o přesouvání souborů v kanálech Azure Data Factory a Synapse.