Tevékenység törlése az Azure Data Factoryben és az Azure Synapse Analyticsben

A következőkre vonatkozik: Azure Data Factory Azure Synapse Analytics

Tipp.

Próbálja ki a Data Factoryt a Microsoft Fabricben, amely egy teljes körű elemzési megoldás a nagyvállalatok számára. A Microsoft Fabric az adattovábbítástól az adatelemzésig, a valós idejű elemzésig, az üzleti intelligenciáig és a jelentéskészítésig mindent lefed. Ismerje meg, hogyan indíthat új próbaverziót ingyenesen!

Az 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. Keressen rá a Törlés gombra a folyamattevé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.

    Shows the UI for a Delete activity.

  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.

    Shows the  Logging settings  tab for a Delete activity.

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. Szám Az alapértelmezett érték false.
maxConcurrent Csatlakozás ions A tárolótárhoz egyidejűleg a mappa vagy fájlok törléséhez csatlakoztatandó kapcsolatok száma. Szám 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
logStorage Gépház Csak akkor alkalmazható, ha engedélyezve van = igaz.

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 Csak akkor alkalmazható, ha engedélyezve van = igaz.

Az Azure Storage, az Azure Data Lake Storage Gen1 vagy az 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 a fájltörlési tevékenység által használt integrációs modullal megegyező típusú integrációs modult kell konfigurálni.
Nem
ösvény Csak akkor alkalmazható, ha engedélyezve van = igaz.

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
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 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 fileName Rekurzív Hozam
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.

Mintafolyamat

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

Mintafolyamat

{
    "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 és a Törlés tevékenység láncolásával

A fájlokat áthelyezheti egy Copy tevékenység használatával egy fájl másolásához, majd egy törlési tevékenységgel egy folyamat fájlának törléséhez. 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 + Törlés tevékenységet, mint az alábbi példában.

Feljegyzé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 tevékenység é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.

Mintafolyamat

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

Másolási tevékenység által használt adathalmaz az adat célhelyéhez.

{
    "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 lekérheti 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 Azure Data Factoryben és Synapse-folyamatokban való áthelyezéséről.