التحقق من اتساق البيانات في نشاط النسخ

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

تلميح

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

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

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

  • يتم دعم التحقق من تناسق البيانات من قبل جميع الموصلات باستثناء FTP وSFTP وHTTP وSnowflake Office 365 وAzure Databricks Delta Lake.
  • التحقق من تناسق البيانات غير مدعوم في سيناريو النسخ المرحلي.
  • عند نسخ الملفات الثنائية، يتوفر التحقق من تناسق البيانات فقط عند تعيين سلوك 'PreserveHierarchy' في نشاط النسخ.
  • عند نسخ ملفات ثنائية متعددة في نشاط نسخ واحد مع تمكين التحقق من تناسق البيانات، يكون لديك خيارين إما إيقاف نشاط النسخ أو متابعة نسخ الباقي عن طريق تمكين إعداد التسامح مع الخطأ لتخطي الملفات غير المتسقة.
  • عند نسخ جدول في نشاط نسخ واحد مع تمكين التحقق من تناسق البيانات، يفشل نشاط النسخ إذا كان عدد الصفوف التي تمت قراءتها من المصدر مختلفًا عن عدد الصفوف المنسوخة إلى الوجهة بالإضافة إلى عدد الصفوف غير المتوافقة التي تم تخطيها.

التكوين

يوفر المثال التالي تعريف JSON لتمكين التحقق من تناسق البيانات في نشاط النسخ:

{
  "name":"CopyActivityDataConsistency",
  "type":"Copy",
  "typeProperties": { 
    "source": { 
        "type": "BinarySource", 
        "storeSettings": { 
            "type": "AzureDataLakeStoreReadSettings", 
            "recursive": true 
        } 
    }, 
    "sink": { 
        "type": "BinarySink", 
        "storeSettings": { 
            "type": "AzureDataLakeStoreWriteSettings" 
        } 
    }, 
    "validateDataConsistency": true, 
    "skipErrorFile": { 
        "dataInconsistency": true 
    }, 
    "logSettings": {
        "enableCopyActivityLog": true,
        "copyActivityLogSettings": {
            "logLevel": "Warning",
            "enableReliableLogging": false
        },
        "logLocationSettings": {
            "linkedServiceName": {
               "referenceName": "ADLSGen2",
               "type": "LinkedServiceReference"
            },
            "path": "sessionlog/"
        }
    }
} 
الخاصية ‏‏الوصف القيم المسموح بها المطلوب
validateDataConsistency إذا قمت بتعيين هذه الخاصية على "صواب"، عند نسخ الملفات الثنائية، سيتحقق نشاط النسخ من حجم الملف، lastModifiedDate، والمجموع الاختباري MD5 لكل ملف ثنائي نُسخ من مخزن المصدر إلى مخزن الوجهة لضمان تناسق البيانات بين مخزني المصدر والوجهة. عند نسخ البيانات الجدولية، سيتحقق نشاط النسخ من إجمالي عدد الصفوف بعد اكتمال المهمة، مما يضمن أن العدد الإجمالي للصفوف المقروءة من المصدر هو نفس عدد الصفوف المنسوخة إلى الوجهة بالإضافة إلى عدد الصفوف غير المتوافقة التي تم تخطيها. كن على علم بأن أداء النسخ يتأثر بتمكين هذا الخيار. صواب
خطأ (افتراضي)
لا
dataInconsistency أحد أزواج قيمة المفتاح ضمن حقيبة خاصية skipErrorFile لتحديد ما إذا كنت تريد تخطي الملفات غير المتناسقة.
- صواب: تريد نسخ الباقي عن طريق تخطي الملفات غير المتناسقة.
- خطأ: تريد إيقاف نشاط النسخ بمجرد العثور على ملف غير متناسق.
انتبه إلى أن هذه الخاصية صالحة فقط عند نسخ الملفات الثنائية وتعيين المعلمة validateDataConsistency على صواب.
صواب
خطأ (افتراضي)
لا
logSettings مجموعة من الخصائص التي يمكن تحديدها لتمكين سجل جلسة العمل من تسجيل الملفات التي تم تخطيها. لا
linkedServiceName الخدمة المرتبطة بتخزين Azure Blob أو Azure Data Lake Storage Gen2 لتخزين ملفات سجل جلسة العمل. أسماء أنواع الخدمات المرتبطة AzureBlobStorage أو AzureBlobFS، والتي تشير إلى المثيل الذي تستخدمه لتخزين ملفات السجل. لا
path مسار ملفات السجل. حدد المسار الذي تريد تخزين ملفات السجل فيه. إذا لم توفر مساراً، تقوم الخدمة بإنشاء حاوية لك. لا

إشعار

  • عند نسخ الملفات الثنائية من أو إلى Azure Blob أو Azure Data Lake Storage Gen2، تحظر الخدمة التحقق الاختباري MD5 على مستوى الاستفادة من واجهة برمجة تطبيقات Azure Blob وواجهة برمجة تطبيقات Azure Data Lake Storage Gen2. في حالة وجود ContentMD5 على الملفات في Azure Blob أو Azure Data Lake Storage Gen2 كمصادر بيانات، تقوم الخدمة بالتحقق من المجموع الاختباري MD5 على مستوى الملف بعد قراءة الملفات أيضًا. بعد نسخ الملفات إلى Azure Blob أو Azure Data Lake Storage Gen2 كوجهة للبيانات، تكتب الخدمة ContentMD5 في Azure Blob أو Azure Data Lake Storage Gen2 والتي يمكن استهلاكها بشكل أكبر بواسطة تطبيقات انتقال البيانات للتحقق من اتساق البيانات.
  • تقوم الخدمة بالتحقق من حجم الملف عند نسخ الملفات الثنائية بين أي مخازن تخزين.

مراقبة‬

مخرجات نشاط النسخ

يمكنك الاطلاع على نتيجة التحقق من تناسق البيانات من مخرجات كل نشاط نسخ بعد تشغيل نشاط النسخ بالكامل:

"output": {
            "dataRead": 695,
            "dataWritten": 186,
            "filesRead": 3,  
            "filesWritten": 1, 
            "filesSkipped": 2, 
            "throughput": 297,
            "logFilePath": "myfolder/a84bf8d4-233f-4216-8cb5-45962831cd1b/",
            "dataConsistencyVerification": 
           { 
                "VerificationResult": "Verified", 
                "InconsistentData": "Skipped" 
           } 
        }

يمكنك الاطلاع على تفاصيل التحقق من تناسق البيانات من "خاصية dataConsistencyVerification".

قيمة VerificationResult:

  • تم التحقق منه: تم التحقق من أن بياناتك المنسوخة متسقة مع مخزني المصدر والوجهة.
  • NotVerified: لم يتم التحقق من اتساق بياناتك المنسوخة لأنك لم تقم بتمكين validateDataConsistency في نشاط النسخ.
  • غير معتمد: لم يتم التحقق من اتساق بياناتك المنسوخة لأن التحقق من تناسق البيانات غير مدعوم لزوج النسخ المحدد هذا.

قيمة InconsistentData:

  • تم العثور على: عثر نشاط النسخة على بيانات غير متناسقة.
  • تم التخطي: اكتشف نشاط النسخ بيانات غير متسقة وتخطاها.
  • بلا: لم يعثر نشاط النسخ على أي بيانات غير متناسقة. يمكن أن يكون إما لأنه تم التحقق من البيانات لتكون متسقة بين مخزني المصدر والوجهة أو لأنك قمت بتعطيل validateDataConsistency في نشاط النسخ.

سجل الجلسة من نشاط النسخ

إذا قمت بعملية التكوين لتسجيل الملفات غير المتناسقة، يمكنك العثور على ملف السجل من هذا المسار: https://[your-blob-account].blob.core.windows.net/[path-if-configured]/copyactivity-logs/[copy-activity-name]/[copy-activity-run-id]/[auto-generated-GUID].csv. ملفات السجل هي ملفات csv.

ويكون مخطط ملف السجل كما يلي:

العمود ‏‏الوصف
طابع زمني الطابع الزمني عند تخطي الخدمة الملفات غير متناسقة.
المستوى مستوى سجل هذا العنصر. إنه في مستوى "تحذير" للعنصر الذي يعرض تخطي الملف.
OperationName السلوك التشغيلي لنشاط النسخ في كل ملف. إنه "FileSkip" لتحديد الملف الذي سيتم تخطيه.
OperationItem اسم الملف الذي سيتم تخطيه.
رسالة مزيد من المعلومات لتوضيح سبب تخطي الملفات.

فيما يلي مثال لملف سجل:

Timestamp, Level, OperationName, OperationItem, Message
2020-02-26 06:22:56.3190846, Warning, FileSkip, "sample1.csv", "File is skipped after read 548000000 bytes: ErrorCode=DataConsistencySourceDataChanged,'Type=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,Message=Source file 'sample1.csv' is changed by other clients during the copy activity run.,Source=,'." 

يمكنك من ملف السجل أعلاه أن ترى أنه تم تخطي sample1.csv لأنه فشل في التحقق من اتساق البيانات بين مخزني المصدر والوجهة. يمكنك الحصول على مزيد من التفاصيل حول سبب عدم اتساق الملف sample1.csv وذلك لأنه تم تغييره بواسطة تطبيقات أخرى أثناء نسخ نشاط النسخ.

راجع مقالات نشاط النسخ الأخرى: