نسخ البيانات من أو إلى Azure Blob Storage باستخدام Azure Data Factory
ملاحظة
يطبق هذا البند على الإصدار 1 من Data Factory. إذا كنت تستخدم الإصدار الحالي من خدمة Data Factory، راجع موصل Azure Blob Storage في الإصدار 2.
توضح هذه المقالة كيفية استخدام نشاط النسخ في Azure Data Factory لنسخ البيانات من وإلى Azure Blob Storage. وتستند إلى مقالة أنشطة نقل البيانات، التي تُقدم نظرة عامة على حركة البيانات مع نشاط النسخ.
نظرة عامة
يُمكنك نسخ البيانات من أي مخزن بيانات مصدر مدعوم إلى Azure Blob Storage أو من Azure Blob Storage إلى أي مخزن بيانات متلقي مدعوم. يوفر الجدول التالي قائمة مخازن البيانات المدعومة كمصادر بيانات أو متلقيين بواسطة نشاط النسخ. على سبيل المثال، يُمكنك نقل البيانات من قاعدة بيانات SQL Server أو قاعدة بيانات في Azure SQL Database إلى أحد مخازن Azure blob storage. ويُمكنك نسخ البيانات من Azure blob storage إلى مجموعة Azure Cosmos DB أو Azure Synapse Analytics.
ملاحظة
تستخدم هذه المقالة الوحدة النمطية Azure Az PowerShell، وهي الوحدة النمطية PowerShell الموصى بها للتفاعل مع Azure. لبدء استخدام الوحدة النمطية Az PowerShell، راجع تثبيت Azure PowerShell. لمعرفة كيفية الترحيل إلى الوحدة النمطية Az PowerShell، راجع ترحيل Azure PowerShell من AzureRM إلى Az.
السيناريوهات المدعومة
يُمكنك نسخ البيانات من Azure Blob Storage إلى مخازن البيانات التالية:
| الفئة | مخزن البيانات |
|---|---|
| Azure | موقع تخزين Azure Blob Azure Data Lake Storage Gen1 Azure Cosmos DB (SQL API) قاعدة بيانات Azure SQL Azure Synapse Analytics مفهرس البحث المعرفي Azure موقع تخزين Azure Table |
| قواعد البيانات | SQL Server Oracle |
| الملف | نظام الملفات |
يُمكنك نسخ البيانات من مخازن البيانات التالية إلى Azure Blob Storage:
هام
يدعم نشاط النسخ نسخ البيانات من/إلى كلٍ من حسابات Azure Storage المخصصة للأغراض العامة ومخزن الكائن الثنائي كبير الحجم من مستوى الوصول المتكرر/الوصول غير المتكرر. يدعم النشاط القراءة من الكائنات الثنائية كبيرة الحجم للصفحة أو الإلحاق أو الكتلة، ولكنه يدعم الكتابة في الكائنات الثنائية كبيرة الحجم للكتلة فقط. لا يتم دعم Azure Premium Storage كمتلقي لأنه مدعوم من قبل الكائنات الثنائية كبيرة الحجم للصفحة.
لا يحذف نشاط النسخ البيانات من المصدر بعد نسخ البيانات بنجاح إلى الوجهة. إذا كنت بحاجة إلى حذف بيانات المصدر بعد عمل نسخة ناجحة، فقم بإنشاء نشاط مخصص لحذف البيانات واستخدام النشاط في المسار. على سبيل المثال، راجع حذف عينة كائن ثنائي كبير الحجم أو مجلد على GitHub.
الشروع في العمل
يُمكنك إنشاء مسار باستخدام نشاط نسخ ينقل البيانات إلى/من Azure Blob Storage باستخدام أدوات/واجهات برمجة تطبيقات مختلفة.
تتمثل أسهل طريقة لإنشاء مسار في استخدام معالج النسخ. تحتوي هذه المقالة على إرشادات تفصيلية لإنشاء خط أنابيب لنسخ البيانات من موقع تخزين Azure Blob إلى موقع Azure Blob Storage آخر. للحصول على برنامج تعليمي حول إنشاء مسار لنسخ البيانات من Azure Blob Storage إلى Azure SQL Database، راجع البرنامج التعليمي: إنشاء مسار باستخدام معالج النسخ.
يُمكنك أيضاً استخدام الأدوات التالية لإنشاء مسار: Visual Studio، وAzure PowerShell، وقالب Azure Resource Manager، وواجهة برمجة تطبيقات .NET، وواجهة برمجة تطبيقات REST. راجع نسخ البرنامج التعليمي للنشاط للحصول على إرشادات خطوة بخطوة لإنشاء مسار مع نشاط نسخ.
سواء كنت تستخدم الأدوات أو واجهات برمجة التطبيقات، يمكنك تنفيذ الخطوات التالية لإنشاء البنية الأساسية لبرنامج ربط العمليات التجارية المسؤول عن نقل البيانات من مخزن بيانات مَصدر إلى مخزن بيانات المُتلقّي:
- إنشاء مصنع بيانات. قد يحتوي مصنع البيانات على مسار واحد أو أكثر.
- أنشئ خدمات مرتبطة لربط مخازن بيانات الإدخال والإخراج بمصنع البيانات. على سبيل المثال، إذا كنت تقوم بنسخ البيانات من أحد مخازن Azure blob storage إلى Azure SQL Database، فقم بإنشاء خدمتين مرتبطين لربط حساب تخزين Azure وAzure SQL Database بمصنع بياناتك. بالنسبة لخصائص الخدمة المرتبطة الخاصة بخدمة Azure Blob Storage، راجع قسم خصائص الخدمة المرتبطة.
- قم بإنشاء مجموعات بيانات لتمثيل بيانات الإدخال والإخراج الخاصة بعملية النسخ. في المثال المذكور في الخطوة الأخيرة، يُمكنك إنشاء مجموعة بيانات لتحديد حاوية الكائن الثنائي كبير الحجم للحاوية والمجلد الذي يحتوي على بيانات الإدخال. وإنشاء مجموعة بيانات أخرى لتحديد جدول SQL في Azure SQL Database التي تحتوي على البيانات المنسوخة من تخزين الكائن الثنائي كبير الحجم. بالنسبة لخصائص مجموعة البيانات الخاصة بـ Azure Blob Storage، راجع قسم خصائص مجموعة البيانات.
- قم بإنشاء مسار باستخدام نشاط نسخ يتّخذ مجموعة بيانات كإدخال ومجموعة بيانات كإخراج. في المثال المذكور سابقاً، يُمكنك استخدام BlobSource كمصدر وSqlSink كمتلقي لنشاط النسخ. وبالمثل، إذا كنت تقوم بنسخ من Azure SQL Database إلى Azure Blob Storage، يُمكنك استخدام SqlSource وBlobSink في نشاط النسخ. بالنسبة لخصائص نشاط النسخ الخاصة بـ Azure Blob Storage، راجع قسم خصائص نشاط النسخ. للحصول على تفاصيل حول كيفية استخدام مخزن بيانات كمصدر أو متلقي، انقر فوق الرابط الموجود في القسم السابق لمخزن البيانات.
عند استخدام المعالج، يتم إنشاء تعريفات JSON لكيانات مصنع البيانات هذه (الخدمات المرتبطة ومجموعات البيانات والبنية الأساسية لبرنامج ربط العمليات التجارية) تلقائياً لك. عند استخدام أدوات/ واجهات برمجة التطبيقات (باستثناء واجهة برمجة تطبيقات .NET)، فإنك تحدد كيانات Data Factory هذه باستخدام تنسيق JSON. للحصول على عينات مع تعريفات JSON لكيانات Data Factory التي تُستخدم لنسخ البيانات إلى/من Azure Blob Storage، راجع قسم أمثلة JSON من هذه المقالة.
توفر الأقسام التالية تفاصيل حول خصائص JSON المستخدمة لتعريف كيانات Data Factory الخاصة بـ Azure Blob Storage.
خصائص الخدمة المرتبطة
هناك نوعان من الخدمات المرتبطة التي يمكنك استخدامها لربط Azure Storage بـ Azure data factory. وهما: الخدمة المرتبطة AzureStorage والخدمة المرتبطة AzureStorageSas. توفر الخدمة المرتبطة بالتخزين في Azure لمصنع البيانات وصولاً عالمياً إلى تخزين Azure. بينما توفر الخدمة المرتبطة Azure Storage SAS (توقيع الوصول المشترك) لمصنع البيانات وصولاً مقيداً/محدد زمنياً إلى مساحة تخزين Azure. لا توجد فروق أخرى بين هاتين الخدمتين المرتبطتين. اختر الخدمة المرتبطة التي تناسب احتياجاتك. توفر الأقسام التالية المزيد من التفاصيل حول هاتين الخدمتين المرتبطتين.
خدمة Azure Storage المرتبطة
تتيح لك الخدمة المرتبطة بتخزين Azure ربط حساب تخزين Azure بمصنع بيانات Azure باستخدام مفتاح الحساب، الذي يوفر لمصنع البيانات وصولاً عالمياً إلى تخزين Azure. يوفر الجدول التالي وصفاً لعناصر JSON الخاصة بخدمة Azure للتخزين الخاصة بالارتباط التشعبي.
| الخاصية | الوصف | مطلوب |
|---|---|---|
| النوع | يجب تعيين خاصية النوع إلى: AzureStorage | نعم |
| سلسلة الاتصال | حدد المعلومات المطلوبة للاتصال بتخزين Azure للخاصية connectionString. | نعم |
للحصول على معلومات حول كيفية استرداد مفاتيح الوصول إلى حساب التخزين، راجع إدارة مفاتيح الاختصار إلى حساب التخزين.
مثال:
{
"name": "StorageLinkedService",
"properties": {
"type": "AzureStorage",
"typeProperties": {
"connectionString": "DefaultEndpointsProtocol=https;AccountName=<accountname>;AccountKey=<accountkey>"
}
}
}
خدمة التخزين Azure Sas للارتباط التشعبي
يوفر توقيع الوصول المشترك الوصول المفوض إلى الموارد الموجودة في حساب التخزين الخاص بك. يسمح لك بمنح أذونات محدودة للعميل للعناصر الموجودة في حساب التخزين الخاص بك لفترة زمنية محددة ومع مجموعة محددة من الأذونات، دون الحاجة إلى مشاركة مفاتيح الاختصار إلى حسابك. توقيع الوصول المشترك هو عنوان "URL" الذي يشمل في معلمات الاستعلام الخاصة به جميع المعلومات الضرورية للوصول المصادق عليه إلى مورد التخزين. للوصول إلى موارد التخزين باستخدام توقيع الوصول المشترك يحتاج العميل فقط لتمرير في توقيع الوصول المشترك إلى المنشئ المناسب أو الأسلوب. للحصول على مزيد من المعلومات عن توقيعات الوصول المشترك، راجع منح الوصول المحدود إلى موارد Azure Storage باستخدام توقيعات الوصول المشتركة (SAS).
هام
يدعم الأن Azure Data Factory فقط خدمة توقيع الوصول المشترك ولكن ليس حساب توقيع الوصول المشترك. لاحظ أن عنوان "URL" الخاص بتوقيع الوصول المشترك الذي يمكن إنشاؤه من Azure portal أو مستكشف التخزين هو حساب توقيع الوصول المشترك، وهو غير مدعوم.
تلميح
يمكنك تنفيذ أوامر PowerShell أدناه لإنشاء خدمة توقيع الوصول المشترك لحساب التخزين الخاص بك (استبدال أصحاب المناصب ومنح الإذن المطلوب): $context = New-AzStorageContext -StorageAccountName <accountName> -StorageAccountKey <accountKey>New-AzStorageContainerSASToken -Name <containerName> -Context $context -Permission rwdl -StartTime <startTime> -ExpiryTime <endTime> -FullUri
تسمح The Azure Storage SAS linked service بربط حساب Azure Storage بـ Azure data factory باستخدام Shared Access Signature (SAS). يوفر مصنع البيانات مع وصول مقيد / الوقت المحدد لجميع الموارد / محددة (كائن ثنائي كبير الحجم/حاوية) في التخزين. يوفر الجدول التالي وصفاً لعناصر JSON الخاصة بخدمة Azure Storage لتوقيع الوصول المشترك. ذات الارتباط التشعبي.
| الخاصية | الوصف | مطلوب |
|---|---|---|
| النوع | يجب تعيين خاصية النوع إلى: AzureStorageSas | نعم |
| sasUri | تحديد "URL" لتوقيع الوصول المشترك إلى موارد Azure Storage مثل النقطة أو الحاوية أو الجدول. | نعم |
مثال:
{
"name": "StorageSasLinkedService",
"properties": {
"type": "AzureStorageSas",
"typeProperties": {
"sasUri": "<Specify SAS URI of the Azure Storage resource>"
}
}
}
عند إنشاء عنوان "URL" الخاص بتوقيع الوصول المشترك، مع الأخذ في الاعتبار ما يلي:
- تعيين أذونات القراءة/ الكتابة المناسبة الخاصة بالعناصر استناداً إلى كيفية استخدام الخدمة المرتبطة (القراءة والكتابة والقراءة/الكتابة) في مصنع البيانات.
- عين وقت انتهاء الصلاحية بشكل مناسب. تأكد من أن الوصول إلى كائنات Azure Storage لا تنتهي صلاحيته خلال الفترة النشطة من البنية الأساسية لبرنامج ربط العمليات التجارية.
- يجب إنشاء عنوان "URL" على مستوى الحاوية/الكائن الثنائي كبير الحجم أو الجدول الصحيح بناءً على الحاجة. يسمح SAS Url إلى Azure blob لخدمة Data Factory بالوصول إلى هذا الكائن المعين. يسمح SAS Url إلى Azure blob container لخدمة Data Factory إلى تكرار الكائنات الثنائية كبيرة الحجم في تلك الحاوية. إذا كنت بحاجة إلى توفير الوصول إلى كائنات أكثر/أقل لاحقا، أو تحديث SAS URI، تذكر تحديث الخدمة ذات الارتباط التشعبي مع عنوان "URL" الجديد.
خصائص مجموعة البيانات
لتحديد مجموعة بيانات لتمثيل بيانات الإدخال أو الإخراج في Azure Blob Storage، قم بتعيين خاصية نوع مجموعة البيانات إلى: AzureBlob. قم بتعيين الخاصية linkedServiceName لمجموعة البيانات إلى اسم الخدمة المرتبطة Azure Storage أو Azure Storage SAS. تُحدد خصائص نوع مجموعة البيانات حاوية الكائن الثنائي كبير الحجم والمجلد في موقع تخزين الكائن الثنائي كبير الحجم.
للحصول على قائمة كاملة بخصائص أقسام & JSON المتوفرة لتعريف مجموعات البيانات، راجع مقالة إنشاء مجموعات بيانات . تتشابه أقسام مثل البنية والتوفر وسياسة مجموعة البيانات JSON مع جميع أنواع مجموعات البيانات (Azure SQL وAzure blob Azure table وما إلى ذلك).
يدعم مصنع البيانات قيم النوع التالية المستندة إلى .NET المتوافقة مع CLS لتوفير معلومات النوع في "بنية" لمصادر بيانات المخطط عند القراءة مثل كائن Azur الثنائي كبير الحجم: Int16، Int32، Int64، Single، Double، Decimal، Byte[]، Bool، String، Guid، Datetime، Datetimeoffset، Timespan. تُجري خدمة Data Factory تحويلات النوع عند نقل البيانات من مخزن بيانات مصدر إلى مخزن بيانات متلقي تلقائياً.
يختلف القسم typeProperties لكل نوع من مجموعة البيانات ويوفر معلومات حول موقع البيانات في مخزن البيانات وتنسيقها وما إلى ذلك. يتميز قسم typeProperties لمجموعة البيانات من النوع AzureBlob بالخصائص التالية:
| الخاصية | الوصف | مطلوب |
|---|---|---|
| مسار المجلد | المسار إلى الحاوية والمجلد في موقع تخزين الكائن الثنائي كبير الحجم. مثال: myblobcontainer\myblobfolder\ | نعم |
| fileName | اسم الكائن الثنائي كبير الحجم. يكون fileName اختيارياً ويتحسس حالة الأحرف. إذا قمت بتحديد filename، يعمل النشاط (بما في ذلك نسخ) على الكائن الثنائي كبير الحجم المحدد. عند عدم تحديد fileName، تتضمن النسخة جميع الكائنات الثنائية كبيرة الحجم في folderPath لمجموعة بيانات الإدخال. عند عدم تحديد fileName لمجموعة بيانات إخراج، وعدم تحديد preserveHierarchy في متلقي النشاط، يكون اسم الملف الذي تم إنشاؤه بالتنسيق التالي: Data.<Guid>.txt (على سبيل المثال: : Data.0a405f8a-93ff-4c6f-b3be-f69616f1df7a.txt |
لا |
| partitionedBy | تكون partitionedBy خاصية اختيارية. يُمكنك استخدامها لتحديد folderPath الحيوي وfilename لبيانات السلسلة الزمنية. على سبيل المثال، يمكن تحديد معلمة folderPath لكل ساعة من البيانات. راجع استخدام قسم خاصية partitionedBy للحصول على تفاصيل وأمثلة. | لا |
| التنسيق | تكون أنواع التنسيق التالية مدعومة: TextFormat، وJsonFormat، وAvroFormat، وOrcFormat، وParquetFormat. قم بتعيين خاصية النوع الموجودة ضمن التنسيق إلى إحدى هذه القيم. للحصول على مزيدٍ من المعلومات، انظر أقسام Text format، وJSON format، وAvro format، وORC format، وParquet format. إذا كنت تريد نسخ الملفات كما هي بين المتاجر المستندة إلى الملفات (نسخة ثنائية)، فتخط قسم التنسيق في تعريفات مجموعة بيانات الإدخال والإخراج. |
لا |
| الضغط | حدد نوع ضغط البيانات ومستواه. الأنواع المدعومة هي: GZip، وDeflate، وBZip2، وZipDeflate. المستويات المدعومة هي Optimal وFastest. للحصول على المزيد من المعلومات، راجع File and compression formats in Azure Data Factory. | لا |
استخدام خاصية partitionedBy
كما هو مذكور في القسم السابق، يمكنك تحديد folderPath الديناميكي وfilename لبيانات السلاسل الزمنية باستخدام خاصية partitionedBy، ودوال Data Factory، ومتغيرات النظام.
لمزيد من المعلومات حول مجموعات بيانات السلاسل الزمنية والجدولة والشرائح، راجع مقالات إنشاء مجموعات البياناتوتنفيذ الجدولة&.
العينة 1
"folderPath": "wikidatagateway/wikisampledataout/{Slice}",
"partitionedBy":
[
{ "name": "Slice", "value": { "type": "DateTime", "date": "SliceStart", "format": "yyyyMMddHH" } },
],
في هذا المثال، يتم استبدال {Slice} بقيمة متغير نظام Data Factory SliceStart بالتنسيق (YYYYMMDDHH) المحدد. يشير SliceStart إلى وقت بدء الشريحة. folderPath مختلف لكل شريحة. على سبيل المثال: wikidatagateway/wikisampledataout/2014100103 أو wikidatagateway/wikisampledataout/2014100104
العينة 2
"folderPath": "wikidatagateway/wikisampledataout/{Year}/{Month}/{Day}",
"fileName": "{Hour}.csv",
"partitionedBy":
[
{ "name": "Year", "value": { "type": "DateTime", "date": "SliceStart", "format": "yyyy" } },
{ "name": "Month", "value": { "type": "DateTime", "date": "SliceStart", "format": "MM" } },
{ "name": "Day", "value": { "type": "DateTime", "date": "SliceStart", "format": "dd" } },
{ "name": "Hour", "value": { "type": "DateTime", "date": "SliceStart", "format": "hh" } }
],
في هذا المثال، يتم استخراج السنة والشهر واليوم والوقت من SliceStart إلى متغيرات منفصلة يتم استخدامها بواسطة خصائص folderPath وfileName.
نسخ خصائص النشاط
للحصول على قائمة كاملة بخصائص الأقسام & المتوفرة لتعريف الأنشطة، راجع مقالة إنشاء خطوط الأنابيب . تتوفر خصائص مثل الاسم والوصف مجموعة بيانات الإدخال والإخراج والنهج لجميع أنواع الأنشطة. حيث تختلف الخصائص المتوفرة في القسم typeProperties النشاط مع كل نوع نشاط. بالنسبة لنشاط النسخ، يختلف باختلاف أنواع المصادر والمتلقيين. إذا كنت تقوم بنقل البيانات من Azure Blob Storage، قم بتعيين نوع المصدر في نشاط النسخ إلى BlobSource. وبالمثل، إذا كنت تقوم بنقل البيانات إلى Azure Blob Storage، قم بتعيين نوع الملتقي في نشاط النسخ إلى BlobSink. يوفر هذا القسم قائمة من الخصائص المدعومة من قبل BlobSource وBlobSink.
يدعم BlobSource الخصائص التالية في القسم typeProperties:
| الخاصية | الوصف | القيم المسموح بها | مطلوب |
|---|---|---|---|
| التكرار | تشير إلى ما إذا كان يتم قراءة البيانات بشكل متكرر من المجلدات الفرعية أو فقط من المجلد المحدد. | صحيحة (القيمة الافتراضية)، خطأ | لا |
تدعم BlobSink قسم typeProperties للخصائص التالية:
| الخاصية | الوصف | القيم المسموح بها | مطلوب |
|---|---|---|---|
| copyBehavior | يعرف سلوك النسخ عندما يكون المصدر هو BlobSource أو FileSystem. | PreserveHierarchy:تحافظ على التدرج الهرمي للملفات في المجلد الهدف. يكون المسار النسبي لملف المصدر إلى المجلد المصدر مطابقاً للمسار النسبي لملف الهدف إلى المجلد الهدف. FlattenHierarchy: جميع الملفات من المجلد المصدر في المستوى الأول من المجلد الهدف. الملفات الهدف لها اسم تم إنشاؤه تلقائياً. MergeFiles: تدمج جميع الملفات من المجلد المصدر إلى ملف واحد. إذا تم تحديد اسم الملف/الكائن الثنائي كبير الحجم، اسم الملف المدمج سيكون الاسم المحدد، وإلا، سيتم إنشاء اسم الملف تلقائياً. |
لا |
تدعم BlobSource أيضاً هاتين الخاصيتين لتوافق الإصدارات السابقة.
- treatEmptyAsNull: تُحدد إذا ما كان يتم التعامل مع سلسلة فارغة أو خالية كقيمة خالية.
- skipHeaderLineCount - تُحدد عدد الأسطر التي يتعين تخطيها. وهي قابلة للتطبيق عندما تستخدم مجموعة بيانات الإدخال TextFormat فقط.
وبالمثل، تدعم BlobSink الخاصية التالية لتوافق الإصدارات السابقة.
- blobWriterAddHeader: تُحدد إذا ما كان ستتم إضافة عنوان تعريفات العمود أثناء الكتابة في مجموعة بيانات إخراج.
تدعم مجموعات البيانات الآن الخصائص التالية التي تُنفذ نفس الوظيفة: treatEmptyAsNull، skipLineCount، firstRowAsHeader.
يوفر الجدول التالي إرشادات حول استخدام خصائص مجموعة البيانات الجديدة بدلاً من خصائص المصدر/ المتلقي للكائن الثنائي كبير الحجم.
| خاصية نشاط النسخ | خاصية مجموعة البيانات |
|---|---|
| skipHeaderLineCount على BlobSource | skipLineCount وfirstRowAsHeader. يتم تخطي الأسطر أولاً ثم تتم قراءة الصف الأول كعنوان. |
| treatEmptyAsNull على BlobSource | treatEmptyAsNull على مجموعة بيانات الإدخال |
| blobWriterAddHeader على BlobSink | firstRowAsHeader على مجموعة بيانات الإخراج |
راجع قسم تحديد TextFormat للحصول على معلومات مفصّلة حول هذه الخصائص.
أمثلة على قيم التكرار وcopyBehavior
يصف هذا القسم السلوك الناتج من عملية نسخ تركيبات مختلفة من قيم التكرار وcopyBehavior.
| التكرار | copyBehavior | السلوك الناتج |
|---|---|---|
| صواب | preserveHierarchy | مجلد مصدر Folder1 مع البنية التالية: Folder1 ملف1 File2 Subfolder1 File3 File4 File5 يتم إنشاء المجلد الهدف Folder1 بنفس بنية المصدر Folder1 ملف1 File2 Subfolder1 File3 File4 ملف 5. |
| صواب | flattenHierarchy | مجلد مصدر Folder1 مع البنية التالية: Folder1 ملف1 File2 Subfolder1 File3 File4 File5 يتم إنشاء الهدف Folder1 بالبنية التالية: Folder1 اسم تم إنشاؤه تلقائياً لـ File1 الاسم الذي تم إنشاؤه تلقائيا ل File2 الاسم الذي تم إنشاؤه تلقائيا ل File3 الاسم الذي تم إنشاؤه تلقائيا ل File4 الاسم الذي تم إنشاؤه تلقائيا ل File5 |
| صواب | mergeFiles | مجلد مصدر Folder1 مع البنية التالية: Folder1 ملف1 File2 Subfolder1 File3 File4 File5 يتم إنشاء الهدف Folder1 بالبنية التالية: Folder1 يتم دمج محتويات File1 + File2 + File3 + File4 + File 5 في ملف واحد باسم ملف تم إنشاؤه تلقائياً |
| false | preserveHierarchy | مجلد مصدر Folder1 مع البنية التالية: Folder1 ملف1 File2 Subfolder1 File3 File4 File5 يتم إنشاء المجلد الهدف Folder1 مع البنية التالية Folder1 ملف1 File2 لا يتم انتقاء Subfolder1 مع File3 وFile4 وFile5. |
| false | flattenHierarchy | مجلد مصدر Folder1 مع البنية التالية: Folder1 ملف1 File2 Subfolder1 File3 File4 File5 يتم إنشاء المجلد الهدف Folder1 مع البنية التالية Folder1 اسم تم إنشاؤه تلقائياً لـ File1 اسم تم إنشاؤه تلقائياً لـ File2 لا يتم انتقاء Subfolder1 مع File3 وFile4 وFile5. |
| false | mergeFiles | مجلد مصدر Folder1 مع البنية التالية: Folder1 ملف1 File2 Subfolder1 File3 File4 File5 يتم إنشاء المجلد الهدف Folder1 مع البنية التالية Folder1 يتم دمج محتويات File1 + File2 في ملف واحد باسم ملف تم إنشاؤه تلقائياً. اسم تم إنشاؤه تلقائياً لـ File1 لا يتم انتقاء Subfolder1 مع File3 وFile4 وFile5. |
معاينة: استخدام معالج النسخ لنسخ البيانات إلى/من Blob Storage
لننظر في كيفية نسخ البيانات إلى/من Azure blob storage بسرعة. في هذه المعاينة، تكون مخازن البيانات المصدر والوجهة الخاصة بالنوع: Azure Blob Storage. ينسخ المسار في هذه المعاينة البيانات من مجلد إلى مجلد آخر في نفس حاوية الكائن الثنائي كبير الحجم. هذه المعاينة بسيطة عن قصد لإظهار الإعدادات أو الخصائص عند استخدام Blob Storage كمصدر أو متلقي.
المتطلبات الأساسية
- قم بإنشاء حساب Azure Storage للأغراض العامة إذا لم يكن لديك حساب بالفعل. تستخدم مخزن الكائن الثنائي كبير الحجم باعتباره كلاً من مخزن البيانات المصدر والوجهة في هذه المعاينة. في حال لم يكن لديك حساب تخزين Azure، راجع مقالة إنشاء حساب تخزين للاطلاع على خطوات إنشاء حساب.
- قم بإنشاء حاوية كائن ثنائي كبير الحجم باسم adfblobconnector في حساب التخزين.
- قم بإنشاء مجلد باسم input في الحاوية adfblobconnector.
- قم بإنشاء ملف باسم emp.txt بالمحتوى التالي وتحميله إلى مجلد input باستخدام أدوات مثل Azure Storage Explorer
John, Doe Jane, Doe
إنشاء مصنع البيانات
- تسجيل الدخول إلى مدخل Azure.
- انقر فوق Create a resource من أعلى الزاوية اليسرى، وانقر فوق البيانات Intelligence + analytics وانقر فوق Data Factory.
- في جزء New data factory:
- أدخل ADFBlobConnectorDF لـ name. يجب أن يكون اسم Azure data factory مميزاً عالمياً. إذا تلقيت الخطأ:
*Data factory name "ADFBlobConnectorDF" is not available، فقم بتغيير اسم مصنع البيانات (على سبيل المثال، yournameADFBlobConnectorDF) وحاول إنشاءه مرة أخرى. راجع موضوع Data Factory - Naming Rules لقواعد تسمية عناصر Data Factory . - حدد اشتراك Azure.
- بالنسبة لمجموعة الموارد، حدد Use existing لتحديد مجموعة موارد موجودة (أو) حدد Create new لإدخال اسم لمجموعة الموارد.
- بالنسبة إلى المنطقة، حدد موقع مصِّنع البيانات.
- حدد خانة الاختيار تثبيت لوحة المعلومات في أسفل الجزء.
- انقر فوق Create.
- أدخل ADFBlobConnectorDF لـ name. يجب أن يكون اسم Azure data factory مميزاً عالمياً. إذا تلقيت الخطأ:
- بعد اكتمال الإنشاء، سترى شفرة Data Factory كما هو موضح في الصورة التالية:
معالج النسخ
في صفحة Data Factory الرئيسية، انقر فوق تجانب Copy data لتشغيل Copy Data Wizard في علامة تبويب منفصلة.
ملاحظة
إذا رأيت أن مستعرض الويب عالق في "السماح..."، فقم بتعطيل/إلغاء تحديد إعداد حظر ملفات تعريف الارتباط الخاصة بالجهات الخارجية وبيانات الموقع (أو) الاحتفاظ بتمكينه وإنشاء استثناء login.microsoftonline.com ثم حاول تشغيل المعالج مرة أخرى.
في صفحة خصائص:
- أدخل CopyPipeline في حقل Task name. اسم المهمة هو اسم المسار الموجود في مصنع بياناتك.
- أدخِل وصفاً للمهمة (اختياري).
- بالنسبة لإيقاع المهمة أو جدولة المهمة، احتفظ بخيار Run regularly on schedule. إذا كنت تريد تشغيل هذه المهمة مرة واحدة فقط بدلاً من تشغيلها بشكل متكرر على جدول زمني، حدد Run once now. إذا قمت بتحديد خيار Run once now، يتم إنشاء مسار لمرة واحدة.
- احتفظ بالإعدادات للنمط المتكرر. يتم تشغيل هذه المهمة يومياً بين أوقات البدء وانتهاء التي تحددها في الخطوة التالية.
- قم بتغيير Start date time إلى 04/21/2017.
- قم بتغيير End date time إلى 04/25/2017. قد ترغب في كتابة التاريخ بدلاً من استعراضه من خلال التقويم.
- انقر فوق التالي.
في الصفحة مخزن البيانات المصدر، انقر فوق Azure Blob التخزين البلاط. يمكنك استخدام هذه الصفحة لتحديد مخزن البيانات المصدر لمهمة النسخ. يُمكنك استخدام خدمة مرتبطة موجودة لمخزن البيانات (أو) تحديد مخزن بيانات جديد. لاستخدام خدمة مرتبطة موجودة، يُمكنك تحديد FROM EXISTING LINKED SERVICES وتحديد الخدمة المرتبطة المناسبة.
في الصفحة تحديد حساب تخزين Azure Blob:
- احتفظ بالاسم الذي تم إنشاؤه تلقائياً لاسم الاتصال. اسم الاتصال هو اسم خدمة النوع المرتبطة: Azure Storage.
- تأكد من تحديد خيار الاشتراكات من Azureلأسلوب تحديد الحساب.
- حدد اشتراك Azure الخاص بك أو احتفظ بخيار Select allلاشتراك Azure.
- حدد حساب تخزين Azure من قائمة حسابات التخزين Azure المتوفرة في الاشتراك المحدد. يُمكنك أيضاً اختيار إدخال إعدادات حساب التخزين يدوياً عن طريق تحديد خيار Enter manually لحقل Account selection method.
- انقر فوق التالي.
في اختيار ملف الإدخال أو صفحة المجلد:
- انقر نقراً مزدوجاً فوق adfblobcontainer.
- حدد input، وانقر فوق Choose. في هذه المعاينة، تُحدد مجلد الإدخال. يُمكنك أيضاً تحديد الملف emp.txt في المجلد بدلاً من ذلك.
في صفحة اختيار مجلد أو ملف الإدخال:
- تأكد من تعيين الملف أو المجلد إلى adfblobconnector/input. إذا كانت الملفات في مجلدات فرعية، على سبيل المثال، 2017/04/01، و2017/04/02، وهكذا، أدخل adfblobconnector/input/{year}/{month}/{day} للملف أو المجلد. عندما تضغط على "TAB" من مربع النص، ترى ثلاث قوائم منسدلة لتحديد تنسيقات السنة (yyyy) والشهر (MM) واليوم (dd).
- لا تقم بتعيين خيار Copy file recursively. حدد هذا الخيار للاجتياز خلال مجلدات الملفات المراد نسخها إلى الوجهة بشكل متكرر.
- لا تقم بتعيين خيار binary copy. حدد هذا الخيار لتنفيذ نسخة ثنائية من الملف المصدر إلى الوجهة. لا تقم بتحديد هذا الخيار لهذه المعاينة حتى تتمكن من رؤية المزيد من الخيارات في الصفحات التالية.
- تأكد من تعيين Compression type إلى None. حدد قيمة لهذا الخيار في حالة ضغط ملفات المصدر بأحد التنسيقات المدعومة.
- انقر فوق التالي.
في الصفحة إعدادات تنسيق الملف، تشاهد محددات المخطط الذي يتم الكشف عن طريق المعالج تلقائياً عن طريق تحليل الملف.
- قم بتأكيد الخيارات التالية:
أ. تعيين تنسيق الملف إلى Text format. يُمكنك رؤية جميع التنسيقات المدعومة في القائمة المنسدلة. على سبيل المثال: JSON، Avro، ORC، Parquet. ب. تعيين محدِّد العمود إلىComma (,). يُمكنك رؤية محدِّدات الأعمدة الأخرى المدعومة من قبل Data Factory في القائمة المنسدلة. يُمكنك أيضاً تحديد محدِّد مخصص. ج. تعيين محدِّد الصف إلىCarriage Return + Line feed (\r\n). يمكنك رؤية محدِّدات الصفوف الأخرى المدعومة من قبل Data Factory في القائمة المنسدلة. يُمكنك أيضاً تحديد محدِّد مخصص. د. تعيين عدد أسطر التخطي إلى 0. إذا كنت تريد تخطي بضعة أسطر في أعلى الملف، أدخل الرقم هنا. هـ. عدم تعيين صف البيانات الأول الذي يحتوي على أسماء الأعمدة. إذا كانت الملفات المصدر تحتوي على أسماء أعمدة في الصف الأول، فحدد هذا الخيار. و. تعيين خيار معاملة قيمة العمود الفارغة كخالية. - قم بتوسيع الإعدادات المتقدمة لرؤية الخيار المتقدم المتاح.
- في أسفل الصفحة، راجع معاينة البيانات من ملف emp.txt.
- انقر فوق علامة التبويب "SCHEMA" بالأسفل لرؤية المخطط الذي استنتجه معالج النسخ بالبحث في البيانات الموجودة في الملف المصدر.
- انقر فوق التالي بعد مراجعة المحددات ومعاينة البيانات.
- قم بتأكيد الخيارات التالية:
في صفحة Destination data store، حدد Azure Blob Storage، وانقر فوق Next. تستخدم Azure Blob Storage كمخازن البيانات المصدر والوجهة على حد سواء في هذه المعاينة.
في صفحة Specify the Azure Blob storage account:
- أدخل AzureStorageLinkedService لحقل Connection name.
- تأكد من تحديد خيار الاشتراكات من Azureلأسلوب تحديد الحساب.
- حدد اشتراكك في Azure.
- حدد حساب تخزين Azure الخاص بك.
- انقر فوق التالي.
في صفحة Choose the output file or folder:
- حدد Folder path ليكون adfblobconnector/output/{year}/{month}/{day} . أدخل TAB.
- بالنسبة لحقل year، حدد yyyy.
- بالنسبة لحقل month، تأكد من تعيينه إلى MM.
- بالنسبة لحقل day، تأكد من تعيينه إلى dd.
- تأكد من تعيين compression type إلى None.
- تأكد من تعيين copy behavior إلى Merge files. إذا كان ملف الإخراج الذي يحمل نفس الاسم موجوداً بالفعل، تتم إضافة المحتوى الجديد إلى نفس الملف في النهاية.
- انقر فوق التالي.
في صفحة File format settings، راجع الإعدادات، وانقر فوق Next. يتمثل أحد الخيارات الإضافية هنا في إضافة عنوان إلى ملف الإخراج. إذا قمت بتحديد هذا الخيار، تتم إضافة صف عنوان بأسماء الأعمدة من مخطط المصدر. يمكنك إعادة تسمية أسماء الأعمدة الافتراضية عند عرض المخطط الخاص بالمصدر. على سبيل المثال، يُمكنك تغيير العمود الأول إلى الاسم الأول والعمود الثاني إلى اسم العائلة. بعد ذلك، يتم إنشاء ملف الإخراج بعنوان يضم هذه الأسماء كأسماء أعمدة.
في صفحة Performance settings، تأكد من تعيين cloud units وparallel copies إلى Auto، وانقر فوق "Next". للحصول على تفاصيل حول هذه الإعدادات، راجع أداء نشاط النسخ وإرشاد ضبطه.
في صفحة Summary، راجع جميع الإعدادات (خصائص المهمة، وإعدادات المصدر والوجهة، وإعدادات النسخ)، وانقر فوق Next.
راجع المعلومات في صفحة الملخص، وانقر فوق إنهاء. ينشئ المعالج خدمات مرتبطة اثنين، مجموعتي بيانات (الإدخال والإخراج)، وخط أنابيب واحد في مصنع البيانات (من حيث قمت بتشغيل معالج النسخ).
مراقبة المسار (مهمة النسخ)
انقر فوق الرابط
Click here to monitor copy pipelineفي صفحة Deployment.من المفترض أن تشاهد تطبيق "المراقبة والإدارة " في علامة تبويب منفصلة.
قم بتغيير وقت البدء في الأعلى إلى
04/19/2017ووقت الانتهاء إلى04/27/2017، ثم انقر فوق Apply.ينبغي أن ترى خمس نوافذ نشاط في قائمة ACTIVITY WINDOWS. يجب أن تشمل أوقات WindowStart جميع الأيام من وقت بداية المسار إلى وقت نهايته.
انقر فوق زر Refresh بقائمة ACTIVITY WINDOWS عدة مرات حتى ترى تعيين حالة جميع إطارات النشاط إلى "Ready".
الآن، تحقق من أنه يتم إنشاء ملفات الإخراج في مجلد الإخراج لحاوية adfblobconnector. ينبغي أن ترى بنية المجلد التالية في مجلد الإخراج:
2017/04/21 2017/04/22 2017/04/23 2017/04/24 2017/04/25للحصول على معلومات مفصّلة حول مراقبة مصانع البيانات وإدارتها، راجع مقالة مراقبة مسار Data Factory وإدارته.
كيانات Data Factory
الآن، قم بالتبديل مرة أخرى إلى علامة التبويب في صفحة Data Factory الرئيسية. لاحظ أن هناك خدمتين مرتبطتين، ومجموعتي بيانات، ومساراً واحداً في مصنع البيانات الخاص بك الآن.
انقر فوق Author and deploy لتشغيل محرر Data Factory.
ينبغي أن ترى كيانات Data Factory التالية في مصنع البيانات:
- خدمتان مرتبطتان. خدمة للمصدر وأخرى للوجهة. تشير كل من الخدمتين المرتبطتين إلى نفس حساب Azure Storage في هذه المعاينة.
- مجموعتا بيانات. مجموعة بيانات إدخال ومجموعة بيانات إخراج. في هذه المعاينة، تستخدم كل منهما نفس حاوية الكائن الثنائي كبير الحجم لكنهما تشيران إلى مجلدات مختلفة (الإدخال والإخراج).
- مسار. يحتوي المسار على نشاط نسخ يستخدم مصدر كائن ثنائي كبير الحجم ومتلقي كائن ثنائي كبير الحجم لنسخ البيانات من موقع Azure blob إلى موقع Azure blob آخر.
توفر الأقسام التالية المزيد من المعلومات حول هذه الكيانات.
الخدمات المرتبطة
ينبغي أن ترى خدمتين مرتبطتين. خدمة للمصدر وأخرى للوجهة. في هذه المعاينة، يبدو أن كلا التعريفين متماثلان باستثناء الأسماء. يتم تعيين نوع الخدمة المرتبطة إلى AzureStorage. أهم خاصية لتعريف الخدمة المرتبطة هي connectionString، التي يستخدمها Data Factory للاتصال بحساب Azure Storage في وقت التشغيل. تجاهل الخاصية hubName الموجودة في التعريف.
الخدمة المرتبطة تخزين الكائن الثنائي كبير الحجم المصدر
{
"name": "Source-BlobStorage-z4y",
"properties": {
"type": "AzureStorage",
"typeProperties": {
"connectionString": "DefaultEndpointsProtocol=https;AccountName=mystorageaccount;AccountKey=**********"
}
}
}
الخدمة المرتبطة تخزين الكائن الثنائي كبير الحجم الوجهة
{
"name": "Destination-BlobStorage-z4y",
"properties": {
"type": "AzureStorage",
"typeProperties": {
"connectionString": "DefaultEndpointsProtocol=https;AccountName=mystorageaccount;AccountKey=**********"
}
}
}
لمزيد من المعلومات حول الخدمة المرتبطة Azure Storage، راجع قسم خصائص الخدمة المرتبطة.
مجموعات البيانات
توجد مجموعتا بيانات: مجموعة بيانات إدخال ومجموعة بيانات إخراج. يتم تعيين نوع مجموعة البيانات إلى AzureBlob لكل منهما.
تُشير مجموعة بيانات الإدخال إلى مجلد input في حاوية الكائن الثنائي كبير الحجم adfblobconnector. يتم تعيين خاصية external إلى true لمجموعة البيانات هذه حيث لا يتم إنتاج البيانات بواسطة المسار مع نشاط النسخ الذي يتخذ مجموعة البيانات هذه كإدخال.
تُشير مجموعة بيانات الإخراج إلى مجلد output لنفس حاوية الكائن الثنائي كبير الحجم. تستخدم مجموعة بيانات الإخراج أيضاً السنة والشهر واليوم لمتغير نظام SliceStart لتقييم مسار ملف الإخراج ديناميكياً. للحصول على قائمة متغيرات النظام والوظائف المدعومة من Data Factory، راجع متغيرات النظام ووظائف Data Factory. يتم تعيين خاصية external إلى false (القيمة الافتراضية) نظراً لأنه يتم إنتاج مجموعة البيانات هذه بواسطة المسار.
للحصول على مزيد من المعلومات عن الخصائص التي تدعمها مجموعة بيانات Azure Blob، راجع قسم خصائص مجموعة البيانات.
مجموعة بيانات الإدخال
{
"name": "InputDataset-z4y",
"properties": {
"structure": [
{ "name": "Prop_0", "type": "String" },
{ "name": "Prop_1", "type": "String" }
],
"type": "AzureBlob",
"linkedServiceName": "Source-BlobStorage-z4y",
"typeProperties": {
"folderPath": "adfblobconnector/input/",
"format": {
"type": "TextFormat",
"columnDelimiter": ","
}
},
"availability": {
"frequency": "Day",
"interval": 1
},
"external": true,
"policy": {}
}
}
مجموعة بيانات الإخراج
{
"name": "OutputDataset-z4y",
"properties": {
"structure": [
{ "name": "Prop_0", "type": "String" },
{ "name": "Prop_1", "type": "String" }
],
"type": "AzureBlob",
"linkedServiceName": "Destination-BlobStorage-z4y",
"typeProperties": {
"folderPath": "adfblobconnector/output/{year}/{month}/{day}",
"format": {
"type": "TextFormat",
"columnDelimiter": ","
},
"partitionedBy": [
{ "name": "year", "value": { "type": "DateTime", "date": "SliceStart", "format": "yyyy" } },
{ "name": "month", "value": { "type": "DateTime", "date": "SliceStart", "format": "MM" } },
{ "name": "day", "value": { "type": "DateTime", "date": "SliceStart", "format": "dd" } }
]
},
"availability": {
"frequency": "Day",
"interval": 1
},
"external": false,
"policy": {}
}
}
البنية الأساسية لبرنامج ربط العمليات التجارية
لدى المسار نشاط واحد فقط. يتم تعيين نوع النشاط إلى Copy. هناك قسمان في خصائص النوع للنشاط، قسم للمصدر والآخر للمتلقي. يتم تعيين نوع المصدر إلى BlobSource بينما ينسخ النشاط البيانات من تخزين كائن ثنائي كبير الحجم. يتم تعيين نوع المتلقي إلى BlobSink بينما ينسخ النشاط البيانات إلى تخزين كائن ثنائي كبير الحجم. يتخذ نشاط النسخ InputDataset-z4y كإدخال وOutputDataset-z4y كإخراج.
لمزيد من المعلومات حول الخصائص المدعومة من قبل BlobSource وBlobSink، راجع قسم خصائص نشاط النسخ.
{
"name": "CopyPipeline",
"properties": {
"activities": [
{
"type": "Copy",
"typeProperties": {
"source": {
"type": "BlobSource",
"recursive": false
},
"sink": {
"type": "BlobSink",
"copyBehavior": "MergeFiles",
"writeBatchSize": 0,
"writeBatchTimeout": "00:00:00"
}
},
"inputs": [
{
"name": "InputDataset-z4y"
}
],
"outputs": [
{
"name": "OutputDataset-z4y"
}
],
"policy": {
"timeout": "1.00:00:00",
"concurrency": 1,
"executionPriorityOrder": "NewestFirst",
"style": "StartOfInterval",
"retry": 3,
"longRetry": 0,
"longRetryInterval": "00:00:00"
},
"scheduler": {
"frequency": "Day",
"interval": 1
},
"name": "Activity-0-Blob path_ adfblobconnector_input_->OutputDataset-z4y"
}
],
"start": "2017-04-21T22:34:00Z",
"end": "2017-04-25T05:00:00Z",
"isPaused": false,
"pipelineMode": "Scheduled"
}
}
أمثلة JSON لنسخ البيانات من وإلى Blob Storage
توفر الأمثلة التالية عينات تعريفات JSON التي يُمكنك استخدامها لإنشاء مسار باستخدام Visual Studio أو Azure PowerShell. وتوضح كيفية نسخ البيانات من وإلى Azure Blob Storage وAzure SQL Database. ومع ذلك، يمكن نسخ البيانات مباشرة من أي من المصادر إلى أي من مواضع التلقي المذكورة هنا باستخدام نشاط النسخ في Azure Data Factory.
أمثلة JSON: نسخ البيانات من Blob Storage إلىSQL Database
تُظهر العينة ما يلي:
- خدمة مرتبطة من نوع AzureSqlDatabase.
- خدمة مرتبطة من نوع AzureStorage.
- إدخال مجموعة بيانات من نوع AzureBlob.
- مجموعة بيانات إخراج من نوع AzureSqlTable.
- مسار مع نشاط نسخ يستخدم BlobSource وSqlSink.
تنسخ العينة بيانات السلسلة الزمنية من Azure blob إلى جدول Azure SQL كل ساعة. خصائص JSON المستخدمة في هذه العينات موضَّحة في الأقسام التالية للعينات.
خدمة Azure SQL المرتبطة:
{
"name": "AzureSqlLinkedService",
"properties": {
"type": "AzureSqlDatabase",
"typeProperties": {
"connectionString": "Server=tcp:<servername>.database.windows.net,1433;Database=<databasename>;User ID=<username>@<servername>;Password=<password>;Trusted_Connection=False;Encrypt=True;Connection Timeout=30"
}
}
}
خدمة Azure Storage المرتبطة:
{
"name": "StorageLinkedService",
"properties": {
"type": "AzureStorage",
"typeProperties": {
"connectionString": "DefaultEndpointsProtocol=https;AccountName=<accountname>;AccountKey=<accountkey>"
}
}
}
تدعم Azure Data Factory نوعين من خدمات Azure Storage المرتبطة: AzureStorage وAzureStorageSas. بالنسبة للأول، يمكنك تحديد سلسلة الاتصال التي تتضمن مفتاح الحساب وللحالة اللاحقة، يمكنك تحديد Uri لتوقيع الوصول المشترك. راجع قسم Linked Services للحصول على التفاصيل.
مجموعة بيانات إدخال Azure Blob:
يتم التقاط البيانات من النقطة الجديدة كل ساعة (التردد: ساعة، فاصل زمني: 1). يتم تقييم مسار المجلد واسم الملف للنقطة بشكل حيوي استناداً إلى وقت بدء الشريحة التي تتم معالجتها. يستخدم مسار المجلد الجزء الخاص بالسنة والشهر واليوم من وقت البدء ويستخدم اسم الملف جزء الساعة من وقت البدء. يُعلم الإعداد "external": "true" خدمة Data Factory أن الجدول خارجي بالنسبة لمصنع البيانات ولا يُنتج بواسطة نشاط في مصنع البيانات.
{
"name": "AzureBlobInput",
"properties": {
"type": "AzureBlob",
"linkedServiceName": "StorageLinkedService",
"typeProperties": {
"folderPath": "mycontainer/myfolder/yearno={Year}/monthno={Month}/dayno={Day}/",
"fileName": "{Hour}.csv",
"partitionedBy": [
{ "name": "Year", "value": { "type": "DateTime", "date": "SliceStart", "format": "yyyy" } },
{ "name": "Month", "value": { "type": "DateTime", "date": "SliceStart", "format": "MM" } },
{ "name": "Day", "value": { "type": "DateTime", "date": "SliceStart", "format": "dd" } },
{ "name": "Hour", "value": { "type": "DateTime", "date": "SliceStart", "format": "HH" } }
],
"format": {
"type": "TextFormat",
"columnDelimiter": ",",
"rowDelimiter": "\n"
}
},
"external": true,
"availability": {
"frequency": "Hour",
"interval": 1
},
"policy": {
"externalData": {
"retryInterval": "00:01:00",
"retryTimeout": "00:10:00",
"maximumRetry": 3
}
}
}
}
مجموعة بيانات إخراج SQL Azure:
تنسخ العينة البيانات إلى جدول يسمى "MyTable" في Azure SQL Database. قم بإنشاء الجدول في قاعدة بيانات SQL بنفس عدد الأعمدة التي تتوقع أن يحتوي ملف Blob CSV عليها. تتم إضافة صفوف جديدة إلى الجدول كل ساعة.
{
"name": "AzureSqlOutput",
"properties": {
"type": "AzureSqlTable",
"linkedServiceName": "AzureSqlLinkedService",
"typeProperties": {
"tableName": "MyOutputTable"
},
"availability": {
"frequency": "Hour",
"interval": 1
}
}
}
نشاط نسخ في مسار مع مصدر الكائن الثنائي كبير الحجم ومتلقي SQL:
تحتوي البنية الأساسية لبرنامج ربط العمليات التجارية على نشاط نسخ تم تكوينه لاستخدام مجموعات بيانات الإدخال والإخراج ومن المقرر تشغيله كل ساعة. في تعريف JSON الخاص بالمسار، يتم تعيين نوع المصدر إلى BlobSource ويتم تعيين نوع المتلقي إلى SqlSink.
{
"name":"SamplePipeline",
"properties":{
"start":"2014-06-01T18:00:00",
"end":"2014-06-01T19:00:00",
"description":"pipeline with copy activity",
"activities":[
{
"name": "AzureBlobtoSQL",
"description": "Copy Activity",
"type": "Copy",
"inputs": [
{
"name": "AzureBlobInput"
}
],
"outputs": [
{
"name": "AzureSqlOutput"
}
],
"typeProperties": {
"source": {
"type": "BlobSource"
},
"sink": {
"type": "SqlSink"
}
},
"scheduler": {
"frequency": "Hour",
"interval": 1
},
"policy": {
"concurrency": 1,
"executionPriorityOrder": "OldestFirst",
"retry": 0,
"timeout": "01:00:00"
}
}
]
}
}
مثال JSON: نسخ البيانات من Azure SQL إلى Azure Blob
تعرض العينة التالية:
- خدمة مرتبطة من نوع AzureSqlDatabase.
- خدمة مرتبطة من نوع AzureStorage.
- مجموعة بيانات إدخال من نوع AzureSqlTable.
- مجموعة بيانات إخراج من نوع AzureBlob.
- مسار مع نشاط النسخ الذي يستخدم SqlSource وBlobSink.
تنسخ العينة بيانات السلسلة الزمنية من جدول Azure SQL إلى Azure blob كل ساعة. خصائص JSON المستخدمة في هذه العينات موضَّحة في الأقسام التالية للعينات.
خدمة Azure SQL المرتبطة:
{
"name": "AzureSqlLinkedService",
"properties": {
"type": "AzureSqlDatabase",
"typeProperties": {
"connectionString": "Server=tcp:<servername>.database.windows.net,1433;Database=<databasename>;User ID=<username>@<servername>;Password=<password>;Trusted_Connection=False;Encrypt=True;Connection Timeout=30"
}
}
}
خدمة Azure Storage المرتبطة:
{
"name": "StorageLinkedService",
"properties": {
"type": "AzureStorage",
"typeProperties": {
"connectionString": "DefaultEndpointsProtocol=https;AccountName=<accountname>;AccountKey=<accountkey>"
}
}
}
تدعم Azure Data Factory نوعين من خدمات Azure Storage المرتبطة: AzureStorage وAzureStorageSas. بالنسبة للأول، يمكنك تحديد سلسلة الاتصال التي تتضمن مفتاح الحساب وللحالة اللاحقة، يمكنك تحديد Uri لتوقيع الوصول المشترك. راجع قسم الخدمات المرتبطة للحصول على التفاصيل.
مجموعة بيانات الإدخال الخاصة بـ Azure SQL:
تفترض العينة أنك قمت بإنشاء جدول "MyTable" في Azure SQL ويحتوي على عمود يسمى "timestampcolumn" لبيانات السلاسل الزمنية.
يُبلغ الإعداد "external": "true" خدمة Data Factory أن الجدول خارجي لمصنع البيانات ولا يتم إنتاجه بواسطة نشاط في مصنع البيانات.
{
"name": "AzureSqlInput",
"properties": {
"type": "AzureSqlTable",
"linkedServiceName": "AzureSqlLinkedService",
"typeProperties": {
"tableName": "MyTable"
},
"external": true,
"availability": {
"frequency": "Hour",
"interval": 1
},
"policy": {
"externalData": {
"retryInterval": "00:01:00",
"retryTimeout": "00:10:00",
"maximumRetry": 3
}
}
}
}
مجموعة بيانات إخراج Azure Blob:
تتم كتابة البيانات إلى كائن ثنائي كبير الحجم جديد كل ساعة (التردد: ساعة، الفاصل الزمني: 1). يتم تقييم مسار المجلد لـ كائن ثنائي كبير الحجم ديناميكياً استناداً إلى وقت بدء الشريحة التي تتم معالجتها. يَستخدم مسار المجلد أجزاء السنة والشهر واليوم والساعات من وقت البدء.
{
"name": "AzureBlobOutput",
"properties": {
"type": "AzureBlob",
"linkedServiceName": "StorageLinkedService",
"typeProperties": {
"folderPath": "mycontainer/myfolder/yearno={Year}/monthno={Month}/dayno={Day}/hourno={Hour}/",
"partitionedBy": [
{
"name": "Year",
"value": { "type": "DateTime", "date": "SliceStart", "format": "yyyy" } },
{ "name": "Month", "value": { "type": "DateTime", "date": "SliceStart", "format": "MM" } },
{ "name": "Day", "value": { "type": "DateTime", "date": "SliceStart", "format": "dd" } },
{ "name": "Hour", "value": { "type": "DateTime", "date": "SliceStart", "format": "HH" } }
],
"format": {
"type": "TextFormat",
"columnDelimiter": "\t",
"rowDelimiter": "\n"
}
},
"availability": {
"frequency": "Hour",
"interval": 1
}
}
}
نشاط نسخ في مسار باستخدام مصدر SQL ومتلقي الكائن الثنائي كبير الحجم:
تحتوي البنية الأساسية لبرنامج ربط العمليات التجارية على نشاط نسخ تم تكوينه لاستخدام مجموعات بيانات الإدخال والإخراج ومن المقرر تشغيله كل ساعة. في تعريف JSON الخاص بالمسار، يتم تعيين نوع المصدر إلى SqlSource ويتم تعيين نوع المتلقي إلى BlobSink. يُحدد استعلام SQL المحدد للخاصية SqlReaderQuery البيانات في الساعة الماضية للنسخ.
{
"name":"SamplePipeline",
"properties":{
"start":"2014-06-01T18:00:00",
"end":"2014-06-01T19:00:00",
"description":"pipeline for copy activity",
"activities":[
{
"name": "AzureSQLtoBlob",
"description": "copy activity",
"type": "Copy",
"inputs": [
{
"name": "AzureSQLInput"
}
],
"outputs": [
{
"name": "AzureBlobOutput"
}
],
"typeProperties": {
"source": {
"type": "SqlSource",
"SqlReaderQuery": "$$Text.Format('select * from MyTable where timestampcolumn >= \\'{0:yyyy-MM-dd HH:mm}\\' AND timestampcolumn < \\'{1:yyyy-MM-dd HH:mm}\\'', WindowStart, WindowEnd)"
},
"sink": {
"type": "BlobSink"
}
},
"scheduler": {
"frequency": "Hour",
"interval": 1
},
"policy": {
"concurrency": 1,
"executionPriorityOrder": "OldestFirst",
"retry": 0,
"timeout": "01:00:00"
}
}
]
}
}
ملاحظة
لتعيين أعمدة من مجموعة البيانات المُصدّر إلى أعمدة من مجموعة بيانات المُتلقّي راجع Mapping dataset columns in Azure Data Factory.
الأداء والضبط
راجع دليل ضبط أداء نشاط النسخ للتعرف على العوامل الرئيسية التي تؤثر على أداء & حركة البيانات (نشاط النسخ) في Azure Data Factory والطرق المختلفة لتحسينها.