نسخ وتحويل البيانات في SFTP Server باستخدام مصنع البيانات من Azure أو تحليلات Azure Synapse
ينطبق على: Azure Data Factory Azure Synapse Analytics
تلميح
جرب Data Factory في Microsoft Fabric، وهو حل تحليلي متكامل للمؤسسات. يغطي Microsoft Fabric كل شيء بدءا من حركة البيانات إلى علم البيانات والتحليلات في الوقت الحقيقي والمعلومات المهنية وإعداد التقارير. تعرف على كيفية بدء إصدار تجريبي جديد مجانا!
توضح هذه المقالة كيفية استخدام نشاط النسخ لنسخ البيانات من وإلى خادم FTP الآمن (SFTP)، واستخدام تدفق البيانات لتحويل البيانات في خادم SFTP. للتعرف على المزيد، اقرأ المقالة التمهيدية عن Azure Data Factory أو Azure Synapse Analytics.
القدرات المدعومة
موصل SFTP هذا مدعوم للإمكانيات التالية:
القدرات المدعومة | IR |
---|---|
Copy activity (المصدر/المتلق) | (1) (2) |
تعيين تدفق البيانات (المصدر/ المتلقي) | (1) |
نشاط البحث | (1) (2) |
نشاط GetMetadata | (1) (2) |
حذف النشاط | (1) (2) |
① وقت تشغيل تكامل Azure ② وقت تشغيل التكامل المستضاف ذاتيًا
وبوجه خاص، يدعم موصل SFTP ما يلي:
- نسخ الملفات من وإلى خادم SFTP باستخدام المفتاح العام Basicأو SSH أو المصادقة متعددة العوامل.
- نسخ الملفات كما هي أو عن طريق تحليل أو إنشاء الملفات مع تنسيقات الملفات المدعومة وبرامج ضغط الوسائط وفكها.
المتطلبات الأساسية
إذا كان مخزن البيانات الخاص بك موجوداً داخل شبكة محلية، أو شبكة Azure ظاهرية، أو Amazon Virtual Private Cloud، فأنت بحاجة إلى تكوين وقت تشغيل تكامل مستضاف ذاتياً للاتصال به.
إذا كان مخزن البيانات الخاص بك عبارة عن خدمة بيانات سحابية مُدارة، يمكنك استخدام Azure Integration Runtime. إذا كان الوصول مقتصراً على عناوين IP التي تمت الموافقة عليها في قواعد جدار الحماية، يمكنك إضافة عناوين IP لـ Azure Integration Runtime إلى قائمة السماح.
يمكنك أيضاً استخدام ميزة وقت تشغيل تكامل الشبكة الظاهرية المُدارة في Azure Data Factory للوصول إلى الشبكة المحلية دون تثبيت وقت تشغيل تكامل مستضاف ذاتياً وتكوينه.
لمزيد من المعلومات حول آليات وخيارات أمان الشبكة التي يدعمها Data Factory، راجع إستراتيجيات الوصول إلى البيانات.
الشروع في العمل
لتنفيذ نشاط النسخ باستخدام أحد المسارات، يمكنك استخدام إحدى الأدوات أو عدد تطوير البرامج التالية:
- أداة نسخ البيانات
- مدخل Azure
- The .NET SDK
- عدة تطوير برامج Python
- Azure PowerShell
- واجهة برمجة تطبيقات REST
- قالب Azure Resource Manager
إنشاء خدمة مرتبطة SFTP باستخدام واجهة المستخدم
استخدم الخطوات التالية لإنشاء خدمة مرتبطة SFTP في واجهة مستخدم مدخل Microsoft Azure.
استعرض للوصول إلى علامة التبويب "Manage" في مصنع بيانات Azure أو مساحة عمل Synapse، وحدد "Linked Services"، ثم انقر فوق "New":
البحث عن SFTP وحدد موصل SFTP.
قم بتكوين تفاصيل الخدمة، واختبر الاتصال، وأنشئ الخدمة المرتبطة الجديدة.
تفاصيل تكوين الموصل
توفر المقاطع التالية تفاصيل حول الخصائص المستخدمة لتعريف الكيانات الخاصة بـ SFTP.
خصائص الخدمة المرتبطة
يتم اعتماد الخصائص التالية لخدمة SFTP المرتبطة:
الخاصية | الوصف | مطلوب |
---|---|---|
النوع | يجب تعيين خاصية النوع إلى Sftp. | نعم |
مضيف | اسم أو عنوان IP لخادم SFTP. | نعم |
المنفذ | المنفذ الذي يستمع إليه خادم SFTP. القيمة المسموح بها هي عدد صحيح، والقيمة الافتراضية هي 22. |
لا |
skipHostKeyValidation | تحديد ما إذا كان سيتم تخطي التحقق من صحة مفتاح المضيف. القيم المسموح بها هي صوابو خطأ (افتراضياً). |
لا |
hostKeyFingerprint | حدد بصمة مفتاح المضيف. | نعم، إذا تم تعيين "skipHostKeyValidation" إلى false. |
نوع المصادقة | حدد نوع المصادقة. القيم المسموح بها هي Basicو SshPublicKey وMultiFactor. لمزيد من الخصائص، راجع قسم استخدام المصادقة الأساسية. للحصول على أمثلة JSON، راجع قسم استخدام مصادقة المفتاح العام SSH. |
نعم |
connectVia | يُستخدم وقت تشغيل التكامل للاتصال بمخزن البيانات. لمعرفة المزيد، راجع قسم المتطلبات الأساسية . إذا لم يتم تحديد وقت تشغيل التكامل، فإن الخدمة تستخدم Azure Integration Runtime. | لا |
قم باستخدام المصادقة الأساسية
لاستخدام المصادقة الأساسية، قم بتعيين خاصية authenticationType إلى Basic، وحدد الخصائص التالية بالإضافة إلى الخصائص العامة لموصل SFTP التي تم تقديمها في المقطع السابق:
الخاصية | الوصف | مطلوب |
---|---|---|
userName | المستخدم الذي لديه حق الوصول إلى خادم SFTP. | نعم |
كلمة المرور | كلمة المرور للمستخدم (userName). وضع علامة على هذا الحقل كـ SecureString لتخزينه بشكل آمن، أو الرجوع إلى البيانات السرية المخزنة في Azure Key Vault. | نعم |
مثال:
{
"name": "SftpLinkedService",
"properties": {
"type": "Sftp",
"typeProperties": {
"host": "<sftp server>",
"port": 22,
"skipHostKeyValidation": false,
"hostKeyFingerPrint": "ssh-rsa 2048 xx:00:00:00:xx:00:x0:0x:0x:0x:0x:00:00:x0:x0:00",
"authenticationType": "Basic",
"userName": "<username>",
"password": {
"type": "SecureString",
"value": "<password>"
}
},
"connectVia": {
"referenceName": "<name of integration runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
استخدام مصادقة المفتاح العام SSH
لاستخدام مصادقة المفتاح العام SSH، قم بتعيين خاصية "authenticationType" كـ SshPublicKey، وحدد الخصائص التالية إلى جانب خصائص موصل SFTP العامة التي تم تقديمها في القسم الأخير:
الخاصية | الوصف | مطلوب |
---|---|---|
userName | المستخدم الذي لديه حق الوصول إلى خادم SFTP. | نعم |
privateKeyPath | تحديد المسار المطلق إلى ملف المفتاح الخاص الذي يمكن الوصول إليه وقت تشغيل التكامل. ينطبق هذا فقط عند تحديد نوع وقت تشغيل التكامل المستضاف ذاتياً في "connectVia." | حدد إما privateKeyPath أو privateKeyContent . |
privateKeyContent | محتوى مفتاح SSH الخاص بترميز Base64. يجب أن يكون المفتاح الخاص SSH تنسيق OpenSSH. وضع علامة على هذا الحقل كـ SecureString لتخزينه بشكل آمن، أو الرجوع إلى البيانات السرية المخزنة في Azure Key Vault. | حدد إما privateKeyPath أو privateKeyContent . |
passPhrase | حدد عبارة المرور أو كلمة المرور لفك تشفير المفتاح الخاص إذا كان ملف المفتاح أو محتوى المفتاح محمياً بعبارة مرور. وضع علامة على هذا الحقل كـ SecureString لتخزينه بشكل آمن، أو الرجوع إلى البيانات السرية المخزنة في Azure Key Vault. | نعم، إذا كان ملف المفتاح الخاص أو محتوى المفتاح محمياً بعبارة مرور. |
إشعار
يدعم موصل SFTP مفتاح OpenSSH RSA/DSA. تأكد من أن محتوى الملف الرئيسي يبدأ بـ"-----BEGIN [RSA/DSA] PRIVATE KEY-----". إذا كان ملف المفتاح الخاص ملف بتنسيق PPK، استخدم أداة PuTTY للتحويل من PPK إلى تنسيق OpenSSH.
مثال 1: مصادقة SshPublicKey باستخدام المفتاح الخاص filePath
{
"name": "SftpLinkedService",
"properties": {
"type": "Sftp",
"typeProperties": {
"host": "<sftp server>",
"port": 22,
"skipHostKeyValidation": true,
"authenticationType": "SshPublicKey",
"userName": "xxx",
"privateKeyPath": "D:\\privatekey_openssh",
"passPhrase": {
"type": "SecureString",
"value": "<pass phrase>"
}
},
"connectVia": {
"referenceName": "<name of integration runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
مثال 2: مصادقة SshPublicKey باستخدام محتوى المفتاح الخاص
{
"name": "SftpLinkedService",
"type": "Linkedservices",
"properties": {
"type": "Sftp",
"typeProperties": {
"host": "<sftp server>",
"port": 22,
"skipHostKeyValidation": true,
"authenticationType": "SshPublicKey",
"userName": "<username>",
"privateKeyContent": {
"type": "SecureString",
"value": "<base64 string of the private key content>"
},
"passPhrase": {
"type": "SecureString",
"value": "<pass phrase>"
}
},
"connectVia": {
"referenceName": "<name of integration runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
استخدام المصادقة متعددة العوامل
لاستخدام المصادقة متعددة العوامل التي هي مزيج من المصادقة الأساسية ومصادقة المفتاح العام SSH، حدد اسم المستخدم وكلمة المرور ومعلومات المفتاح الخاص الموضحة في الأقسام أعلاه.
مثال: المصادقة متعددة العوامل
{
"name": "SftpLinkedService",
"properties": {
"type": "Sftp",
"typeProperties": {
"host": "<host>",
"port": 22,
"authenticationType": "MultiFactor",
"userName": "<username>",
"password": {
"type": "SecureString",
"value": "<password>"
},
"privateKeyContent": {
"type": "SecureString",
"value": "<base64 encoded private key content>"
},
"passPhrase": {
"type": "SecureString",
"value": "<passphrase for private key>"
}
},
"connectVia": {
"referenceName": "<name of integration runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
خصائص مجموعة البيانات
للحصول على قائمة كاملة بالأقسام والخصائص المتوفرة لتعريف مجموعات البيانات، راجع مقالة مجموعات البيانات.
يدعم Azure Data Factory تنسيقات الملفات التالية. راجع كل مقالة للاطلاع على الإعدادات المستندة إلى التنسيق.
يتم اعتماد الخصائص التالية لـ SFTP ضمن location
الإعدادات في مجموعة البيانات المستندة إلى تنسيق:
الخاصية | الوصف | مطلوب |
---|---|---|
النوع | يجب تعيين خاصية النوع المتضمنة location في مجموعة البيانات إلى SftpLocation. |
نعم |
folderPath | المسار إلى المجلد. إذا كنت تريد استخدام حرف بدل لتصفية المجلد، فتخط هذا الإعداد وحدد المسار في إعدادات مصدر النشاط. | لا |
fileName | اسم الملف ضمن folderPath المحدد. إذا كنت تريد استخدام حرف بدل لتصفية الملفات، فتخط هذا الإعداد وحدد اسم الملف في إعدادات مصدر النشاط. | لا |
مثال:
{
"name": "DelimitedTextDataset",
"properties": {
"type": "DelimitedText",
"linkedServiceName": {
"referenceName": "<SFTP linked service name>",
"type": "LinkedServiceReference"
},
"schema": [ < physical schema, optional, auto retrieved during authoring > ],
"typeProperties": {
"location": {
"type": "SftpLocation",
"folderPath": "root/folder/subfolder"
},
"columnDelimiter": ",",
"quoteChar": "\"",
"firstRowAsHeader": true,
"compressionCodec": "gzip"
}
}
}
انسخ خصائص النشاط
للحصول على قائمة كاملة بالأقسام والخصائص المتوفرة لتعريف الأنشطة، راجع مقالة التدفقات. يوفر هذا القسم قائمة الخصائص التي يتم دعمها من قبل مصدر SFTP.
SFTP كمصدر
يدعم Azure Data Factory تنسيقات الملفات التالية. راجع كل مقالة للاطلاع على الإعدادات المستندة إلى التنسيق.
يتم دعم الخصائص التالية لـ SFTP ضمن storeSettings
الإعدادات في مصدر النسخ المستند إلى تنسيق:
الخاصية | الوصف | مطلوب |
---|---|---|
النوع | يجب تعيين خاصية النوع storeSettings إلى SftpReadSettings. |
نعم |
حدد موقع الملفات المراد نسخها | ||
الخيار 1: مسار ثابت |
نسخ من مسار المجلد/الملف المحدد في مجموعة البيانات. إذا كنت تريد نسخ كافة الملفات من مجلد، بالإضافة إلى ذلك حدد wildcardFileName على أنه * . |
|
الخيار 2: حرف بدل - wildcardFolderPath |
مسار المجلد مع أحرف البدل لتصفية مجلدات المصدر. أحرف البدل المسموح بها هي: * (يطابق صفراً أو المزيد من الأحرف)، و? (يطابق صفراً أو حرفاً واحداً)؛ يمكنك استخدام ^ للإلغاء إذا كان اسم المجلد الفعلي يتضمن حرف بدل أو حرف إلغاء بداخله. لمزيد من الأمثلة، راجع أمثلة تصفية الملفات والمجلدات. |
لا |
الخيار 2: حرف بدل - wildcardFileName |
اسم الملف مع أحرف البدل ضمن folderPath/wildcardFolderPath المحدد لتصفية الملفات المصدر. أحرف البدل المسموح بها هي * (يطابق صفراً أو المزيد من الأحرف)، و? (يطابق صفراً أو حرفاً واحداً)؛ استخدم ^ للإلغاء إذا كان اسم الملف الفعلي يتضمن حرف بدل أو حرف إلغاء بداخله. لمزيد من الأمثلة، راجع أمثلة تصفية الملفات والمجلدات. |
نعم |
الخيار 3: قائمة الملفات - fileListPath |
يشير إلى نسخ مجموعة ملفات محددة. أشر إلى ملف نصي يتضمن قائمة بالملفات التي تريد نسخها (ملف واحد لكل سطر، مع المسار النسبي للمسار الذي تم تكوينه في مجموعة البيانات). عند استخدام هذا الخيار، لا تقم بتحديد اسم الملف في مجموعة البيانات. راجع المزيد من الأمثلة في أمثلة على قائمة الملفات. |
لا |
إعدادات إضافية | ||
التكرار | يشير إلى ما إذا كانت البيانات ستتم قراءتها بشكل متكرر من المجلدات الفرعية أو من المجلد المحدد فقط. عندما يتم تعيين "recursive" إلى "true" والمتلقي هو مخزن يستند إلى ملف، لا يتم نسخ أو إنشاء مجلد فارغ أو مجلد فرعي في المتلقي. القيم المسموح بها هي true (افتراضية) وfalse. لا تنطبق هذه الخاصية عند تكوين fileListPath . |
لا |
deleteFilesAfterCompletion | يشير إلى ما إذا كان سيتم حذف الملفات الثنائية من مخزن المصدر بعد الانتقال بنجاح إلى مخزن الوجهة. يتم حذف الملف لكل ملف، لذلك عند فشل نشاط النسخ، سترى أن بعض الملفات قد تم نسخها بالفعل إلى الوجهة وحذفها من المصدر، بينما لا يزال البعض الآخر في المخزن المصدر. هذه الخاصية صالحة فقط في سيناريو نسخ الملفات الثنائية. القيمة الافتراضية: false. |
لا |
تاريخ البدء المعدل | يتم تصفية الملفات بناءً على السمة تاريخ آخر تعديل . يتم تحديد الملفات إذا كان وقت آخر تعديل لها أكبر من أو يساوي modifiedDatetimeStart وأقل من modifiedDatetimeEnd . يتم تطبيق الوقت على المنطقة الزمنية UTC بتنسيق 2018-12-01T05:00:00Z. يمكن أن تكون الخصائص فارغة، ما يعني أنه لا يتم تطبيق أي عامل تصفية سمة ملف على مجموعة البيانات. عندما يكون لـ modifiedDatetimeStart قيمة تاريخ / وقت ولكن modifiedDatetimeEnd هي NULL، فهذا يعني أنه يتم تحديد الملفات التي تم تحديد آخر سمة تم تعديلها لها أكبر من أو تساوي قيمة التاريخ والوقت. عندما يكون لـ modifiedDatetimeEnd قيمة تاريخ / وقت ولكن modifiedDatetimeStart هي NULL، فهذا يعني أنه يتم تحديد الملفات التي تكون آخر سمة تم تعديلها لها أقل من قيمة التاريخ والوقت.لا تنطبق هذه الخاصية عند تكوين fileListPath . |
لا |
modifiedDatetimeEnd | مثل أعلاه. | لا |
enablePartitionDiscovery | بالنسبة للملفات المقسمة، حدد ما إذا كنت تريد تحليل الأقسام من مسار الملف وإضافتها كأعمدة مصدر إضافية. القيم المسموح بها هي false (افتراضية) وtrue. |
لا |
partitionRootPath | عند تمكين اكتشاف القسم، حدد مسار الجذر المطلق لقراءة المجلدات المقسمة كأعمدة بيانات. إذا لم يتم تحديده، بشكل افتراضي، - عند استخدام مسار الملف في مجموعة البيانات أو قائمة الملفات على المصدر، يكون مسار جذر القسم هو المسار الذي تم تكوينه في مجموعة البيانات. - عند استخدام عامل تصفية مجلد أحرف البدل، يكون مسار جذر القسم هو المسار الفرعي قبل أول حرف بدل. على سبيل المثال، بافتراض أنك قمت بتكوين المسار في مجموعة البيانات كـ "root/folder/year=2020/month=08/day=27": - إذا حددت المسار الجذري للقسم كـ "root/folder/year=2020"، فإن نشاط النسخ سينتج عمودين آخرين month وday وقيمة "08" و"27" على التوالي، بالإضافة إلى الأعمدة داخل الملفات.- إذا لم يتم تحديد مسار جذر القسم، فلن يتم إنشاء أي عمود إضافي. |
لا |
maxConcurrentConnections | الحد الأعلى للاتصالات المتزامنة التي تم إنشاؤها إلى مخزن البيانات أثناء تشغيل النشاط. حدد قيمة فقط عندما تريد تحديد الاتصالات المتزامنة. | لا |
disableChunking | عند نسخ نموذج بيانات من SFTP، تحاول الخدمة الحصول على طول الملف أولاً، ثم تقسم الملف إلى أجزاء متعددة وتقرأه بالتوازي. حدد ما إذا كان خادم SFTP يدعم الحصول على طول الملف أو السعي للقراءة من إزاحة معينة. القيم المسموح بها هي false (الافتراضي)، true. |
لا |
مثال:
"activities":[
{
"name": "CopyFromSFTP",
"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": "SftpReadSettings",
"recursive": true,
"wildcardFolderPath": "myfolder*A",
"wildcardFileName": "*.csv",
"disableChunking": false
}
},
"sink": {
"type": "<sink type>"
}
}
}
]
SFTP كمتلقٍ
يدعم Azure Data Factory تنسيقات الملفات التالية. راجع كل مقالة للاطلاع على الإعدادات المستندة إلى التنسيق.
يتم دعم الخصائص التالية لـSFTP ضمن storeSettings
الإعدادات في متلقي نسخ مستند إلى تنسيق:
الخاصية | الوصف | مطلوب |
---|---|---|
النوع | يجب تعيين خاصية النوع المتضمنة storeSettings إلى إعدادات SftpWriteSettings. |
نعم |
copyBehavior | تعريف سلوك النسخ عندما يكون المصدر ملفات من مخزن بيانات مستند إلى ملف. القيم المسموح بها هي: - PreserveHierarchy (افتراضي): يحافظ على التسلسل الهرمي للملف في المجلد الهدف. يكون المسار النسبي للملف المصدر إلى المجلد المصدر مطابقاً للمسار النسبي للملف الهدف إلى المجلد الهدف. - FlattenHierarchy: جميع الملفات من المجلد المصدر في المستوى الأول من المجلد الهدف. لملفات الهدف أسماء تم إنشائها تلقائياً. - MergeFiles: دمج جميع الملفات من المجلد المصدر إلى ملف واحد. إذا تم تحديد اسم الملف، فسيكون اسم الملف المدمج هو الاسم المحدد. وإلا، فسيتم إنشاء اسم الملف تلقائياً. |
لا |
maxConcurrentConnections | الحد الأعلى للاتصالات المتزامنة التي تم إنشاؤها إلى مخزن البيانات أثناء تشغيل النشاط. حدد قيمة فقط عندما تريد تحديد الاتصالات المتزامنة. | لا |
useTempFileRename | الإشارة إلى ما إذا كان سيتم تحميل الملفات المؤقتة وإعادة تسميتها، أو الكتابة مباشرة إلى المجلد الهدف أو موقع الملف. بشكل افتراضي، يتم نسخ الخدمة أولاً إلى ملفات مؤقتة ثم تتم إعادة تسميتها عند انتهاء التحميل. يساعد هذا التسلسل على (1) تجنب التعارضات التي قد ينتج عنها ملف تالف إذا كانت لديك عمليات أخرى بالنسخ إلى نفس الملف و(2) تأكد من وجود الإصدار الأصلي من الملف أثناء النقل. إذا لم يدعم خادم SFTP عملية إعادة تسمية، فقم بتعطيل هذا الخيار وتأكد من عدم وجود نسخ متزامن إلى الملف الهدف. للحصول على مزيد من المعلومات، راجع تلميح استكشاف الأخطاء وإصلاحها في نهاية هذا الجدول. | لا. القيمة الافتراضية هي صحيح. |
operationTimeout | مهلة وقت الانتظار قبل كل طلب الكتابة إلى خادم SFTP. القيمة الافتراضية هي 60 دقيقة (01:00:00). | لا |
تلميح
إذا تلقيت الخطأ "UserErrorSftpPathNotFound" أو "UserErrorSftpPermissionDenied" أو "SftpOperationFail" عند كتابة البيانات إلى SFTP، ويكون لدى المستخدم SFTP الذي تستخدمه الأذونات المناسبة، تحقق لمعرفة ما إذا كانت عملية إعادة تسمية ملف دعم خادم SFTP تعمل. إذا لم يكن كذلك، فقم بتعطيل خيار التحميل مع ملف مؤقت ( useTempFileRename
) وحاول مرة أخرى. لمعرفة المزيد حول هذه الخاصية، راجع الجدول السابق. إذا كنت تستخدم وقت تشغيل تكامل ذاتي الاستضافة لنشاط النسخ، فتأكد من استخدام الإصدار 4.6 أو إصدار أحدث.
مثال:
"activities":[
{
"name": "CopyToSFTP",
"type": "Copy",
"inputs": [
{
"referenceName": "<input dataset name>",
"type": "DatasetReference"
}
],
"outputs": [
{
"referenceName": "<output dataset name>",
"type": "DatasetReference"
}
],
"typeProperties": {
"source": {
"type": "<source type>"
},
"sink": {
"type": "BinarySink",
"storeSettings":{
"type": "SftpWriteSettings",
"copyBehavior": "PreserveHierarchy"
}
}
}
}
]
أمثلة على تصفية الملفات والمجلدات
يصف هذا القسم السلوك الذي ينتج عن استخدام عوامل تصفية البدل مع مسارات المجلد وأسماء الملفات.
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 | تكوين Azure Data Factory |
---|---|---|
جذر مجلد أ 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 يشير مسار قائمة الملفات إلى ملف نصي في نفس مخزن البيانات يتضمن قائمة بالملفات التي تريد نسخها (ملف واحد لكل سطر، مع المسار النسبي للمسار الذي تم تكوينه في مجموعة البيانات). |
تعيين خصائص تدفق البيانات
عند تحويل البيانات في تعيين تدفقات البيانات، يمكنك قراءة الملفات وكتابتها من SFTP بالتنسيقات التالية:
توجد إعدادات تنسيق معينة في وثائق هذا التنسيق. لمزيد من المعلومات، راجع تحويل المصدر في تخطيط تدفق البيانات وتحويل المتلقي في تخطيط تدفق البيانات.
إشعار
التحقق من صحة مفتاح مضيف SSH غير مدعوم في تعيين تدفق البيانات الآن.
إشعار
للوصول إلى SFTP Server في مكان العمل، تحتاج إلى استخدام مصنع البيانات من Azure أو مساحة عمل Synapse شبكة ظاهرية مُدارة باستخدام نقطة نهاية خاصة. راجع هذا البرنامج التعليمي للحصول على خطوات مفصلة.
تحويل المصدر
يسرد الجدول أدناه الخصائص المعتمدة من قبل مصدر SFTP. يمكنك تحرير هذه الخصائص في علامة التبويب خيارات المصدر . عند استخدام مجموعة البيانات المضمنة، سترى إعدادات إضافية، وهي نفس الخصائص الموضحة في قسم خصائص مجموعة البيانات .
Name | الوصف | مطلوب | القيم المسموح بها | خاصية البرنامج النصي لتدفق البيانات |
---|---|---|---|---|
مسار حرف البدل | استخدام نمط الحرف البدل، سوف يوجه ADF للتكرار الحلقي خلال كل ملف ومجلد متطابق، في تحويل مصدر واحد. وهذه طريقة فعالة لمعالجة ملفات متعددة داخل تدفق واحد. | لا | سلسلة[] | wildcardPaths |
مسار جذر التقسيم | إذا كان لديك مجلدات مقسمة في مصدر الملف بتنسيق key=value (على سبيل المثال، year=2019 )، فيمكنك تعيين المستوى العلوي من شجرة مجلد القسم إلى اسم عمود في تدفق البيانات. |
لا | السلسلة | partitionRootPath |
السماح بعدم العثور على أي ملفات | إذا كان هذا صحيحاً، فلن يتم طرح خطأ إذا لم يتم العثور على ملفات. | لا | true أو false |
ignoreNoFilesFound |
قائمة الملفات | هذه مجموعة ملفات. أنشئ ملف نصي يتضمن قائمة ملفات المسار النسبي لمعالجتها. أشر إلى هذا الملف النصي. | لا | true أو false |
قائمة الملفات |
عمود لتخزين اسم الملف | خزّن اسم الملف المصدر في عمود في بياناتك. أدخِل اسم عمود جديد هنا لتخزين سلسلة اسم الملف. | لا | السلسلة | rowUrlColumn |
بعد الانتهاء | اختر عدم إجراء أي عملية مع الملف المصدر بعد تشغيل تدفق البيانات أو حذف الملف المصدر أو نقل الملف المصدر. المسارات الخاصة بهذه الخطوة نسبية. | لا | حذف: true أو false نقل: ['<from>', '<to>'] |
تطهير الملفات نقل الملفات |
التصفية حسب آخر تعديل | يمكنك تصفية الملفات التي تعالجها عن طريق تحديد نطاق تاريخ آخر تعديل لها. جميع الأوقات والتواريخ حسب UTC. | لا | طابع زمني | معدله بعد modifiedBefore |
مثال على برنامج نصي لمصدر SFTP
عند استخدام مجموعة بيانات SFTP كنوع المصدر، يكون البرنامج النصي لتدفق البيانات المقترنة:
source(allowSchemaDrift: true,
validateSchema: false,
ignoreNoFilesFound: true,
purgeFiles: true,
fileList: true,
modifiedAfter: (toTimestamp(1647388800000L)),
modifiedBefore: (toTimestamp(1647561600000L)),
partitionRootPath: 'partdata',
wildcardPaths:['partdata/**/*.csv']) ~> SFTPSource
تحويل المتلقي
يسرد الجدول أدناه الخصائص المعتمدة من قبل متلقي SFTP. يمكنك تحرير هذه الخصائص في علامة التبويب الإعدادات. عند استخدام مجموعة البيانات المضمنة، سترى إعدادات إضافية، وهي نفس الخصائص الموضحة في قسم خصائص مجموعة البيانات.
Name | الوصف | مطلوب | القيم المسموح بها | خاصية البرنامج النصي لتدفق البيانات |
---|---|---|---|---|
مسح المجلد | تحديد ما إذا سيتم مسح المجلد الوجهة أم لا قبل كتابة البيانات. | لا | true أو false |
اقتطاع |
خيار اسم الملف | تنسيق تسمية البيانات المكتوبة. بشكل افتراضي، ملف واحد لكل قسم بالتنسيق part-#####-tid-<guid> . |
لا | النمط: سلسلة لكل قسم: سلسلة[] اسم الملف كبيانات عمود: سلسلة اسم المجلد كبيانات عمود: سلسلة الإخراج إلى ملف واحد: ['<fileName>'] |
filePattern partitionFileNames rowUrlColumn rowFolderUrlColumn partitionFileNames |
اقتبس الكل | تحديد ما إذا كان سيتم إحاطة كل القيم بعلامات اقتباس. | لا | true أو false |
quoteAll |
مثال البرنامج النصي لمتلقي SFTP
عند استخدام مجموعة بيانات SFTP كنوع المتلقي يكون البرنامج النصي لتدفق البيانات المقترنة:
IncomingStream sink(allowSchemaDrift: true,
validateSchema: false,
filePattern:'loans[n].csv',
truncate: true,
skipDuplicateMapInputs: true,
skipDuplicateMapOutputs: true) ~> SFTPSink
بحث عن خصائص النشاط
للحصول على معلومات حول خصائص نشاط البحث، راجع نشاط البحث.
خصائص نشاط GetMetadata
للحصول على معلومات حول خصائص نشاط GetMetadata، راجع نشاط GetMetadata.
حذف خصائص النشاط
للحصول على معلومات حول حذف خصائص النشاط، راجع حذف النشاط .
النماذج القديمة
إشعار
لا تزال النماذج التالية مدعومة كما هي للتوافق مع الإصدارات السابقة. نوصي باستخدام النموذج الجديد الذي تمت مناقشته سابقاً، لأن واجهة المستخدم الخاصة بالتأليف قد تحولت إلى إنشاء النموذج الجديد.
نموذج مجموعة البيانات القديم
الخاصية | الوصف | مطلوب |
---|---|---|
النوع | يجب تعيين خاصية نوع مجموعة البيانات إلى FileShare. | نعم |
folderPath | المسار إلى المجلد. يتم دعم عامل تصفية حرف البدل. أحرف البدل المسموح بها هي * (يطابق صفراً أو المزيد من الأحرف)، و? (يطابق صفراً أو حرفاً واحداً)؛ استخدم ^ للإلغاء إذا كان اسم الملف الفعلي يتضمن حرف بدل أو حرف إلغاء بداخله. أمثلة: rootfolder/subfolder/، راجع المزيد من الأمثلة في أمثلة على تصفية الملف والمجلد. |
نعم |
fileName | عامل تصفية حرف البدل أو الاسم للملفات ضمن "folderPath" المحدد. إذا لم تحدد قيمة لهذه الخاصية، فإن مجموعة البيانات تشير إلى جميع الملفات الموجودة في المجلد. للتصفية، أحرف البدل المسموح بها هي * (تطابق صفراً أو أكثر من الحروف) و? (تطابق صفراً أو حرفاً واحداً).- مثال 1: "fileName": "*.csv" - مثال 2: "fileName": "???20180427.txt" استخدم ^ للإلغاء، إذا كان اسم المجلد الفعلي يتضمن حرف بدل، أو إذا كان حرف الإلغاء هذا موجود بداخله. |
لا |
تاريخ البدء المعدل | يتم تصفية الملفات بناءً على السمة تاريخ آخر تعديل . يتم تحديد الملفات إذا كان وقت آخر تعديل لها أكبر من أو يساوي modifiedDatetimeStart وأقل من modifiedDatetimeEnd . يتم تطبيق الوقت على المنطقة الزمنية UTC بتنسيق 2018-12-01T05:00:00Z. سيتأثر الأداء الكلي لحركة البيانات بتمكين هذا الإعداد عندما تريد إجراء تصفية ملفات من أعداد كبيرة من الملفات. يمكن أن تكون الخصائص فارغة، ما يعني أنه لا يتم تطبيق أي عامل تصفية سمة ملف على مجموعة البيانات. عندما يكون لـ modifiedDatetimeStart قيمة تاريخ / وقت ولكن modifiedDatetimeEnd هي NULL، فهذا يعني أنه يتم تحديد الملفات التي تم تحديد آخر سمة تم تعديلها لها أكبر من أو تساوي قيمة التاريخ والوقت. عندما يكون لـ modifiedDatetimeEnd قيمة تاريخ / وقت ولكن modifiedDatetimeStart هي NULL، فهذا يعني أنه يتم تحديد الملفات التي تكون آخر سمة تم تعديلها لها أقل من قيمة التاريخ والوقت. |
لا |
modifiedDatetimeEnd | يتم تصفية الملفات بناءً على السمة تاريخ آخر تعديل . يتم تحديد الملفات إذا كان وقت آخر تعديل لها أكبر من أو يساوي modifiedDatetimeStart وأقل من modifiedDatetimeEnd . يتم تطبيق الوقت على المنطقة الزمنية UTC بتنسيق 2018-12-01T05:00:00Z. سيتأثر الأداء الكلي لحركة البيانات بتمكين هذا الإعداد عندما تريد إجراء تصفية ملفات من أعداد كبيرة من الملفات. يمكن أن تكون الخصائص فارغة، ما يعني أنه لا يتم تطبيق أي عامل تصفية سمة ملف على مجموعة البيانات. عندما يكون لـ modifiedDatetimeStart قيمة تاريخ / وقت ولكن modifiedDatetimeEnd هي NULL، فهذا يعني أنه يتم تحديد الملفات التي تم تحديد آخر سمة تم تعديلها لها أكبر من أو تساوي قيمة التاريخ والوقت. عندما يكون لـ modifiedDatetimeEnd قيمة تاريخ / وقت ولكن modifiedDatetimeStart هي NULL، فهذا يعني أنه يتم تحديد الملفات التي تكون آخر سمة تم تعديلها لها أقل من قيمة التاريخ والوقت. |
لا |
format | إذا كنت تريد نسخ الملفات كما هو الحال بين مخازن مستندة إلى ملف (نسخة ثنائية)، فتخطَّ قسم التنسيق في كل من التعريفات مجموعة بيانات الإدخال والإخراج. إذا كنت تريد توزيع الملفات بتنسيق معين، فإن أنواع تنسيق الملف التالية مدعومة: TextFormat، وJsonFormat، وAvroFormat، وOrcFormat، وParquetFormat. عيّن خاصية النوع الموجودة ضمن التنسيق إلى إحدى هذه القيم. للحصول على مزيدٍ من المعلومات، راجع أقسام Text format، وJSON format، وAvro format، وORC format، وParquet format. |
لا (فقط لسيناريو النسخ الثنائي) |
ضغط | حدد نوع ضغط البيانات ومستواه. للحصول على مزيدٍ من المعلومات، راجع تنسيقات الملفات المدعومة وبرامج ضغط الوسائط وفكها. الأنواع المدعومة هي GZipو Deflateو BZip2، وZipDeflate. المستويات المعتمدة هي الأمثل والأسرع. |
لا |
تلميح
لنسخ جميع الملفات المضمنة في مجلد، حدد folderPath فقط.
لنسخ ملف واحد باسم محدد، حدد folderPath مع جزء المجلد وfileName باسم الملف.
لنسخ مجموعة فرعية من الملفات ضمن مجلد، حدد folderPath مع جزء المجلد وfileName مع عامل تصفية حرف البدل.
إشعار
إذا كنت تستخدم خاصية fileFilter لتصفية الملف، فإنه لا يزال مدعوماً كما هو، ولكن نوصي باستخدام إمكانية عامل التصفية الجديد إضافة إلى fileName من الآن فصاعداً.
مثال:
{
"name": "SFTPDataset",
"type": "Datasets",
"properties": {
"type": "FileShare",
"linkedServiceName":{
"referenceName": "<SFTP linked service name>",
"type": "LinkedServiceReference"
},
"typeProperties": {
"folderPath": "folder/subfolder/",
"fileName": "*",
"modifiedDatetimeStart": "2018-12-01T05:00:00Z",
"modifiedDatetimeEnd": "2018-12-01T06:00:00Z",
"format": {
"type": "TextFormat",
"columnDelimiter": ",",
"rowDelimiter": "\n"
},
"compression": {
"type": "GZip",
"level": "Optimal"
}
}
}
}
نموذج مصدر نشاط النسخ القديم
الخاصية | الوصف | مطلوب |
---|---|---|
النوع | يجب تعيين خاصية نوع مصدر نشاط النسخ إلى FileSystemSource | نعم |
التكرار | يشير إلى ما إذا كانت البيانات ستتم قراءتها بشكل متكرر من المجلدات الفرعية أو من المجلد المحدد فقط. عند تعيين التكرار إلى صحيح ويكون المتلقي مخزناً يستند إلى ملف، لن يتم نسخ أو إنشاء المجلدات الفارغة والمجلدات الفرعية في المتلقي. القيم المسموح بها هي صواب (افتراضي) و خطأ |
لا |
maxConcurrentConnections | الحد الأعلى للاتصالات المتزامنة التي تم إنشاؤها إلى مخزن البيانات أثناء تشغيل النشاط. حدد قيمة فقط عندما تريد تحديد الاتصالات المتزامنة. | لا |
مثال:
"activities":[
{
"name": "CopyFromSFTP",
"type": "Copy",
"inputs": [
{
"referenceName": "<SFTP input dataset name>",
"type": "DatasetReference"
}
],
"outputs": [
{
"referenceName": "<output dataset name>",
"type": "DatasetReference"
}
],
"typeProperties": {
"source": {
"type": "FileSystemSource",
"recursive": true
},
"sink": {
"type": "<sink type>"
}
}
}
]
المحتوى ذو الصلة
للحصول على قائمة مخازن البيانات المدعومة كمصادر وأحواض بواسطة نشاط النسخ، راجع مخازن البيانات المدعومة .