Tevékenység törlése a Azure Data Factory és Azure Synapse Analytics

A KÖVETKEZŐKRE VONATKOZIK: Azure Data Factory Azure Synapse Analytics

A törlési tevékenységgel a Azure Data Factory törölhet fájlokat vagy mappákat a helyszíni tárolókból vagy a felhőalapú tárolókból. Ezzel a tevékenységgel megtisztíthatja vagy archiválhatja a fájlokat, amikor már nincs rájuk szükség.

Figyelmeztetés

A törölt fájlok vagy mappák nem állíthatók vissza (kivéve, ha a tárolón engedélyezve van a helyreállítható törlés). Körültekintően járjon el, amikor a Törlés művelettel töröl fájlokat vagy mappákat.

Ajánlott eljárások

Íme néhány javaslat a Törlés tevékenység használatával kapcsolatban:

  • Ha a jövőben vissza kell állítania a fájlokat, biztonsági mentést kell törölnie a törlési tevékenységgel.

  • Győződjön meg arról, hogy a szolgáltatás írási engedéllyel rendelkezik mappák vagy fájlok tárolóból való törléséhez.

  • Győződjön meg arról, hogy nem törli az egyidejűleg írt fájlokat.

  • Ha helyszíni rendszerből szeretne fájlokat vagy mappákat törölni, győződjön meg arról, hogy 3.14-esnél újabb verziójú helyi integrációskörnyezetet használ.

Támogatott adattárak

Törlési tevékenység létrehozása a felhasználói felülettel

Ha törlési tevékenységet szeretne használni egy folyamatban, kövesse az alábbi lépéseket:

  1. Keressen rá a Törlés kifejezésre a folyamatTevékenységek panelen, és húzzon egy Törlés tevékenységet a folyamatvászonra.

  2. A részletek szerkesztéséhez jelölje ki a vásznon az új Törlés tevékenységet, ha még nincs kiválasztva, valamint a Forrás lapot.

    Shows the UI for a Delete activity.

  3. Válasszon ki egy meglévőt, vagy hozzon létre egy új adatkészletet, amely meghatározza a törölni kívánt fájlokat. Ha több fájl van kiválasztva, engedélyezheti a rekurzív törlést, amely a gyermekmappákban lévő adatokat is törli. Megadhatja a művelet egyidejű kapcsolatainak maximális számát is.

  4. A naplózás konfigurálható a Naplózási beállítások lap kiválasztásával és egy meglévő naplózási fiókhoz csatolt szolgáltatás helyének létrehozásával a végrehajtott törlési műveletek eredményeinek naplózására.

    Shows the  Logging settings  tab for a Delete activity.

Syntax

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

Típustulajdonságok

Tulajdonság Leírás Kötelező
Adatkészlet Az adatkészlet referenciáját biztosítja a törölni kívánt fájlok vagy mappák meghatározásához Igen
Rekurzív Azt jelzi, hogy a fájlok rekurzívan törlődnek-e az almappákból, vagy csak a megadott mappából. Nem. A mező alapértelmezett értéke: false.
maxConcurrentConnections A tárolóhoz egyidejűleg csatlakozni kívánt kapcsolatok száma mappa vagy fájlok törlése érdekében. Nem. A mező alapértelmezett értéke: 1.
enablelogging (engedélyezés engedélyezése) Jelzi, hogy rögzítenie kell-e a törölt mappa- vagy fájlneveket. Ha igaz, akkor további tárfiókot kell adnia a naplófájl mentéséhez, hogy a naplófájl beolvasása alapján nyomon tudja követni a Törlés tevékenység viselkedését. Nem
logStorageSettings Csak akkor alkalmazható, ha enablelogging = true.

Tárolótulajdonságok egy csoportja, amely a Törlés tevékenység által törölt mappa- vagy fájlneveket tartalmazó naplófájl mentéséhez adható meg.
Nem
linkedServiceName Csak akkor alkalmazható, ha enablelogging = true.

Az Azure Storage,az Azure Data Lake Storage Gen1vagy az Azure Data Lake Storage Gen2 csatolt szolgáltatása a Delete tevékenység által törölt mappát vagy fájlneveket tartalmazó naplófájl tárolására. Vegye figyelembe, hogy a törlési tevékenység által a fájlok törléséhez használt Integration Runtime azonos típusú fájltípussal kell konfigurálni.
Nem
path Csak akkor alkalmazható, ha enablelogging = true.

A naplófájl tárfiókba mentésének elérési útja. Ha nem ad meg elérési utat, a szolgáltatás létrehoz egy tárolót.
Nem

Figyelés

A Törlés tevékenység eredményeit két helyen láthatja és figyelheti:

  • A Delete tevékenység kimenetében.
  • A naplófájlból.

Mintakimenet a Törlés tevékenységből

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

Minta naplófájl a Törlés tevékenységről

Name Kategória Állapot Hiba
test1/yyy.json Fájl Törölve
test2/hello789.txt Fájl Törölve
test2/test3/hello000.txt Fájl Törölve
test2/test3/zzz.json Fájl Törölve

Példák a Törlés tevékenység használatára

Adott mappák vagy fájlok törlése

A tároló a következő mappastruktúrával rendelkezik:

Gyökér/
    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

Most a Törlés tevékenységgel töröl egy mappát vagy fájlt az adatkészlet különböző tulajdonságértékének és a Törlés tevékenységnek a kombinációja alapján:

folderPath fileName Rekurzív Kimenet
Root/Folder_A_2 NULL Hamis Gyökér/
    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
Root/Folder_A_2 NULL Igaz Gyökér/
    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
Root/Folder_A_2 *.txt Hamis Gyökér/
    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
Root/Folder_A_2 *.txt Igaz Gyökér/
    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

Az időpartíciós mappa vagy fájlok rendszeres törlése

Létrehozhat egy folyamatot, amely rendszeres időközönként megtisztítja az idő particionált mappáit vagy fájljait. A mappastruktúra például a következő: /mycontainer/2018/12/14/*.csv . Az ütemezési eseményindító szolgáltatási rendszerváltozóját kihasználva azonosíthatja, hogy melyik mappát vagy fájlokat kell törölni az egyes folyamatfuttatások során.

Minta folyamat

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

        ]
    }
}

Mintaadatkészlet

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

Mintatrigger

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

A 2018.1.1 előtt utoljára módosított lejárt fájlok törlése

Létrehozhat egy folyamatot a régi vagy lejárt fájlok tisztítására a "LastModified" fájlattribútum-szűrővel az adatkészletben.

Minta folyamat

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

        ]
    }
}

Mintaadatkészlet

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

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

Fájlok áthelyezése a Copy tevékenység törlési tevékenység láncolása által

A fájlok áthelyezéséhez egy Copy tevékenység másolhat egy fájlt, majd egy Törlés tevékenységgel törölheti a folyamat egy fájlját. Ha több fájlt szeretne áthelyezni, használhatja a GetMetadata tevékenység + Szűrési tevékenység + Foreach tevékenység + Copy tevékenység + Tevékenység törlése műveletet az alábbi mintában találhatóak szerint.

Megjegyzés

Ha a teljes mappát úgy szeretné áthelyezni, hogy csak egy mappaútvonalat tartalmazó adatkészletet definiál, majd egy Copy tevékenység és egy Törlés tevékenység használatával hivatkozik a mappát képviselő adatkészletre, nagyon körültekintőnek kell lennie. Győződjön meg arról, hogy a másolási művelet és a törlési művelet között nem érkeznek új fájlok a mappába. Ha új fájlok érkeznek a mappába abban a pillanatban, amikor a másolási tevékenység éppen befejezte a másolási feladatot, de a Törlés tevékenység még nem indult el, akkor a Törlés tevékenység törölheti az újonnan érkező fájlt, amely még NEM lett átmásolva a célhelyre a teljes mappa törlésével.

Minta folyamat

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

        ]
    }
}

Mintaadatkészletek

A GetMetadata tevékenység által a fájllista számbavételéhez használt adatkészlet.

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

A másolási tevékenység és a Törlés tevékenység által használt adatforrás adatkészlete.

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

A másolási tevékenység által használt adatcél adatkészlete.

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

A fájlok áthelyezéséhez szükséges sablont innen is lekértheti.

Ismert korlátozások

  • A törlési tevékenység nem támogatja a helyettesítő karakter használatával leírt mappák listájának törlését.

  • Ha fájlattribútum-szűrőt használ a törlési tevékenységben: modifiedDatetimeStart és modifiedDatetimeEnd a törölni kívánt fájlok kiválasztásához, mindenképpen állítsa be a "wildcardFileName": "*" paramétert a törlési tevékenységben is.

Következő lépések

További információ a fájlok áthelyezéséhez Azure Data Factory Synapse-folyamatokban.