نسخ البيانات من خادم FTP باستخدام مصنع بيانات Azure أو Synapse Analytics

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

تلميح

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

توضح هذه المقالة كيفية نسخ البيانات من خادم FTP. للتعرف على المزيد، اقرأ المقالات التمهيدية حول Azure Data Factory و Synapse Analytics.

القدرات المدعومة

موصل FTP هذا مدعوم للإمكانيات التالية:

القدرات المدعومة IR
نشاط النسخ (مصدر/-) ① ②
نشاط البحث ① ②
نشاط GetMetadata ① ②
حذف النشاط ① ②

① وقت تشغيل تكامل Azure ② وقت تشغيل التكامل المستضاف ذاتيًا

يدعم موصل FTP هذا على نحو خاص:

يدعم موصل FTP خادم FTP قيد التشغيل في الوضع الخامل. الوضع النشط غير مدعوم.

المتطلبات الأساسية

إذا كان مخزن البيانات الخاص بك موجوداً داخل شبكة محلية، أو شبكة Azure ظاهرية، أو Amazon Virtual Private Cloud، فأنت بحاجة إلى تكوين وقت تشغيل تكامل مستضاف ذاتياً للاتصال به.

إذا كان مخزن البيانات الخاص بك عبارة عن خدمة بيانات سحابية مُدارة، يمكنك استخدام Azure Integration Runtime. إذا كان الوصول مقتصراً على عناوين IP التي تمت الموافقة عليها في قواعد جدار الحماية، يمكنك إضافة عناوين IP لـ Azure Integration Runtime إلى قائمة السماح.

يمكنك أيضاً استخدام ميزة وقت تشغيل تكامل الشبكة الظاهرية المُدارة في Azure Data Factory للوصول إلى الشبكة المحلية دون تثبيت وقت تشغيل تكامل مستضاف ذاتياً وتكوينه.

لمزيد من المعلومات حول آليات وخيارات أمان الشبكة التي يدعمها Data Factory، راجع إستراتيجيات الوصول إلى البيانات.

الشروع في العمل

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

إنشاء خدمة مرتبطة بـخادم FTP باستخدام واجهة المستخدم

استخدم الخطوات التالية لإنشاء خدمة مرتبطة إلى خادم FTP في واجهة مستخدم المدخل Azure.

  1. استعرض للوصول إلى علامة التبويب "Manage" في مصنع بيانات Azure أو مساحة عمل Synapse، وحدد "Linked Services"، ثم انقر فوق "New":

  2. ابحث عن FTP وحدد موصل "FTP".

    Screenshot of the FTP connector.

  3. قم بتكوين تفاصيل الخدمة، واختبر الاتصال، وأنشئ الخدمة المرتبطة الجديدة.

    Screenshot of linked service configuration for an FTP server.

تفاصيل تكوين الموصل

توفر المقاطع التالية تفاصيل حول الخصائص المستخدمة لتعريف الكيانات الخاصة بـ FTP.

خصائص الخدمة المرتبطة

تُدعم الخصائص التالية لخدمة الارتباط في خادم FTP:

الخاصية الوصف مطلوب
النوع يجب تعيين خاصية النوع إلى: FtpServer. ‏‏نعم‬
مضيف حدّد اسم أو عنوان IP لخادم FTP. ‏‏نعم‬
المنفذ حدد المنفذ الذي يستمع إليه خادم FTP.
القيم المسموح بها هي: عدد صحيح، والقيمة الافتراضية هي 21.
لا
enableSsl حيد ما إذا كان يجب استخدام FTP عبر قناة SSL/TLS.
القيم المسموح بها هي "true" (افتراضي) و"false".
لا
enableServerCertificateValidation حدد ما إذا كان التحقق من صحة شهادة الخادم TLS/SSL سيُمكن عند استخدامك FTP عبر قناة SSL/TLS.
القيم المسموح بها هي "true" (افتراضي) و"false".
لا
نوع المصادقة حدد نوع المصادقة.
القيم المسموح بها هي: Basic، وAnonymous
‏‏نعم‬
userName حدّد المستخدم الذي لديه حق الوصول إلى خادم FTP. لا
كلمة المرور حدد كلمة المرور للمستخدم (userName). ضع علامة على هذا الحقل باعتباره SecureString لتخزينه بشكل آمن، أو قم بالإشارة إلى بيانات سرية مخزنة في Azure Key Vault. لا
connectVia Integration Runtime الذي سيتم استخدامه للاتصال بمخزن البيانات. تعرف على المزيد من قسم المتطلبات الأساسية. إذا لم يتم تحديده، فإنه يستخدم Azure Integration Runtime الافتراضي. لا

إشعار

يدعم موصل FTP الوصول إلى خادم FTP مع عدم وجود تشفير أو تشفير صريحٍ لـ SSL/TLS; وهو لا يدعم التشفير الضمني لـ SSL/TLS.

مثال 1: استخدام مصادقة Anonymous

{
    "name": "FTPLinkedService",
    "properties": {
        "type": "FtpServer",
        "typeProperties": {
            "host": "<ftp server>",
            "port": 21,
            "enableSsl": true,
            "enableServerCertificateValidation": true,
            "authenticationType": "Anonymous"
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

مثال 2: استخدام المصادقة Basic

{
    "name": "FTPLinkedService",
    "properties": {
        "type": "FtpServer",
        "typeProperties": {
            "host": "<ftp server>",
            "port": 21,
            "enableSsl": true,
            "enableServerCertificateValidation": true,
            "authenticationType": "Basic",
            "userName": "<username>",
            "password": {
                "type": "SecureString",
                "value": "<password>"
            }
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

خصائص مجموعة البيانات

للحصول على قائمة كاملة بالأقسام والخصائص المتوفرة لتعريف مجموعات البيانات، راجع مقالة مجموعات البيانات.

يدعم Azure Data Factory تنسيقات الملفات التالية. راجع كل مقالة للاطلاع على الإعدادات المستندة إلى التنسيق.

تُدعم الخصائص التالية لـ FTP ضمن locationالإعدادات في مجموعة البيانات المستندة إلى تنسيق:

الخاصية الوصف مطلوب
النوع يجب تعيين خاصية النوع ضمن location في مجموعة البيانات إلى FtpServerLocation. ‏‏نعم‬
folderPath المسار إلى المجلد. إذا أردت استخدام البدل لتصفية المجلد، فتخطَّ هذا الإعداد وحدد في إعدادات مصدر النشاط. لا
fileName اسم الملف ضمن folderPath المحدد. إذا أردت استخدام البدل لتصفية الملفات، فتخطَّ هذا الإعداد وحدد في إعدادات مصدر النشاط. لا

مثال:

{
    "name": "DelimitedTextDataset",
    "properties": {
        "type": "DelimitedText",
        "linkedServiceName": {
            "referenceName": "<FTP linked service name>",
            "type": "LinkedServiceReference"
        },
        "schema": [ < physical schema, optional, auto retrieved during authoring > ],
        "typeProperties": {
            "location": {
                "type": "FtpServerLocation",
                "folderPath": "root/folder/subfolder"
            },
            "columnDelimiter": ",",
            "quoteChar": "\"",
            "firstRowAsHeader": true,
            "compressionCodec": "gzip"
        }
    }
}

انسخ خصائص النشاط

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

FTP كمصدر

يدعم Azure Data Factory تنسيقات الملفات التالية. راجع كل مقالة للاطلاع على الإعدادات المستندة إلى التنسيق.

تُدعم الخصائص التالية لـ FTP ضمن storeSettingsالإعدادات في مصدر النسخ المستند إلى تنسيق:

الخاصية الوصف مطلوب
النوع يجب تعيين خاصية النوع ضمن storeSettingsإلى FtpReadSettings. ‏‏نعم‬
حدد موقع الملفات المراد نسخها:
الخيار 1: مسار ثابت
نسخ من مسار المجلد/الملف المحدد في مجموعة البيانات. إذا كنت تريد نسخ كافة الملفات من مجلد، بالإضافة إلى ذلك حدد wildcardFileName على أنه *.
الخيار 2: حرف بدل
- wildcardFolderPath
مسار المجلد مع أحرف البدل لتصفية مجلدات المصدر.
حروف البدل المسموح بها هي: * (يطابق صفراً أو المزيد من الأحرف)، و? (يطابق صفراً أو حرفاً واحداً)؛ يمكنك استخدام ^ للإلغاء إذا كان اسم المجلد الفعلي يتضمن حرف بدل أو حرف إلغاء بداخله.
راجع المزيد من الأمثلة في أمثلة على تصفية الملفات والمجلدات.
لا
الخيار 2: حرف بدل
- wildcardFileName
اسم الملف مع حروف البدل ضمن المجلد المحدد / folderPath/wildcardFolderPath المحدد لتصفية الملفات المصدر.
حروف البدل المسموح بها هي: * (يطابق صفراً أو المزيد من الأحرف)، و? (يطابق صفراً أو حرفاً واحداً)؛ يمكنك استخدام ^ للإلغاء إذا كان اسم الملف الفعلي يتضمن حرف بدل أو حرف إلغاء بداخله. راجع المزيد من الأمثلة في أمثلة على تصفية الملفات والمجلدات.
‏‏نعم‬
الخيار 3: قائمة الملفات
- fileListPath
يشير إلى نسخ مجموعة ملفات معينة. أشر إلى ملف نصي يتضمن قائمة بالملفات التي تريد نسخها، ملف واحد لكل سطر، وهو المسار النسبي للمسار الذي تم تكوينه في مجموعة البيانات.
عند استخدام هذا الخيار، لا تحدد اسم الملف في مجموعة البيانات. شاهد المزيد من الأمثلة في أمثلة قائمة الملفات.
لا
إعدادات إضافية:
التكرار يشير إلى ما إذا كانت البيانات ستتم قراءتها بشكل متكرر من المجلدات الفرعية أو من المجلد المحدد فقط. تجدر الإشارة إلى أنه عند ضبط recursive على true ويكون المتلقي مخزناً يستند إلى ملف، لا يتم نسخ أو إنشاء مجلد فارغ أو مجلد فرعي عند المتلقي.
القيم المسموح بها هي true (افتراضية) وfalse.
لا تنطبق هذه الخاصية عند تكوين fileListPath.
لا
deleteFilesAfterCompletion يشير إلى ما إذا كان سيتم حذف الملفات الثنائية من مخزن المصدر بعد الانتقال بنجاح إلى مخزن الوجهة. يتم حذف الملف لكل ملف، لذلك عند فشل نشاط النسخ، سترى أن بعض الملفات قد تم نسخها بالفعل إلى الوجهة وحذفها من المصدر، بينما لا يزال البعض الآخر في المخزن المصدر.
هذه الخاصية صالحة فقط في سيناريو نسخ الملفات الثنائية. القيمة الافتراضية: false.
لا
useBinaryTransfer حدد ما إذا كنت تريد استخدام وضع النقل الثنائي. القيم صحيحة لوضع ثنائي (افتراضي) وخطأ لـ ASCII. لا
enablePartitionDiscovery بالنسبة للملفات المقسمة، حدد ما إذا كنت تريد تحليل الأقسام من مسار الملف وإضافتها كأعمدة مصدر إضافية.
القيم المسموح بها هي false (افتراضية) وtrue.
لا
partitionRootPath عند تمكين اكتشاف القسم، حدد مسار الجذر المطلق لقراءة المجلدات المقسمة كأعمدة بيانات.

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

على سبيل المثال، بافتراض أنك قمت بتكوين المسار في مجموعة البيانات كـ "root/folder/year=2020/month=08/day=27":
- إذا حددت المسار الجذري للقسم كـ "root/folder/year=2020"، فإن نشاط النسخ سينتج عمودين آخرين month وday وقيمة "08" و"27" على التوالي، بالإضافة إلى الأعمدة داخل الملفات.
- إذا لم يتم تحديد مسار جذر القسم، فلن يتم إنشاء أي عمود إضافي.
لا
maxConcurrentConnections الحد الأعلى للاتصالات المتزامنة التي تم إنشاؤها إلى مخزن البيانات أثناء تشغيل النشاط. حدد قيمة فقط عندما تريد تحديد الاتصالات المتزامنة. لا
disableChunking عند نسخ البيانات من FTP، تحاول الخدمة الحصول على طول الملف أولاً، ثم تقسيم الملف إلى أجزاء متعددة وقراءتها بالتوازي. حدد ما إذا كان خادم FTP يدعم الحصول على طول الملف أو السعي للقراءة من إزاحة معينة.
القيم المسموح بها هي false (الافتراضي)، true.
لا

مثال:

"activities":[
    {
        "name": "CopyFromFTP",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<Delimited text input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "DelimitedTextSource",
                "formatSettings":{
                    "type": "DelimitedTextReadSettings",
                    "skipLineCount": 10
                },
                "storeSettings":{
                    "type": "FtpReadSettings",
                    "recursive": true,
                    "wildcardFolderPath": "myfolder*A",
                    "wildcardFileName": "*.csv",
                    "disableChunking": false
                }
            },
            "sink": {
                "type": "<sink type>"
            }
        }
    }
]

أمثلة على تصفية الملفات والمجلدات

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

folderPath fileName التكرار بنية المجلد المصدر ونتيجة التصفية (يتم استرداد الملفات بخط عريض)
Folder* (فارغ، استخدم الإعداد الافتراضي) true مجلد أ
    File1.csv
    File2.json
    Subfolder1
        File3.csv
        File4.json
        File5.csv
AnotherFolderB
    File6.csv
Folder* (فارغ، استخدم الإعداد الافتراضي) صحيح مجلد أ
    File1.csv
    File2.json
    Subfolder1
        File3.csv
        File4.json
        File5.csv
AnotherFolderB
    File6.csv
Folder* *.csv true مجلد أ
    File1.csv
    File2.json
    Subfolder1
        File3.csv
        File4.json
        File5.csv
AnotherFolderB
    File6.csv
Folder* *.csv صحيح مجلد أ
    File1.csv
    File2.json
    Subfolder1
        File3.csv
        File4.json
        File5.csv
AnotherFolderB
    File6.csv

أمثلة على قائمة الملفات

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

بافتراض أن لديك بنية المجلد المصدر التالية وتريد نسخ الملفات بخط عريض:

نموذج بنية المصدر Content in FileListToCopy.txt التكوين
جذر
    مجلد أ
        File1.csv
        File2.json
        Subfolder1
            File3.csv
            File4.json
            File5.csv
    بيانات التعريف
        FileListToCopy.txt
File1.csv
Subfolder1/File3.csv
Subfolder1/File5.csv
في مجموعة البيانات:
- مسار المجلد: root/FolderA

في مصدر نشاط النسخ:
- مسار ملف القائمة: root/Metadata/FileListToCopy.txt

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

بحث عن خصائص النشاط

لمعرفة تفاصيل حول الخصائص، تحقق من نشاط البحث.

خصائص نشاط GetMetadata

لمعرفة تفاصيل حول الخصائص، يرجى التحقق من نشاط GetMetadata

حذف خصائص النشاط

لمعرفة تفاصيل حول الخصائص، يرجى التحقق من نشاط الحذف

النماذج القديمة

إشعار

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

نموذج مجموعة البيانات القديم

الخاصية الوصف مطلوب
النوع يجب تعيين خاصية نوع مجموعة البيانات إلى: FileShare ‏‏نعم‬
folderPath المسار إلى المجلد. حروف البدل مدعومة، حروف البدل المسموح بها هي: * (يطابق صفراً أو المزيد من الأحرف)، و? (يطابق صفراً أو حرفاً واحداً)؛ يمكنك استخدام ^ للإلغاء إذا كان اسم المجلد الفعلي يتضمن حرف بدل أو حرف إلغاء بداخله.

أمثلة: rootfolder/subfolder/، راجع المزيد من الأمثلة في أمثلة على تصفية الملف والمجلد.
‏‏نعم‬
fileName اسم أو عامل تصفية حرف البدل للملف (الملفات) ضمن "folderPath" المحدد. إذا لم تحدد قيمة لهذه الخاصية، فإن مجموعة البيانات تشير إلى جميع الملفات الموجودة في المجلد.

للتصفية، أحرف البدل المسموح بها هي * (تطابق صفراً أو المزيد من الحروف) و? (تطابق صفراً أو حرفاً واحداً).
- مثال 1: "fileName": "*.csv"
- مثال 2: "fileName": "???20180427.txt"
استخدم ^ للإلغاء، إذا كان اسم الملف الفعلي يتضمن حرف بدل، أو إذا كان حرف الإلغاء هذا موجود بداخله.
لا
format إذا كنت تريد نسخ الملفات كما هي بين المخازن المستندة إلى الملفات (نسخ ثنائي)، فتخطى قسم التنسيق في تعريفات الإدخال والإخراج في مجموعة البيانات على حدٍ سواء.

إذا أردت توزيع الملفات بتنسيق معين، فإن أنواع تنسيق الملفات المدعومة هي ما يلي: TextFormat، وJsonFormat، وAvroFormat، وOrcFormat، وParquetFormat. عيّن خاصية النوع الموجودة ضمن التنسيق إلى إحدى هذه القيم. للحصول على مزيدٍ من المعلومات، انظر أقسام Text format، وJSON format، وAvro format، وORC format، وParquet format.
لا (فقط لسيناريو النسخ الثنائي)
ضغط حدد نوع ضغط البيانات ومستواه. للحصول على مزيدٍ من المعلومات، راجع تنسيقات الملفات المدعومة وبرامج ضغط الوسائط وفكها.
الأنواع المدعومة هي: GZip، وDeflate، وBZip2، وZipDeflate.
المستويات المدعومة هي Optimal وFastest.
لا
useBinaryTransfer حدد ما إذا كنت تريد استخدام وضع النقل الثنائي. القيم صحيحة لوضع ثنائي (افتراضي) وخطأ لـ ASCII. لا

تلميح

لنسخ جميع الملفات المضمنة في مجلد، حدد folderPath فقط.
لنسخ ملف واحد باسم معين، حدد folderPath مع جزء المجلد، وfileName مع اسم الملف.
لنسخ مجموعة فرعية من الملفات ضمن مجلد ما، حدد folderPath مع جزء المجلد، وfileName مع عامل تصفية حرف البدل.

إشعار

إذا كنت تستخدم خاصية "fileFilter" لتصفية الملفات، فإنه لا يزال مدعوماً كما هو، بينما نقترح عليك استخدام إمكانية التصفية الجديدة المضافة إلى "fileName" للمضي قدماً.

مثال:

{
    "name": "FTPDataset",
    "properties": {
        "type": "FileShare",
        "linkedServiceName":{
            "referenceName": "<FTP linked service name>",
            "type": "LinkedServiceReference"
        },
        "typeProperties": {
            "folderPath": "folder/subfolder/",
            "fileName": "myfile.csv.gz",
            "format": {
                "type": "TextFormat",
                "columnDelimiter": ",",
                "rowDelimiter": "\n"
            },
            "compression": {
                "type": "GZip",
                "level": "Optimal"
            }
        }
    }
}

نموذج مصدر نشاط النسخ القديم

الخاصية الوصف مطلوب
النوع يجب تعيين خاصية نوع مصدر نشاط النسخ إلى: FileSystemSource ‏‏نعم‬
التكرار تشير إلى ما إذا كان يتم قراءة البيانات بشكل متكرر من المجلدات الفرعية أو فقط من المجلد المحدد. ملاحظة: عند تعيين التكرار إلى صحيح ويكون المتلقي هو مخزن يستند إلى ملف، لن يتم إنشاء / نسخ مجلد فارغ /مجلد فرعي في المتلقي.
القيم المسموح بها هي "true" (افتراضي) و"false"
لا
maxConcurrentConnections الحد الأعلى للاتصالات المتزامنة التي تم إنشاؤها إلى مخزن البيانات أثناء تشغيل النشاط. حدد قيمة فقط عندما تريد تحديد الاتصالات المتزامنة. لا

مثال:

"activities":[
    {
        "name": "CopyFromFTP",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<FTP input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "FileSystemSource",
                "recursive": true
            },
            "sink": {
                "type": "<sink type>"
            }
        }
    }
]

للحصول على قائمة بمخازن البيانات المدعومة من نشاط النسخ كمصادر ومواضع تلقي، راجع مخازن البيانات المدعومة.