حذف النشاط في مصنع بيانات Azure وتحليلات Azure Synapse

ينطبق على:Azure Data Factory Azure Synapse Analytics

تلميح

جرب Data Factory في Microsoft Fabric، وهو حل تحليلي متكامل للمؤسسات. يغطي Microsoft Fabric كل شيء بدءا من حركة البيانات إلى علم البيانات والتحليلات في الوقت الحقيقي والمعلومات المهنية وإعداد التقارير. تعرف على كيفية بدء إصدار تجريبي جديد مجانا!

يمكنك استخدام حذف النشاط في مصنع بيانات Azure لحذف الملفات أو المجلدات من مخازن التخزين المحلية أو مخازن التخزين على السحابة. استخدم هذا النشاط لتنظيف الملفات أو أرشفتها عندما لا تكون هناك حاجة إليها.

تحذير

لا يمكن استعادة الملفات أو المجلدات المحذوفة (إلا إذا كان التخزين مجهزاً بالحذف البرمجي). كن حذراً عند استخدام نشاط حذف لحذف الملفات أو المجلدات.

أفضل الممارسات

فيما يلي بعض التوصيات لاستخدام نشاط الحذف:

  • قم بالنسخ الاحتياطي للملفات قبل حذفها باستخدام نشاط الحذف في حالة الحاجة إلى استعادتها في المستقبل.

  • تأكد من أن الخدمة لديها أذونات كتابة لحذف المجلدات أو الملفات من مخزن التخزين.

  • تأكد من عدم حذف الملفات التي تتم كتابتها في الوقت نفسه.

  • إذا كنت تريد حذف ملفات أو مجلد من نظام محلي، فتأكد من استخدام وقت تشغيل تكامل مستضاف ذاتيا مع إصدار أكبر من 3.14.

مخازن البيانات المدعومة

إنشاء نشاط حذف باستخدام واجهة المُستخدم

لاستخدام نشاط حذف في مسار المعالجة، أكمل الخطوات التالية:

  1. ابحث عن حذف في جزء أنشطة مسار المعالجة، واسحب نشاط «حذف» إلى لوحة مسار المعالجة.

  2. حدد نشاط الحذف الجديد على اللوحة إذا لم يكن محددا بالفعل، وعلامة التبويب المصدر الخاصة به، لتحرير تفاصيله.

    Shows the UI for a Delete activity.

  3. حدد مجموعة بيانات موجودة أو أنشئ مجموعة بيانات جديدة تُحدد الملفات المراد حذفها. إذا تم تحديد ملفات متعددة، فمكن الحذف المتكرر اختياريًا، والذي يحذف البيانات في أي مجلدات تابعة أيضًا. يمكنك أيضًا تحديد الحد الأقصى لعدد الاتصالات المتزامنة للعملية.

  4. قم بتكوين التسجيل اختياريًا عن طريق تحديد علامة التبويب إعدادات التسجيل وتحديد موقع خدمة مرتبط بحساب تسجيل جديد أو إنشاء حساب تسجيل جديد لتسجيل نتائج عمليات الحذف التي تم تنفيذها.

    Shows the  Logging settings  tab for a Delete activity.

بناء الجملة

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

خصائص النوع

الخاصية الوصف مطلوب
مجموعة البيانات توفر مرجع مجموعة البيانات لتحديد الملفات أو المجلدات التي سيتم حذفها ‏‏نعم‬
التكرار يشير إلى ما إذا كان يتم حذف الملفات بشكل متكرر من المجلدات الفرعية أو من المجلد المحدد فقط. ‏‏لا. الافتراضي هو false.
maxConcurrentConnections عدد الاتصالات للاتصال بمخزن التخزين بشكل متزامن لحذف المجلد أو الملفات. ‏‏لا. الافتراضي هو 1.
تمكين التسجيل يشير إلى ما إذا كنت بحاجة إلى تسجيل أسماء الملفات أو المجلد المحذوف. إذا كان ذلك صحيحاً، تحتاج إلى توفير حساب تخزين لحفظ ملف السجل، بحيث يمكنك تعقب سلوكيات نشاط الحذف عن طريق قراءة ملف السجل. لا
logStorageSettings ينطبق فقط عندما يكون enablelogging = true.

مجموعة من خصائص التخزين التي يمكن تحديدها حيث تريد حفظ ملف السجل الذي يحتوي على أسماء المجلدات أو الملفات المحذوفة بواسطة نشاط الحذف.
لا
linkedServiceName ينطبق فقط عندما يكون enablelogging = true.

الخدمة المرتبطة ب Azure Storage أو Azure Data Lake Storage Gen1 أو Azure Data Lake Storage Gen2 لتخزين ملف السجل الذي يحتوي على أسماء المجلدات أو الملفات المحذوفة بواسطة نشاط الحذف. يجب أن تدرك أنه يجب تكوينه بنفس نوع Integration Runtime الذي يستخدمه نشاط الحذف لحذف الملفات.
لا
path ينطبق فقط عندما يكون enablelogging = true.

مسار حفظ ملف السجل في حساب التخزين الخاص بك. إذا لم توفر مسارا، تنشئ الخدمة حاوية لك.
لا

مراقبة‬

هناك مكانان يمكنك من خلالهما مشاهدة نتائج نشاط الحذف ورصدها:

  • من إخراج نشاط الحذف.
  • من ملف السجل.

إخراج نموذج نشاط الحذف

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

نموذج ملف سجل نشاط الحذف

الاسم الفئة ‏الحالة Error
test1/yyy.json الملف تم حذفها
test2/hello789.txt الملف تم حذفها
test2/test3/hello000.txt الملف تم حذفها
test2/test3/zzz.json الملف تم حذفها

أمثلة على استخدام نشاط الحذف

حذف مجلدات أو ملفات معينة

يحتوي المخزن على بنية المجلد التالية:

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

الآن تستخدم نشاط الحذف لحذف المجلد أو الملفات من خلال الجمع بين قيمة خاصية مختلفة من مجموعة البيانات ونشاط الحذف:

folderPath fileName التكرار الإخراج
Root/ Folder_A_2 قيمة فارغة خطأ 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
Root/ Folder_A_2 قيمة فارغة صواب 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
Root/ Folder_A_2 *.txt خطأ 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
Root/ Folder_A_2 *.txt صواب 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

تنظيف المجلد أو الملفات المقسمة زمنياً بشكل دوري

يمكنك إنشاء بنية أساسية لبرنامج ربط العمليات التجارية لتنظيف المجلد أو الملفات المقسمة زمنياً بشكل دوري. على سبيل المثال، بنية المجلد مشابهة كما يلي: /mycontainer/2018/12/14/*.csv. يمكنك استخدام متغير نظام الخدمة من مشغل الجدولة لتحديد المجلد أو الملفات التي يجب حذفها في كل تشغيل للبنية الأساسية لبرنامج ربط العمليات التجارية.

نموذج للبنية الأساسية لبرنامج ربط العمليات التجارية

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

        ]
    }
}

نموذج مجموعة بيانات

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

نموذج مشغل

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

تنظيف الملفات منتهية الصلاحية التي تم تعديلها آخر مرة قبل 2018.1.1

يمكنك إنشاء مسار لتنظيف الملفات القديمة أو منتهية الصلاحية باستخدام عامل تصفية سمة الملف: "LastModified" في مجموعة البيانات.

نموذج للبنية الأساسية لبرنامج ربط العمليات التجارية

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

        ]
    }
}

نموذج مجموعة بيانات

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

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

نقل الملفات عن طريق تقييد نشاط النسخ ونشاط الحذف

يمكنك نقل ملف باستخدام نشاط نسخ لنسخ ملف ثم نشاط حذف لحذف ملف في البنية الأساسية لبرنامج ربط العمليات التجارية. عندما تريد نقل ملفات متعددة، يمكنك استخدام نشاط GetMetadata + نشاط التصفية + نشاط Foreach + نشاط النسخ + نشاط الحذف كما في النموذج التالي.

إشعار

إذا كنت تريد نقل المجلد بأكمله عن طريق تعريف مجموعة بيانات تحتوي على مسار مجلد فقط، ثم استخدام نشاط نسخ ونشاط حذف للإشارة إلى نفس مجموعة البيانات التي تمثل مجلداً، يجب أن تكون حذراً جداً. يجب التأكد من أنه لن يكون هناك أي ملفات جديدة تصل إلى المجلد بين عملية النسخ وعملية الحذف. إذا كانت الملفات الجديدة تصل إلى المجلد في اللحظة التي أكمل فيها نشاط النسخة للتو مهمة النسخ ولكن لم يبدأ نشاط الحذف، فقد يقوم نشاط الحذف بحذف هذا الملف حديث الوصول الذي لم يتم نسخه إلى الوجهة بعد عن طريق حذف المجلد بأكمله.

نموذج للبنية الأساسية لبرنامج ربط العمليات التجارية

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

        ]
    }
}

نماذج مجموعات البيانات

مجموعة البيانات المستخدمة من قبل نشاط GetMetadata لتعداد قائمة الملفات.

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

مجموعة البيانات لمصدر البيانات المستخدم من قبل نشاط النسخ ونشاط الحذف.

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

مجموعة البيانات لوجهة البيانات المستخدمة من قبل نشاط النسخ.

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

يمكنك أيضاً الحصول على القالب لنقل الملفات من هنا.

القيود المعروفة

  • لا يدعم نشاط الحذف حذف قائمة المجلدات الموضحة بواسطة حرف البدل.

  • عند استخدام عامل تصفية سمة الملف في نشاط الحذف: modifiedDatetimeStart وModifiedDatetimeEnd لتحديد الملفات المراد حذفها، تأكد من تعيين "wildcardFileName": "*" في نشاط الحذف أيضاً.

تعرف على المزيد حول نقل الملفات في البنية الأساسية لبرنامج ربط العمليات التجارية في مصنع بيانات Azure وSynapse.