Teendő törlése az Azure Data Factory és az Azure Synapse Analytics rendszerben

Vonatkozik: Azure Data Factory Azure Synapse Analytics

Tipp.

Data Factory a Microsoft Fabric a Azure Data Factory következő generációja, egyszerűbb architektúrával, beépített AI-vel és új funkciókkal. Ha még nem ismerkedik az adatintegrációval, kezdje a Fabric Data Factoryvel. A meglévő ADF-számítási feladatok frissíthetők Fabric használatával, hogy elérjék az adatkutatás, a valós idejű elemzés és a jelentéskészítés új képességeit.

A Azure Data Factory törlési tevékenységével fájlokat vagy mappákat törölhet a helyszíni tárolókból vagy a felhőbeli tárolókból. Ezzel a tevékenységsel törölheti vagy archiválhatja a fájlokat, ha 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árterületen 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ési tevékenység használatára:

  • A törlési tevékenységgel történő törlés előtt biztonsági másolatot készít a fájlokról, ha a jövőben vissza kell állítania őket.

  • Győződjön meg arról, hogy a szolgáltatás rendelkezik írási engedélyekkel a 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 egy helyszíni rendszerből szeretne fájlokat vagy mappákat törölni, győződjön meg arról, hogy a 3.14-esnél nagyobb verziójú, saját üzemeltetésű integrációs modult használ.

Támogatott adattárak

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

Ha törlési tevékenységet szeretne használni egy folyamatban, hajtsa végre a következő lépéseket:

  1. Keresse meg a Delete tevékenységet a pipeline tevékenységek panelen, és húzza a Delete tevékenységet a folyamatvászonra.

  2. Ha még nincs kijelölve, jelölje ki az új törlési tevékenységet a vásznon, és a Forrás fület a részletek szerkesztéséhez.

    A törlési tevékenység felhasználói felületét jeleníti meg.

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

  4. Ha szeretné, konfigurálja a naplózást a Naplózási beállítások lapon, és válasszon ki egy meglévőt, vagy hozzon létre egy új naplózási fiókhoz társított szolgáltatáshelyet az elvégzett törlési műveletek eredményeinek naplózásához.

    Megjeleníti a Naplózási beállítások fület a Törlés művelethez.

Szintaxis

{
    "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ő
adathalmaz Megadja az adathalmaz-hivatkozást annak meghatározásához, hogy mely fájlokat vagy mappákat kell törölni Igen
rekurzív Azt jelzi, hogy a fájlok rekurzív módon törlődnek-e az almappákból, vagy csak a megadott mappából. Nem Az alapértelmezett érték false.
maxConcurrentConnections A tárolótárhoz egyidejűleg a mappa vagy fájlok törléséhez csatlakoztatandó kapcsolatok száma. Nem Az alapértelmezett érték 1.
naplózás engedélyezése Jelzi, hogy rögzítenie kell-e a törölt mappát vagy a fájlneveket. Ha igaz, a naplófájl mentéséhez további tárfiókot kell megadnia, hogy a naplófájl olvasásával nyomon tudja követni a Delete tevékenység viselkedését. Nem
napló tárolási beállítások Csak akkor alkalmazható, ha a naplózás engedélyezése be van állítva igazra.

Tárolótulajdonságok csoportja, amely megadhatja, hogy hová szeretné menteni a Törlés tevékenység által törölt mappát vagy fájlneveket tartalmazó naplófájlt.
Nem
linkedServiceName (CsatlakoztatottSzolgáltatásNév) Csak akkor alkalmazható, ha a naplózás engedélyezése be van állítva igazra.

A Azure Storage, Azure Data Lake Storage Gen1 vagy Azure Data Lake Storage Gen2 társított szolgáltatása tárolja a Törlés tevékenység által törölt mappát vagy fájlneveket tartalmazó naplófájlt. Vegye figyelembe, hogy ugyanazzal a típusú Integration Runtime-mal kell konfigurálni, amelyet a fájltörlési tevékenység használ a fájlok törlésére.
Nem
elérési út Csak akkor alkalmazható, ha a naplózás engedélyezése be van állítva igazra.

A naplófájl tárfiókban való 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ési tevékenység eredményeit két helyen tekintheti meg és figyelheti:

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

A Törlési tevékenység mintakimenete

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

A Törlési tevékenység minta naplófájlja

Név Kategória Állapot Hiba
teszt1/yyy.json Fájl Törölve
teszt2/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 Delete tevékenység használatára

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

Az áruház 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 Delete tevékenység használatával törli a mappát vagy a fájlokat az adathalmaz különböző tulajdonságértékeinek és a Törlés tevékenységnek a kombinációjával:

folderPath fájlnév rekurzív Kimenet
Gyökér/ 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
Gyökér/ 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
Gyökér/ 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
Gyökér/ 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őparticionált mappa vagy fájlok rendszeres tisztítása

Létrehozhat egy folyamatot, amely rendszeres időközönként megtisztítja az időparticionált mappát vagy fájlokat. A mappastruktúra például a következőhöz hasonló: /mycontainer/2018/12/14/*.csv. Az ütemezési eseményindító szolgáltatásrendszer-változója segítségével meghatározhatja, hogy melyik mappát vagy fájlokat kell törölni az egyes folyamatfuttatásokban.

Mintaadatfolyam

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

Törölje a 2018.1.1 előtt legutóbb módosított lejárt fájlokat

Létrehozhat egy folyamatot a régi vagy lejárt fájlok törléséhez a következő fájlattribútumszűrő használatával: "LastModified" az adathalmazban.

Mintaadatfolyam

{
    "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 activity" és a "Delete activity" láncolásával

A fájlokat áthelyezheti egy Másolási művelet használatával, amellyel egy fájlt másol, majd egy Törlési művelet segítségével töröl egy fájlt a folyamatban. 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 activity + Törlés tevékenységet, mint az alábbi példában.

Megjegyzés

Ha a teljes mappát úgy szeretné áthelyezni, hogy csak egy mappa elérési útját tartalmazó adatkészletet határoz meg, majd egy Copy activity és törlési tevékenység használatával ugyanarra az adatkészletre hivatkozik, amely egy mappát jelöl, nagyon óvatosnak 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 az új fájlok abban a pillanatban érkeznek a mappába, amikor a másolási tevékenység éppen befejezte a másolási feladatot, de a Törlési tevékenység nem indult el, akkor a Törlés tevékenység törölheti az újonnan érkező fájlt, amelyet még nem másolt a célhelyre a teljes mappa törlésével.

Mintaadatfolyam

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

Az adatkészlet, amit az adat célhelyére irányuló másolási tevékenységhez használnak.

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

Innen is letöltheti a sablont a fájlok áthelyezéséhez .

Ismert korlátozások

  • A törlési tevékenység nem támogatja a helyettesítő karakterek által 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, győződjön meg arról, hogy a "wildcardFileName": "*" értéket is be kell állítani a törlési tevékenységben.

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