Dela via


Ta bort aktivitet i Azure Data Factory och Azure Synapse Analytics

GÄLLER FÖR: Azure Data Factory Azure Synapse Analytics

Dricks

Prova Data Factory i Microsoft Fabric, en allt-i-ett-analyslösning för företag. Microsoft Fabric omfattar allt från dataflytt till datavetenskap, realtidsanalys, business intelligence och rapportering. Lär dig hur du startar en ny utvärderingsversion kostnadsfritt!

Du kan använda borttagningsaktiviteten i Azure Data Factory för att ta bort filer eller mappar från lokala lagringslager eller molnlagringslager. Använd den här aktiviteten för att rensa eller arkivera filer när de inte längre behövs.

Varning

Borttagna filer eller mappar kan inte återställas (såvida inte lagringen har mjuk borttagning aktiverat). Var försiktig när du använder aktiviteten Ta bort till att ta bort filer och mappar.

Bästa praxis

Här följer några rekommendationer för att använda borttagningsaktiviteten:

  • Säkerhetskopiera dina filer innan du tar bort dem med borttagningsaktiviteten om du behöver återställa dem i framtiden.

  • Kontrollera att tjänsten har skrivbehörighet för att ta bort mappar eller filer från lagringsarkivet.

  • Se till att du inte tar bort filer som skrivs samtidigt.

  • Om du vill ta bort filer eller mappar från ett lokalt system kontrollerar du att du använder en lokalt installerad integrationskörning med en version som är större än 3.14.

Datalager som stöds

Skapa en borttagningsaktivitet med användargränssnittet

Utför följande steg för att använda en borttagningsaktivitet i en pipeline:

  1. Sök efter Ta bort i fönstret Pipelineaktiviteter och dra en borttagningsaktivitet till pipelinearbetsytan.

  2. Välj den nya borttagningsaktiviteten på arbetsytan om den inte redan är markerad och fliken Källa för att redigera dess information.

    Shows the UI for a Delete activity.

  3. Välj en befintlig eller skapa en ny datauppsättning som anger vilka filer som ska tas bort. Om du väljer flera filer kan du också aktivera rekursiv borttagning, vilket även tar bort data i underordnade mappar. Du kan också ange ett maximalt antal samtidiga anslutningar för åtgärden.

  4. Du kan också konfigurera loggning genom att välja fliken Loggningsinställningar och välja en befintlig eller skapa en ny länkad tjänstplats för loggningskontot för att logga resultatet av de borttagna åtgärder som utförts.

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

Typegenskaper

Property Beskrivning Obligatoriskt
datauppsättning Innehåller datamängdsreferensen för att avgöra vilka filer eller mappar som ska tas bort Ja
Rekursiv Anger om filerna tas bort rekursivt från undermapparna eller endast från den angivna mappen. Nej. Standardvärdet är false.
maxConcurrent Anslut ions Antalet anslutningar som ska anslutas till lagringsarkivet samtidigt för att ta bort mapp eller filer. Nej. Standardvärdet är 1.
aktivera loggning Anger om du behöver registrera den borttagna mappen eller filnamnen. Om det är sant måste du ytterligare ange ett lagringskonto för att spara loggfilen så att du kan spåra beteendet för borttagningsaktiviteten genom att läsa loggfilen. Nej
logStorage Inställningar Gäller endast när aktivering = true.

En grupp med lagringsegenskaper som kan anges där du vill spara loggfilen som innehåller mappen eller filnamnen som tagits bort av aktiviteten Ta bort.
Nej
linkedServiceName Gäller endast när aktivering = true.

Den länkade tjänsten för Azure Storage, Azure Data Lake Storage Gen1 eller Azure Data Lake Storage Gen2 för att lagra loggfilen som innehåller mappen eller filnamnen som tagits bort av borttagningsaktiviteten. Tänk på att den måste konfigureras med samma typ av integrationskörning från den som används av borttagningsaktiviteten för att ta bort filer.
Nej
path Gäller endast när aktivering = true.

Sökvägen för att spara loggfilen i ditt lagringskonto. Om du inte anger någon sökväg skapar tjänsten en container åt dig.
Nej

Övervakning

Det finns två platser där du kan se och övervaka resultatet av borttagningsaktiviteten:

  • Från utdata från aktiviteten Ta bort.
  • Från loggfilen.

Exempel på utdata från borttagningsaktiviteten

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

Exempelloggfil för borttagningsaktiviteten

Name Kategori Status Fel
test1/yyy.json Fil Borttagen
test2/hello789.txt Fil Borttagen
test2/test3/hello000.txt Fil Borttagen
test2/test3/zzz.json Fil Borttagen

Exempel på hur du använder borttagningsaktiviteten

Ta bort specifika mappar eller filer

Arkivet har följande mappstruktur:

Root/
    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

Nu använder du aktiviteten Ta bort för att ta bort mappar eller filer genom att kombinera olika egenskapsvärden från datauppsättningen och borttagningsaktiviteten:

folderPath fileName Rekursiv Output
Rot/Folder_A_2 NULL Falsk Root/
    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
Rot/Folder_A_2 NULL Sant Root/
    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
Rot/Folder_A_2 *.Txt Falsk Root/
    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
Rot/Folder_A_2 *.Txt Sant Root/
    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

Rensa regelbundet den tidspartitionerade mappen eller filerna

Du kan skapa en pipeline för att regelbundet rensa den tid partitionerade mappen eller filerna. Mappstrukturen liknar till exempel: /mycontainer/2018/12/14/*.csv. Du kan använda tjänstsystemvariabeln från schemautlösaren för att identifiera vilken mapp eller vilka filer som ska tas bort i varje pipelinekörning.

Exempelpipeline

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

        ]
    }
}

Exempeldatauppsättning

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

Exempel på utlösare

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

Rensa de utgångna filerna som senast ändrades före 2018.1.1

Du kan skapa en pipeline för att rensa de gamla eller utgångna filerna med hjälp av filter för filattribut: "LastModified" i datauppsättningen.

Exempelpipeline

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

        ]
    }
}

Exempeldatauppsättning

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

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

Flytta filer genom att länka aktiviteten Kopiera och ta bort aktivitet

Du kan flytta en fil med hjälp av en aktiviteten Kopiera för att kopiera en fil och sedan en borttagningsaktivitet för att ta bort en fil i en pipeline. När du vill flytta flera filer kan du använda Aktiviteten GetMetadata + Filteraktivitet + Foreach-aktivitet + aktiviteten Kopiera + Ta bort aktivitet som i följande exempel.

Kommentar

Om du vill flytta hela mappen genom att definiera en datauppsättning som endast innehåller en mappsökväg och sedan använda en aktiviteten Kopiera- och en borttagningsaktivitet för att referera till samma datauppsättning som representerar en mapp, måste du vara mycket försiktig. Du måste se till att det inte kommer några nya filer till mappen mellan kopieringsåtgärden och borttagningsåtgärden. Om nya filer kommer till mappen när kopieringsaktiviteten precis har slutfört kopieringsjobbet, men aktiviteten Ta bort inte har startats, kan borttagningsaktiviteten ta bort den nyligen ankommande filen som INTE har kopierats till målet ännu genom att ta bort hela mappen.

Exempelpipeline

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

        ]
    }
}

Exempeldatauppsättningar

Datauppsättning som används av aktiviteten GetMetadata för att räkna upp fillistan.

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

Datauppsättning för datakälla som används av kopieringsaktiviteten och borttagningsaktiviteten.

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

Datauppsättning för datamål som används av kopieringsaktivitet.

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

Du kan också hämta mallen för att flytta filer härifrån.

Kända begränsningar

  • Borttagningsaktiviteten stöder inte borttagning av en lista över mappar som beskrivs med jokertecken.

  • När du använder filattributfilter i borttagningsaktiviteten: modifiedDatetimeStart och modifiedDatetimeEnd för att välja filer som ska tas bort, se till att ange "wildcardFileName": "*" även i borttagningsaktiviteten.

Läs mer om att flytta filer i Azure Data Factory- och Synapse-pipelines.