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
- Azure Blob Storage
- 1. generációs Azure Data Lake Storage
- Azure Data Lake Storage Gen2
- Azure Files
- Fájlrendszer
- FTP
- SFTP
- Microsoft Fabric Lakehouse
- Amazon S3
- Amazon S3-kompatibilis tároló
- Google Cloud Storage
- Oracle Cloud Storage
- HDFS
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:
Keressen rá a Törlés gombra a folyamattevékenységek panelen, és húzza a Delete tevékenységet a folyamatvászonra.
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.
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.
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.
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ő |
---|---|---|
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 . |
maxConcurrentConnections | 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 |
logStorageSettings | 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 |
---|---|---|---|
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 | 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/ 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 |
Gyökér/ Folder_A_2 | *.Txt | Hamis | Gyökér/ Folder_A_1/ 1.txt 2.txt 3.csv Folder_A_2/ 5.csv Folder_B_1/ 6.txt 7.csv Folder_B_2/ 8.txt |
Gyökér/ Folder_A_2 | *.Txt | Igaz | Gyökér/ Folder_A_1/ 1.txt 2.txt 3.csv Folder_A_2/ 5.csv Folder_B_1/ 7.csv Folder_B_2/ |
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.
Kapcsolódó tartalom
További információ a fájlok Azure Data Factoryben és Synapse-folyamatokban való áthelyezéséről.