نسخ البيانات من Google Cloud Storage باستخدام Azure Data Factory أو Synapse Analytics

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

تلميح

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

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

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

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

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

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

على وجه التحديد، يدعم موصل Google Cloud Storage نسخ الملفات كما هي أو تحليل الملفات باستخدام تنسيقات الملفات المدعومة وبرامج ترميز الضغط. يستفيد من قابلية التشغيل البيني المتوافقة مع GCS S3.

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

الإعداد التالي مطلوب على حساب Google Cloud Storage الخاص بك:

  1. تمكين التشغيل البيني لحساب Google Cloud Storage الخاص بك
  2. عيّن المشروع الافتراضي الذي يحتوي على البيانات التي تريد نسخها من حاوية GCS المستهدفة.
  3. أنشئ حساب خدمة وحدد المستويات الصحيحة للأذونات باستخدام Cloud IAM على GCP.
  4. قم بإنشاء مفاتيح الوصول لحساب الخدمة هذا.

استرداد مفتاح الوصول لـ Google Cloud Storage

الأذونات المطلوبة

لنسخ البيانات من Google Cloud Storage، تأكد من منحك الأذونات التالية لعمليات الكائن: storage.objects.get و storage.objects.list.

إذا كنت تستخدم واجهة المستخدم للتأليف، فسيلزم إذن storage.buckets.list إضافي لعمليات مثل اختبار الاتصال بالخدمة المرتبطة والتصفح من الجذر. إذا كنت لا تريد منح هذا الإذن، يمكنك اختيار خيارات "اختبار الاتصال بمسار الملف" أو "التصفح من المسار المحدد" من واجهة المستخدم.

للحصول على القائمة الكاملة لأدوار Google Cloud Storage والأذونات المرتبطة بها، راجع أدوار IAM للتخزين السحابي على موقع Google Cloud.

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

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

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

استخدم الخطوات التالية لإنشاء خدمة مرتبطة بـ Google Cloud Storage في واجهة مستخدم مدخل Microsoft Azure.

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

  2. ابحث عن Google وحدد موصل Google Cloud Storage (S3 API).

    حدد موصل Google Cloud Storage (S3 API).

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

    تكوين خدمة مرتبطة بـ Google Cloud Storage.

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

توفر الأقسام التالية تفاصيل حول الخصائص المستخدمة لتحديد كيانات Data Factory الخاصة بـ Google Cloud Storage.

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

الخصائص التالية مدعومة للخدمات المرتبطة بـ Google Cloud Storage:

الخاصية الوصف مطلوب
النوع يجب تعيين الخاصية type على GoogleCloudStorage. ‏‏نعم‬
accessKeyId معرف مفتاح الوصول السري. للعثور على مفتاح الوصول والسر، راجع المتطلبات الأساسية. ‏‏نعم‬
secretAccessKey مفتاح الدخول السري نفسه. ضع علامة على هذا الحقل كـ SecureString لتخزينها بأمان، أو راجع السر المُخزن في Azure Key Vault. ‏‏نعم‬
serviceUrl حدد نقطة نهاية GCS المخصصة كـ https://storage.googleapis.com. ‏‏نعم‬
connectVia يُستخدم وقت تشغيل التكامل للاتصال بمخزن البيانات. يمكنك استخدام وقت تشغيل تكامل Azure أو وقت تشغيل التكامل المستضاف ذاتياً (إذا كان مخزن البيانات الخاص بك في شبكة خاصة). إذا لم يتم تحديد هذه الخاصية، فإن الخدمة تستخدم وقت تشغيل تكامل Azure الافتراضي. لا

إليك مثال:

{
    "name": "GoogleCloudStorageLinkedService",
    "properties": {
        "type": "GoogleCloudStorage",
        "typeProperties": {
            "accessKeyId": "<access key id>",
            "secretAccessKey": {
                "type": "SecureString",
                "value": "<secret access key>"
            },
            "serviceUrl": "https://storage.googleapis.com"
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

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

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

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

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

مثال:

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

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

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

Google Cloud Storage كنوع مصدر

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

الخصائص التالية مدعومة لـ Google Cloud Storage ضمن إعدادات storeSettings في مصدر نسخة قائم على التنسيق:

الخاصية الوصف مطلوب
النوع يجب تعيين الخاصية type ضمن storeSettings إلى GoogleCloudStorageReadSettings. ‏‏نعم‬
حدد موقع الملفات المراد نسخها:
الخيار 1: مسار ثابت
انسخ من مسار الحاوية أو المجلد / الملف المحدد في مجموعة البيانات. إذا كنت تريد نسخ جميع الملفات من مستودع أو مجلد، فحدد أيضاً wildcardFileName كـ *.
الخيار 2: بادئة GCS
- اختصار
بادئة لاسم مفتاح GCS ضمن الحاوية المحددة التي تم تكوينها في مجموعة البيانات لتصفية ملفات GCS المصدر. تم تحديد مفاتيح GCS التي تبدأ أسماؤها بـ bucket_in_dataset/this_prefix. إنه يستخدم عامل تصفية جانب الخدمة الخاص بـ GCS، والذي يوفر أداءً أفضل من عامل تصفية حرف البدل. لا
الخيار 3: wildcard
- wildcardFolderPath
مسار المجلد الذي يحتوي على أحرف بدل ضمن الحاوية المحددة المكونة في مجموعة بيانات لتصفية مجلدات المصدر.
أحرف البدل المسموح بها هي: * (تطابق صفراً أو أكثر من الأحرف) و? (تطابق صفر أو حرف واحد). استخدم ^ للإلغاء إذا كان اسم المجلد الخاص بك يحتوي على حرف بدل أو حرف إلغاء بداخله.
راجع المزيد من الأمثلة في أمثلة على تصفية الملفات والمجلدات.
لا
الخيار 3: wildcard
- wildcardFileName
اسم الملف مع أحرف البدل ضمن مسار الحاوية والمجلد المحدد (أو مسار مجلد حرف البدل) لتصفية الملفات المصدر.
أحرف البدل المسموح بها هي: * (تطابق صفراً أو أكثر من الأحرف) و? (تطابق صفر أو حرف واحد). استخدم ^ للإلغاء إذا كان اسم المجلد الخاص بك يحتوي على حرف بدل أو حرف الإلغاء هذا بداخله. راجع المزيد من الأمثلة في أمثلة على تصفية الملفات والمجلدات.
‏‏نعم‬
الخيار 3: قائمة الملفات
- fileListPath
يشير إلى نسخ مجموعة ملفات معينة. أشر إلى ملف نصي يتضمن قائمة بالملفات التي تريد نسخها، ملف واحد لكل سطر، وهو المسار النسبي للمسار الذي تم تكوينه في مجموعة البيانات.
عند استخدام هذا الخيار، لا تحدد اسم الملف في مجموعة البيانات. شاهد المزيد من الأمثلة في أمثلة قائمة الملفات.
لا
إعدادات إضافية:
التكرار يشير إلى ما إذا كانت البيانات ستتم قراءتها بشكل متكرر من المجلدات الفرعية أو من المجلد المحدد فقط. تجدر الإشارة إلى أنه عند ضبط recursive على true ويكون المتلقي مخزناً يستند إلى ملف، لا يتم نسخ أو إنشاء مجلد فارغ أو مجلد فرعي عند المتلقي.
القيم المسموح بها هي true (افتراضية) وfalse.
لا تنطبق هذه الخاصية عند تكوين fileListPath.
لا
deleteFilesAfterCompletion يشير إلى ما إذا كان سيتم حذف الملفات الثنائية من مخزن المصدر بعد الانتقال بنجاح إلى مخزن الوجهة. يتم حذف الملف لكل ملف، لذلك عند فشل نشاط النسخ، سترى أن بعض الملفات قد تم نسخها بالفعل إلى الوجهة وحذفها من المصدر، بينما لا يزال البعض الآخر في المخزن المصدر.
هذه الخاصية صالحة فقط في سيناريو نسخ الملفات الثنائية. القيمة الافتراضية: false.
لا
تاريخ البدء المعدل تتم تصفية الملفات استناداً إلى السمة: last modified.
سوف يتم تحديد الملفات إذا كان وقت آخر تعديل لها أكبر من أو يساوي modifiedDatetimeStart وأقل من modifiedDatetimeEnd. يتم تطبيق الوقت على المنطقة الزمنية UTC بتنسيق "2018-12-01T05:00:00Z".
يمكن أن تكون الخصائص NULL، ما يعني أنه لن يتم تطبيق عامل تصفية سمة الملف على مجموعة البيانات. عندما يكون لـ 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 الحد الأعلى للاتصالات المتزامنة التي تم إنشاؤها إلى مخزن البيانات أثناء تشغيل النشاط. حدد قيمة فقط عندما تريد تحديد الاتصالات المتزامنة. لا

مثال:

"activities":[
    {
        "name": "CopyFromGoogleCloudStorage",
        "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": "GoogleCloudStorageReadSettings",
                    "recursive": true,
                    "wildcardFolderPath": "myfolder*A",
                    "wildcardFileName": "*.csv"
                }
            },
            "sink": {
                "type": "<sink type>"
            }
        }
    }
]

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

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

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

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

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

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

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

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

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

تعيين خصائص تدفق البيانات

عند تحويل البيانات في تعيين تدفقات البيانات، يمكنك قراءة الملفات من Google Cloud Storage بالتنسيقات التالية:

توجد إعدادات تنسيق معينة في وثائق هذا التنسيق. للحصول على مزيدٍ من المعلومات، راجع تحويل المصدر في تعيين تدفق البيانات.

تحويل المصدر

في تحويل المصدر، يمكنك القراءة من حاوية أو مجلد أو ملف فردي في Google Cloud Storage. استخدم علامة التبويب خيارات المصدر لإدارة كيفية قراءة الملفات.

لقطة شاشة لخيارات Source.

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

من حاوية المصدر، اختر سلسلة من الملفات التي تطابق نمطاً. يمكن تحديد حاوية فقط في مجموعة البيانات. ويجب أن يتضمن مسار البدل مسار المجلد من المجلد الجذر.

أمثلة البدل:

  • * يمثل أي مجموعة من الأحرف.

  • ** يمثل تداخل الدليل المتكرر.

  • ? يستبدل حرف واحد.

  • [] يطابق حرف واحد أو أكثر في الأقواس.

  • /data/sales/**/*.csv يحصل على جميع ملفات .csv ضمن /data/sales.

  • /data/sales/20??/**/ يحصل على جميع الملفات في القرن العشرين.

  • /data/sales/*/*/*.csv يحصل على ملفات .csv في مستويين ضمن /data/sales.

  • /data/sales/2004/*/12/[XY]1?.csv يحصل على جميع ملفات .csv في ديسمبر 2004 بدءاً من X أو Y مسبوقة بعدد مكون من رقمين.

مسار جذر القسم: إذا كان لديك مجلدات مقسمة في مصدر الملف الخاص بك بتنسيق key=value (على سبيل المثال، year=2019)، يمكنك حينئذٍ تعيين المستوى الأعلى لشجرة مجلد القسم هذا إلى اسم عمود في تدفق البيانات في تدفق البيانات الخاصة بك.

أولاً، قم بتعيين حرف بدل لتضمين جميع المسارات التي هي المجلدات المقسمة بالإضافة إلى ملفات العقدة الطرفية التي تريد قراءتها.

لقطة شاشة لإعدادات ملف مصدر القسم.

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

لقطة شاشة لمسار جذر القسم.

قائمة الملفات: عبارة عن مجموعة ملفات. أنشئ ملف نصي يتضمن قائمة ملفات المسار النسبي لمعالجتها. أشر إلى هذا الملف النصي.

عمود لتخزين اسم الملف: خزّن اسم الملف المصدر في عمود في بياناتك. أدخِل اسم عمود جديد هنا لتخزين سلسلة اسم الملف.

بعد الانتهاء: اختر عدم إجراء أي عملية مع الملف المصدر بعد تشغيل تدفق البيانات أو حذف الملف المصدر أو نقل الملف المصدر. المسارات الخاصة بهذه الخطوة نسبية.

لنقل الملفات المصدر إلى موقع آخر بعد المعالجة، حدد أولاً "Move" لعملية الملف. ثم اضبط الدليل "from". إذا كنت لا تستخدم أي أحرف بدل للمسار، فسيكون الإعداد "from" هو نفس المجلد الذي يستخدمه المجلد المصدر.

إذا كان لديك مسار مصدر مع حرف البدل، ستبدو الصياغة كما يلي:

/data/sales/20??/**/*.csv

يمكنك تحديد "from" على النحو التالي:

/data/sales

ويمكنك تحديد "to" على النحو:

/backup/priorSales

في هذه الحالة، يتم نقل جميع الملفات التي تم الحصول عليها ضمن /data/sales إلى /backup/priorSales.

إشعار

لا تستخدم تشغيل عمليات الملف إلا عندما تبدأ تدفق البيانات من تشغيل خط الأنابيب (تتبع أخطاء خط الأنابيب أو تشغيل التنفيذ)، والذي يستخدم نشاط تنفيذ تدفق البيانات في خط الأنابيب. لا يتم تشغيل عمليات الملفات في وضع تتبع أخطاء تدفق البيانات.

التصفية حسب آخر تعديل: يمكنك تصفية الملفات التي تعالجها عن طريق تحديد نطاق تاريخ آخر تعديل لها. جميع أوقات التواريخ بصيغة UTC.

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

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

خصائص نشاط GetMetadata

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

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

لمعرفة تفاصيل حول الخصائص، حدد Delete activity.

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

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

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