إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
ينطبق على:
Azure Data Factory
Azure Synapse Analytics
تلميح
Data Factory في Microsoft Fabric هو الجيل القادم من Azure Data Factory، مع بنية أبسط، وذكاء اصطناعي مدمج، وميزات جديدة. إذا كنت جديدا في تكامل البيانات، ابدأ مع Fabric Data Factory. يمكن لأعباء عمل ADF الحالية الترقية إلى Fabric للوصول إلى قدرات جديدة في علوم البيانات، والتحليلات اللحظية، والتقارير.
يمكنك استخدام Delete Activity في Azure Data Factory لحذف الملفات أو المجلدات من مخازن التخزين المحلية أو السحابية. استخدم هذا النشاط لتنظيف الملفات أو أرشفتها عندما لا تكون هناك حاجة إليها.
تحذير
لا يمكن استعادة الملفات أو المجلدات المحذوفة (إلا إذا كان التخزين مجهزاً بالحذف البرمجي). كن حذراً عند استخدام نشاط حذف لحذف الملفات أو المجلدات.
أفضل الممارسات
فيما يلي بعض التوصيات لاستخدام نشاط الحذف:
قم بالنسخ الاحتياطي للملفات قبل حذفها باستخدام نشاط الحذف في حالة الحاجة إلى استعادتها في المستقبل.
تأكد من أن الخدمة لديها أذونات كتابة لحذف المجلدات أو الملفات من مخزن التخزين.
تأكد من عدم حذف الملفات التي تتم كتابتها في الوقت نفسه.
إذا كنت تريد حذف ملفات أو مجلد من نظام محلي، فتأكد من استخدام وقت تشغيل تكامل مستضاف ذاتيا مع إصدار أكبر من 3.14.
مخازن البيانات المدعومة
- Azure تخزين الكتلة الصغيرة
- Azure Data Lake Storage Gen1
- Azure Data Lake Storage Gen2
- Azure Files
- نظام الملفات
- بروتوكول نقل الملفات
- SFTP
- Microsoft Fabric ليكهاوس
- أمازون S3
- التخزين المتوافق مع Amazon S3
- التخزين السحابي من Google
- أوراكل كلاود سترجينج
- HDFS
إنشاء نشاط حذف باستخدام واجهة المُستخدم
لاستخدام نشاط حذف في مسار المعالجة، أكمل الخطوات التالية:
ابحث عن حذف في جزء أنشطة مسار المعالجة، واسحب نشاط «حذف» إلى لوحة مسار المعالجة.
حدد نشاط الحذف الجديد على اللوحة إذا لم يكن محددا بالفعل، وعلامة التبويب المصدر الخاصة به، لتحرير تفاصيله.
حدد مجموعة بيانات موجودة أو أنشئ مجموعة بيانات جديدة تُحدد الملفات المراد حذفها. إذا تم تحديد ملفات متعددة، فمكن الحذف المتكرر اختياريًا، والذي يحذف البيانات في أي مجلدات تابعة أيضًا. يمكنك أيضًا تحديد الحد الأقصى لعدد الاتصالات المتزامنة للعملية.
قم بتكوين التسجيل اختياريًا عن طريق تحديد علامة التبويب إعدادات التسجيل وتحديد موقع خدمة مرتبط بحساب تسجيل جديد أو إنشاء حساب تسجيل جديد لتسجيل نتائج عمليات الحذف التي تم تنفيذها.
بناء الجملة
{
"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
}
نموذج ملف سجل نشاط الحذف
| الاسم | الفئة | الحالة | خطأ |
|---|---|---|---|
| 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 | التكرار | المخرجات |
|---|---|---|---|
| الجذر/ Folder_A_2 | قيمة فارغة | خطأ | Root/ Folder_A_1/ 1.txt 2.txt 3.csv Folder_A_2/ Folder_B_1/ 6.txt 7.csv Folder_B_2/ 8.txt |
| الجذر/ Folder_A_2 | قيمة فارغة | صواب | Root/ Folder_A_1/ 1.txt 2.txt 3.csv |
| الجذر/ Folder_A_2 | *.txt | خطأ | Root/ 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 |
| الجذر/ Folder_A_2 | *.txt | صواب | Root/ Folder_A_1/ 1.txt 2.txt 3.csv Folder_A_2/ 5.csv Folder_B_1/ 7.csv Folder_B_2/ |
تنظيف المجلد أو الملفات المقسمة زمنياً بشكل دوري
يمكنك إنشاء بنية أساسية لبرنامج ربط العمليات التجارية لتنظيف المجلد أو الملفات المقسمة زمنياً بشكل دوري. على سبيل المثال، بنية المجلد مشابهة كما يلي: /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"
}
}
}
}
نقل الملفات عن طريق ربط Copy activity وDelete
يمكنك نقل ملف باستخدام Copy activity لنسخ ملف ثم نشاط حذف لحذف ملف في خط الأنابيب. عندما ترغب في نقل عدة ملفات، يمكنك استخدام GetMetadata activity + Filter activity + Foreach activity + Copy activity + Delete activity كما في العينة التالية.
إشعار
إذا أردت نقل المجلد بالكامل عن طريق تعريف مجموعة بيانات تحتوي فقط على مسار المجلد، ثم استخدام Copy activity وDelete activity للإشارة إلى نفس مجموعة البيانات التي تمثل مجلدا، عليك أن تكون حذرا جدا. يجب التأكد من أنه لن يكون هناك أي ملفات جديدة تصل إلى المجلد بين عملية النسخ وعملية الحذف. إذا كانت الملفات الجديدة تصل إلى المجلد في اللحظة التي أكمل فيها نشاط النسخة للتو مهمة النسخ ولكن لم يبدأ نشاط الحذف، فقد يقوم نشاط الحذف بحذف هذا الملف حديث الوصول الذي لم يتم نسخه إلى الوجهة بعد عن طريق حذف المجلد بأكمله.
نموذج للبنية الأساسية لبرنامج ربط العمليات التجارية
{
"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 Data Factory وSynapse.