حذف النشاط في مصنع بيانات Azure وتحليلات Azure Synapse
ينطبق على: Azure Data Factory Azure Synapse Analytics
تلميح
جرب Data Factory في Microsoft Fabric، وهو حل تحليلي متكامل للمؤسسات. يغطي Microsoft Fabric كل شيء بدءا من حركة البيانات إلى علم البيانات والتحليلات في الوقت الحقيقي والمعلومات المهنية وإعداد التقارير. تعرف على كيفية بدء إصدار تجريبي جديد مجانا!
يمكنك استخدام حذف النشاط في مصنع بيانات Azure لحذف الملفات أو المجلدات من مخازن التخزين المحلية أو مخازن التخزين على السحابة. استخدم هذا النشاط لتنظيف الملفات أو أرشفتها عندما لا تكون هناك حاجة إليها.
تحذير
لا يمكن استعادة الملفات أو المجلدات المحذوفة (إلا إذا كان التخزين مجهزاً بالحذف البرمجي). كن حذراً عند استخدام نشاط حذف لحذف الملفات أو المجلدات.
أفضل الممارسات
فيما يلي بعض التوصيات لاستخدام نشاط الحذف:
قم بالنسخ الاحتياطي للملفات قبل حذفها باستخدام نشاط الحذف في حالة الحاجة إلى استعادتها في المستقبل.
تأكد من أن الخدمة لديها أذونات كتابة لحذف المجلدات أو الملفات من مخزن التخزين.
تأكد من عدم حذف الملفات التي تتم كتابتها في الوقت نفسه.
إذا كنت تريد حذف ملفات أو مجلد من نظام محلي، فتأكد من استخدام وقت تشغيل تكامل مستضاف ذاتيا مع إصدار أكبر من 3.14.
مخازن البيانات المدعومة
- تخزين Azure Blob
- Azure Data Lake Storage الجيل الأول
- Azure Data Lake Storage Gen2
- ملفات Azure
- نظام الملفات
- بروتوكول نقل الملفات
- SFTP
- Microsoft Fabric Lakehouse
- Amazon S3
- التخزين المتوافق مع Amazon S3
- Google Cloud Storage
- Oracle Cloud Storage
- 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 | التكرار | المخرجات |
---|---|---|---|
Root/ 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 |
Root/ Folder_A_2 | قيمة فارغة | صواب | Root/ Folder_A_1/ 1.txt 2.txt 3.csv |
Root/ 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 |
Root/ 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"
}
}
}
}
نقل الملفات عن طريق تقييد نشاط النسخ ونشاط الحذف
يمكنك نقل ملف باستخدام نشاط نسخ لنسخ ملف ثم نشاط حذف لحذف ملف في البنية الأساسية لبرنامج ربط العمليات التجارية. عندما تريد نقل ملفات متعددة، يمكنك استخدام نشاط 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.