نسخ البيانات وتحويلها في Snowflake V2 باستخدام Azure Data Factory أو Azure Synapse Analytics
ينطبق على: Azure Data Factory
Azure Synapse Analytics
تلميح
جرب Data Factory في Microsoft Fabric، وهو حل تحليلي متكامل للمؤسسات. يغطي Microsoft Fabric كل شيء بدءا من حركة البيانات إلى علم البيانات والتحليلات في الوقت الحقيقي والمعلومات المهنية وإعداد التقارير. تعرف على كيفية بدء إصدار تجريبي جديد مجانا!
توضح هذه المقالة كيفية استخدام نشاط النسخ في Azure Data Factory ومسارات Azure Synapse لنسخ البيانات من وإلى Snowflake واستخدام تدفق البيانات لتحويل البيانات في Snowflake. للتعرف على المزيد، اقرأ المقالة التمهيدية عن Data Factory أو Azure Synapse Analytics.
هام
يوفر موصل Snowflake V2 دعما محسنا ل Snowflake الأصلي. إذا كنت تستخدم موصل Snowflake V1 في الحل الخاص بك، فمن المستحسن ترقية موصل Snowflake الخاص بك في أقرب وقت ممكن. راجع هذا القسم للحصول على تفاصيل حول الفرق بين V2 وV1.
القدرات المدعومة
يتم دعم موصل Snowflake هذا للإمكانات التالية:
القدرات المدعومة | IR |
---|---|
Copy activity (المصدر/المتلق) | (1) (2) |
تعيين تدفق البيانات (المصدر/ المتلقي) | (1) |
نشاط البحث | (1) (2) |
نشاط البرنامج النصي | (1) (2) |
① وقت تشغيل تكامل Azure ② وقت تشغيل التكامل المستضاف ذاتيًا
للنشاط نسخ، هذا الموصل Snowflake يدعم الوظائف التالية:
- انسخ البيانات من Snowflake التي تستخدم الأمر COPY الخاص بـ Snowflake إلى [الموقع] لتحقيق أفضل أداء.
- انسخ البيانات إلى Snowflake التي تستفيد من أمر COPY الخاص بـ Snowflake في [جدول] لتحقيق أفضل أداء. وهو يدعم Snowflake على Azure.
- إذا كان الوكيل مطلوباً للاتصال بـ Snowflake من وقت تشغيل التكامل المستضاف ذاتياً، فيجب عليك تكوين متغيرات البيئة لـ HTTP_PROXY وHTTPS_PROXY على مضيف وقت تشغيل التكامل.
المتطلبات الأساسية
إذا كان مخزن البيانات الخاص بك موجوداً داخل شبكة محلية، أو شبكة Azure ظاهرية، أو Amazon Virtual Private Cloud، فأنت بحاجة إلى تكوين وقت تشغيل تكامل مستضاف ذاتياً للاتصال به. تأكد من إضافة عناوين IP التي يقوم باستخدامها وقت تشغيل التكامل المستضاف ذاتيًا إلى القائمة المسموح بها.
إذا كان مخزن البيانات الخاص بك عبارة عن خدمة بيانات سحابية مُدارة، يمكنك استخدام Azure Integration Runtime. إذا كان الوصول مقيدًا بعناوين IP التي تمت الموافقة عليها في قواعد جدار الحماية، يمكنك إضافة Azure Integration Runtime IPs إلى القائمة المسموح بها.
يجب أن يكون لحساب Snowflake المستخدم للمصدر أو المتلقي حق الوصول الضروري USAGE
على قاعدة البيانات والوصول للقراءة/الكتابة على المخطط والجداول/طرق العرض الموجودة ضمنه. بالإضافة إلى ذلك، يجبCREATE STAGE
أن يكون أيضًا على المخطط لتتمكن من إنشاء المرحلة الخارجية باستخدام SAS URI.
يجب أن تقوم بتعيين قيم خصائص الحساب التالية
الخاصية | الوصف | مطلوبة | افتراضي |
---|---|---|---|
REQUIRE_STORAGE_INTEGRATION_FOR_STAGE_CREATION | يتم تحديد ما إذا كان يلزم طلب كائن تكامل التخزين كمؤهلات اعتماد سحابية عند إنشاء مرحلة خارجية مسماة (باستخدام CREATE STAGE) للوصول إلى موقع تخزين سحابي خاص. | خطأ | خطأ |
REQUIRE_STORAGE_INTEGRATION_FOR_STAGE_OPERATION | يتم تحديد ما إذا كنت تريد استخدام مرحلة خارجية مسماة تشير إلى كائن تكامل التخزين على أنها بيانات اعتماد سحابية عند تحميل البيانات من أو إلغاء تحميل البيانات إلى موقع تخزين سحابي خاص. | خطأ | خطأ |
لمزيد من المعلومات حول آليات وخيارات أمان الشبكة التي يدعمها Data Factory، راجع إستراتيجيات الوصول إلى البيانات.
الشروع في العمل
لتنفيذ نشاط النسخ باستخدام أحد المسارات، يمكنك استخدام إحدى الأدوات أو عدد تطوير البرامج التالية:
- أداة نسخ البيانات
- مدخل Azure
- The .NET SDK
- عدة تطوير برامج Python
- Azure PowerShell
- واجهة برمجة تطبيقات REST
- قالب Azure Resource Manager
إنشاء خدمة مرتبطة بـ Snowflake باستخدام واجهة المستخدم
استخدم الخطوات التالية لإنشاء خدمة مرتبطة إلى Snowflake في واجهة مستخدم مدخل Microsoft Azure.
استعرض للوصول إلى علامة التبويب "Manage" في مصنع بيانات Azure أو مساحة عمل Synapse، وحدد "Linked Services"، ثم انقر فوق "New":
البحث عن Snowflake وتحديد موصل Snowflake.
قم بتكوين تفاصيل الخدمة، واختبر الاتصال، وأنشئ الخدمة المرتبطة الجديدة.
تفاصيل تكوين الموصل
توفر المقاطع التالية تفاصيل حول الخصائص التي تعرف الكيانات الخاصة بموصل Snowflake.
خصائص الخدمة المرتبطة
يتم دعم هذه الخصائص العامة لخدمة Snowflake المرتبطة:
الخاصية | الوصف | مطلوب |
---|---|---|
النوع | يجب تعيين خاصية النوع إلى SnowflakeV2. | نعم |
معرف الحساب | اسم الحساب مع مؤسسته. على سبيل المثال، myorg-account123. | نعم |
قاعدة بيانات | قاعدة البيانات الافتراضية المستخدمة لجلسة العمل بعد الاتصال. | نعم |
مستودع | المستودع الظاهري الافتراضي المستخدم لجلسة العمل بعد الاتصال. | نعم |
نوع المصادقة | نوع المصادقة المستخدمة للاتصال بخدمة Snowflake. القيم المسموح بها هي: أساسي (افتراضي) وKeyPair. راجع الأقسام المقابلة أدناه حول المزيد من الخصائص والأمثلة على التوالي. | لا |
الدور | دور الأمان الافتراضي المستخدم لجلسة العمل بعد الاتصال. | لا |
مضيف | اسم المضيف لحساب Snowflake. على سبيل المثال: contoso.snowflakecomputing.com .
.cn مدعوم أيضا. |
لا |
connectVia | يُستخدم وقت تشغيل التكامل للاتصال بمخزن البيانات. يمكنك استخدام Azure Integration Runtime أو وقت تشغيل التكامل المستضاف ذاتياً (إذا كان مخزن بياناتك في شبكة اتصال خاصة). إذا لم يكن محدداً، فإنه يستخدم وقت تشغيل تكامل Azure الافتراضي. | لا |
يدعم موصل Snowflake هذا أنواع المصادقة التالية. راجع الأقسام المقابلة للاطلاع على التفاصيل.
المصادقة الأساسية
لاستخدام المصادقة الأساسية ، بالإضافة إلى الخصائص العامة الموضحة في القسم السابق، حدد الخصائص التالية:
الخاصية | الوصف | مطلوب |
---|---|---|
المستخدم | اسم تسجيل الدخول لمستخدم Snowflake. | نعم |
كلمة المرور | كلمة المرور لمستخدم Snowflake. وضع علامة على هذا الحقل كنوع SecureString لتخزينه بشكل آمن. يمكنك أيضاً الإشارة إلى سر مخزن في Azure Key Vault. | نعم |
مثال:
{
"name": "SnowflakeV2LinkedService",
"properties": {
"type": "SnowflakeV2",
"typeProperties": {
"accountIdentifier": "<accountIdentifier>",
"database": "<database>",
"warehouse": "<warehouse>",
"authenticationType": "Basic",
"user": "<username>",
"password": {
"type": "SecureString",
"value": "<password>"
},
"role": "<role>"
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
كلمة المرور في Azure Key Vault:
{
"name": "SnowflakeV2LinkedService",
"properties": {
"type": "SnowflakeV2",
"typeProperties": {
"accountIdentifier": "<accountIdentifier>",
"database": "<database>",
"warehouse": "<warehouse>",
"authenticationType": "Basic",
"user": "<username>",
"password": {
"type": "AzureKeyVaultSecret",
"store": {
"referenceName": "<Azure Key Vault linked service name>",
"type": "LinkedServiceReference"
},
"secretName": "<secretName>"
}
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
إشعار
يدعم تعيين تدفقات البيانات المصادقة الأساسية فقط.
مصادقة زوج المفاتيح
لاستخدام مصادقة زوج المفاتيح، تحتاج إلى تكوين وإنشاء مستخدم مصادقة زوج مفاتيح في Snowflake بالإشارة إلى مصادقة زوج المفاتيح وتدارة زوج المفاتيح. بعد ذلك، دون ملاحظة عن المفتاح الخاص وعبارة المرور (اختياري)، التي تستخدمها لتعريف الخدمة المرتبطة.
بالإضافة إلى الخصائص العامة الموصوفة في القسم السابق، حدد الخصائص التالية:
الخاصية | الوصف | مطلوب |
---|---|---|
المستخدم | اسم تسجيل الدخول لمستخدم Snowflake. | نعم |
privateKey | المفتاح الخاص المستخدم لمصادقة زوج المفاتيح. للتأكد من أن المفتاح الخاص صالح عند إرساله إلى Azure Data Factory، ومع الأخذ في الاعتبار أن ملف privateKey يتضمن أحرفا جديدة (\n)، من الضروري تنسيق محتوى privateKey بشكل صحيح في نموذج السلسلة الحرفي الخاص به. تتضمن هذه العملية إضافة \n بشكل صريح إلى كل سطر جديد. |
نعم |
مفتاح خاص | عبارة المرور المستخدمة لفك تشفير المفتاح الخاص، إذا كان مشفرا. | لا |
مثال:
{
"name": "SnowflakeV2LinkedService",
"properties": {
"type": "SnowflakeV2",
"typeProperties": {
"accountIdentifier": "<accountIdentifier>",
"database": "<database>",
"warehouse": "<warehouse>",
"authenticationType": "KeyPair",
"user": "<username>",
"privateKey": {
"type": "SecureString",
"value": "<privateKey>"
},
"privateKeyPassphrase": {
"type": "SecureString",
"value": "<privateKeyPassphrase>"
},
"role": "<role>"
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
خصائص مجموعة البيانات
للحصول على قائمة كاملة بالأقسام والخصائص المتوفرة لتعريف مجموعات البيانات، راجع مقالة مجموعات البيانات.
يتم اعتماد الخصائص التالية لمجموعة بيانات Snowflake.
الخاصية | الوصف | مطلوب |
---|---|---|
النوع | يجب تعيين خاصية نوع مجموعة البيانات إلى SnowflakeV2Table. | نعم |
Schema | اسم المخطط. ملاحظة: اسم المخطط حساسة لحالة الأحرف. | لا للمصدر، نعم للمتلقي |
طاولتنا | اسم الجدول/طريقة العرض. لاحظ أن اسم الجدول حساس لحالة الأحرف. | لا للمصدر، نعم للمتلقي |
مثال:
{
"name": "SnowflakeV2Dataset",
"properties": {
"type": "SnowflakeV2Table",
"typeProperties": {
"schema": "<Schema name for your Snowflake database>",
"table": "<Table name for your Snowflake database>"
},
"schema": [ < physical schema, optional, retrievable during authoring > ],
"linkedServiceName": {
"referenceName": "<name of linked service>",
"type": "LinkedServiceReference"
}
}
}
انسخ خصائص النشاط
للحصول على قائمة كاملة بالأقسام والخصائص المتوفرة لتعريف الأنشطة، راجع مقالة التدفقات. يوفر هذا القسم قائمة بالخصائص التي يدعمها مصدر Snowflake والمتلقي.
Snowflake كمصدر
يستخدم موصل Snowflake الأمر COPY في [الموقع] الخاص ب Snowflake لتحقيق أفضل أداء.
إذا كان تخزين بيانات المتلقي وتنسيقه مدعومين أصلاً بواسطة أمر Snowflake COPY، فيمكنك استخدام نشاط النسخ للنسخ مباشرةً من Snowflake إلى المتلقي. لمزيد من التفاصيل، راجع نسخة مباشرة من Snowflake. خلاف ذلك، استخدم نسخة مرحلية مدمجة من Snowflake.
لنسخ البيانات من Snowflake تُدعم الخصائص التالية في قسم مصدر نشاط النسخ.
الخاصية | الوصف | مطلوب |
---|---|---|
النوع | يجب تعيين خاصية نوع مصدر نشاط النسخ إلى SnowflakeV2Source. | نعم |
استعلام | تحديد الاستعلام SQL لقراءة البيانات من Snowflake. إذا كانت أسماء المخطط والجدول والأعمدة تحتوي على أحرف صغيرة، فاقتبس معرّف العنصر في الاستعلام، على سبيل المثال select * from "schema"."myTable" .تنفيذ الإجراء المخزن غير مدعوم. |
لا |
exportSettings | إعدادات متقدمة تستخدم لاسترداد البيانات من Snowflake. يمكنك تكوين تلك المدعومة من قبل COPY في الأمر الذي ستمر به الخدمة عند استدعاء الكشف. | نعم |
تحت exportSettings : |
||
النوع | نوع أمر التصدير، تعيين إلى SnowflakeExportCopyCommand. | نعم |
دمج التخزين | حدد اسم تكامل التخزين الذي أنشأته في Snowflake. للحصول على الخطوات الأساسية لاستخدام تكامل التخزين، راجع تكوين تكامل تخزين Snowflake. | لا |
additionalCopyOptions | خيارات نسخ إضافية، مقدمة كقاموس لأزواج قيم المفاتيح. أمثلة: MAX_FILE_SIZE، OVERWRITE. لمزيد من المعلومات، راجع خيارات نسخ Snowflake. | لا |
additionalFormatOptions | خيارات إضافية لتنسيق ملف يتم توفيرها إلى الأمر COPY كقاموس أزواج قيم المفاتيح. أمثلة: DATE_FORMAT، TIME_FORMAT، TIMESTAMP_FORMAT، NULL_IF. لمزيد من المعلومات، راجع خيارات نوع تنسيق Snowflake. عند استخدام NULL_IF، يتم تحويل القيمة NULL في Snowflake إلى القيمة المحددة (التي يجب أن تكون مفردة الاقتباس) عند الكتابة إلى الملف النصي المحدد في التخزين المرحلي. يتم التعامل مع هذه القيمة المحددة على أنها NULL عند القراءة من ملف التقسيم المرحلي إلى تخزين المتلقي. القيمة الافتراضية هي 'NULL' . |
لا |
إشعار
تأكد من أن لديك الإذن لتنفيذ الأمر التالي والوصول إلى المخطط INFORMATION_SCHEMA و أعمدة الجدول.
COPY INTO <location>
نسخة مباشرة من Snowflake
إذا كان مخزن البيانات المتلقي والتنسيق يفيان بالمعايير الموضحة في هذا القسم، يمكنك استخدام نشاط النسخ للنسخ المباشر من Snowflake إلى المتلقي. تتحقق الخدمة من الإعدادات وتفشل في تشغيل نشاط النسخ إذا لم يتم استيفاء المعايير التالية:
عند تحديد
storageIntegration
في المصدر:مخزن بيانات المتلقي هو Azure Blob Storage الذي أشرت إليه في المرحلة الخارجية في Snowflake. تحتاج إلى إكمال الخطوات التالية قبل نسخ البيانات:
إنشاء خدمة مرتبطة ب Azure Blob Storage لتخزين Azure Blob المتلقي مع أي أنواع مصادقة مدعومة.
امنح دور Storage Blob Data Contributor على الأقل إلى كيان خدمة Snowflake في المتلقي Azure Blob Storage Access Control (IAM) .
عندما لا تحدد
storageIntegration
في المصدر:الخدمة المرتبطة بالمتلقي هي تخزين كائن ثنائي كبير الحجم من Azure مع مصادقة توقيع الوصول المشترك. إذا كنت ترغب في نسخ البيانات مباشرة إلى Azure Data Lake Storage Gen2 بالتنسيق المدعوم التالي، يمكنك إنشاء خدمة مرتبطة ب Azure Blob Storage باستخدام مصادقة SAS مقابل حساب Azure Data Lake Storage Gen2، لتجنب استخدام نسخة مرحلية من Snowflake.
تنسيق بيانات المتلقي هو Parquet أو نص محدد أو JSON بالتكوينات التالية:
- لتنسيق Parquet يكون برنامج ضغط الوسائط وفكها None، Snappy، أو Lzo.
- لتنسيق النص المحدد:
-
rowDelimiter
هو \r\n، أو أي حرف واحد. -
compression
يمكن أن يكون دون ضغط، gzip، bzip2، أو مضغوط. - يُترك
encodingName
كإعداد افتراضي أو يتم التعيين إلى utf-8. -
quoteChar
هو عرض أسعار مزدوج، عرض أسعار واحد، أو سلسلة فارغة (دون علامة اقتباس أحرف).
-
- لتنسيق JSON، النسخة المباشرة تدعم الحالة التي يكون فيها جدول Snowflake للمصدر أو نتيجة الاستعلام فقط عمود واحد ونوع بيانات هذا العمود هو VARIANT أو OBJECT أو ARRAY.
-
compression
يمكن أن يكون دون ضغط، gzip، bzip2، أو مضغوط. - يُترك
encodingName
كإعداد افتراضي أو يتم التعيين إلى utf-8. -
filePattern
في مصدر نشاط النسخ يتم ترك المتلقي كإعداد افتراضي أو التعيين على setOfObjects.
-
في مصدر نشاط النسخ،
additionalColumns
غير محدد.لم يتم تحديد تعيين العمود.
مثال:
"activities":[
{
"name": "CopyFromSnowflake",
"type": "Copy",
"inputs": [
{
"referenceName": "<Snowflake input dataset name>",
"type": "DatasetReference"
}
],
"outputs": [
{
"referenceName": "<output dataset name>",
"type": "DatasetReference"
}
],
"typeProperties": {
"source": {
"type": "SnowflakeV2Source",
"query": "SELECT * FROM MYTABLE",
"exportSettings": {
"type": "SnowflakeExportCopyCommand",
"additionalCopyOptions": {
"MAX_FILE_SIZE": "64000000",
"OVERWRITE": true
},
"additionalFormatOptions": {
"DATE_FORMAT": "'MM/DD/YYYY'"
},
"storageIntegration": "< Snowflake storage integration name >"
}
},
"sink": {
"type": "<sink type>"
}
}
}
]
نسخة مرحلية من Snowflake
عندما لا يكون مخزن بيانات المتلقي أو تنسيقه متوافقا أصلا مع الأمر Snowflake COPY، كما هو مذكور في القسم الأخير، قم بتمكين النسخة المرحلية المضمنة باستخدام مثيل تخزين Azure Blob مؤقت. كما توفر لك ميزة النسخ المرحلي معدل نقل أفضل. تصدر الخدمة البيانات من Snowflake إلى التخزين المرحلي، ثم تنسخ البيانات للمتلقي، وأخيراً تنظف بياناتك المؤقتة من التخزين المرحلي. راجع نسخة مرحلية للحصول على تفاصيل حول نسخ البيانات باستخدام التقسيم المرحلي.
لاستخدام هذه الميزة، قم بإنشاء خدمة تخزين Azure Blob المرتبطة التي تشير إلى حساب تخزين Azure كالتقسيم المرحلي المؤقت. ثم حدد enableStaging
وstagingSettings
الخصائص في نشاط النسخ.
عند تحديد
storageIntegration
في المصدر، يجب أن يكون Azure Blob Storage المرحلي المؤقت هو الذي أشرت إليه في المرحلة الخارجية في Snowflake. تأكد من إنشاء خدمة مرتبطة ب Azure Blob Storage لها مع أي مصادقة مدعومة، ومنح دور Storage Blob Data Contributor على الأقل إلى كيان خدمة Snowflake في التحكم في الوصول إلى تخزين Azure Blob المرحلي (IAM).عندما لا تحدد
storageIntegration
في المصدر، يجب أن تستخدم الخدمة المرتبطة بتخزين Azure Blob المرحلي مصادقة توقيع الوصول المشترك، كما هو مطلوب من قبل الأمر Snowflake COPY. تأكد من منح إذن الوصول المناسب إلى Snowflake في Azure Blob Storage المرحلي. لمعرفة المزيد حول هذا الموضوع، راجع هذه المقالة.
مثال:
"activities":[
{
"name": "CopyFromSnowflake",
"type": "Copy",
"inputs": [
{
"referenceName": "<Snowflake input dataset name>",
"type": "DatasetReference"
}
],
"outputs": [
{
"referenceName": "<output dataset name>",
"type": "DatasetReference"
}
],
"typeProperties": {
"source": {
"type": "SnowflakeV2Source",
"query": "SELECT * FROM MyTable",
"exportSettings": {
"type": "SnowflakeExportCopyCommand",
"storageIntegration": "< Snowflake storage integration name >"
}
},
"sink": {
"type": "<sink type>"
},
"enableStaging": true,
"stagingSettings": {
"linkedServiceName": {
"referenceName": "MyStagingBlob",
"type": "LinkedServiceReference"
},
"path": "mystagingpath"
}
}
}
]
عند إجراء نسخة مرحلية من Snowflake، من الضروري تعيين سلوك نسخ المتلقي إلى دمج الملفات. يضمن هذا الإعداد معالجة جميع الملفات المقسمة ودمجها بشكل صحيح، مما يمنع المشكلة حيث يتم نسخ الملف المقسم الأخير فقط.
مثال على التكوين
{
"type": "Copy",
"source": {
"type": "SnowflakeSource",
"query": "SELECT * FROM my_table"
},
"sink": {
"type": "AzureBlobStorage",
"copyBehavior": "MergeFiles"
}
}
إشعار
قد يؤدي الفشل في تعيين "سلوك نسخ المتلقي" إلى "دمج الملفات " إلى نسخ آخر ملف مقسم فقط.
Snowflake كمتلقي
يستخدم موصل Snowflake الأمر COPY في [الجدول] الخاص بـ Snowflake لتحقيق أفضل أداء. وهو يدعم كتابة البيانات في Snowflake على Azure.
إذا كان تخزين بيانات المصدر وتنسيقه مدعومين أصلاً بواسطة أمر Snowflake COPY، فيمكنك استخدام نشاط النسخ للنسخ مباشرةً من المصدر إلى Snowflake. لمزيد من التفاصيل، راجع نسخة مباشرة إلى Snowflake. خلاف ذلك، استخدم نسخة مرحلية مدمجة إلى Snowflake.
لنسخ البيانات من Snowflake، يتم دعم الخصائص التالية في قسم متلقي نشاط النسخ.
الخاصية | الوصف | مطلوب |
---|---|---|
النوع | خاصية نوع متلقي نشاط النسخ، عين على SnowflakeV2Sink. | نعم |
preCopyScript | حدد استعلام SQL لنشاط النسخ للتشغيل قبل كتابة البيانات في Snowflake عند كل تشغيل. استخدم هذه الخاصية لتنظيف البيانات المحملة في الخلفية. | لا |
importSettings | إعدادات متقدمة تستخدم لكتابة البيانات في Snowflake. يمكنك تكوين تلك المدعومة من قبل COPY في الأمر الذي ستمر به الخدمة عند استدعاء الكشف. | نعم |
تحت importSettings : |
||
النوع | نوع أمر الاستيراد، تعيين إلى SnowflakeImportCopyCommand. | نعم |
دمج التخزين | حدد اسم تكامل التخزين الذي أنشأته في Snowflake. للحصول على الخطوات الأساسية لاستخدام تكامل التخزين، راجع تكوين تكامل تخزين Snowflake. | لا |
additionalCopyOptions | خيارات نسخ إضافية، مقدمة كقاموس لأزواج قيم المفاتيح. أمثلة: ON_ERROR، FORCE، LOAD_UNCERTAIN_FILES. لمزيد من المعلومات، راجع خيارات نسخ Snowflake. | لا |
additionalFormatOptions | خيارات تنسيق ملف إضافية تم توفيرها للأمر نسخ، المقدمة كقاموس أزواج قيم المفاتيح. أمثلة: DATE_FORMAT، TIME_FORMAT، TIMESTAMP_FORMAT. لمزيد من المعلومات، راجع خيارات نوع تنسيق Snowflake. | لا |
إشعار
تأكد من أن لديك الإذن لتنفيذ الأمر التالي والوصول إلى المخطط INFORMATION_SCHEMA و أعمدة الجدول.
SELECT CURRENT_REGION()
COPY INTO <table>
SHOW REGIONS
CREATE OR REPLACE STAGE
DROP STAGE
نسخة مباشرة إلى Snowflake
إذا كان مخزن البيانات المصدر والتنسيق يفيان بالمعايير الموضحة في هذا القسم، يمكنك استخدام نشاط النسخ للنسخ المباشر من المصدر إلى Snowflake. تتحقق الخدمة من الإعدادات وتفشل في تشغيل نشاط النسخ إذا لم يتم استيفاء المعايير التالية:
عند تحديد
storageIntegration
في المتلقي:مخزن البيانات المصدر هو Azure Blob Storage الذي أشرت إليه في المرحلة الخارجية في Snowflake. تحتاج إلى إكمال الخطوات التالية قبل نسخ البيانات:
إنشاء خدمة مرتبطة ب Azure Blob Storage لمصدر Azure Blob Storage مع أي أنواع مصادقة مدعومة.
امنح دور Storage Blob Data Reader على الأقل إلى كيان خدمة Snowflake في مصدر التحكم في الوصول إلى تخزين Azure Blob (IAM).
عندما لا تحدد
storageIntegration
في المتلقي:الخدمة المرتبطة بالمصدر هي تخزين كائن ثنائي كبير الحجم من Azure مع مصادقة توقيع الوصول المشترك. إذا كنت ترغب في نسخ البيانات مباشرة من Azure Data Lake Storage Gen2 بالتنسيق المدعوم التالي، يمكنك إنشاء خدمة مرتبطة ب Azure Blob Storage باستخدام مصادقة SAS مقابل حساب Azure Data Lake Storage Gen2، لتجنب استخدام نسخة مرحلية إلى Snowflake.
تنسيق بيانات المصدر هو Parquet أو نص محدد أو JSON بالتكوينات التالية:
لتنسيق Parquet يكون برنامج ضغط الوسائط وفكها None، أو Snappy.
لتنسيق delimited text:
-
rowDelimiter
هو \r\n، أو أي حرف واحد. إذا لم يكن محدد الصف "\r\n"،firstRowAsHeader
فيجب أن يكون خاطئاskipLineCount
، ولم يتم تحديده. -
compression
يمكن أن يكون دون ضغط، gzip، bzip2، أو مضغوط. -
encodingName
هو ترك الافتراضي أو تعيين إلى "UTF-8"، "UTF-16"، "UTF-16BE"، "UTF-32"، "UTF-32BE"، "BIG5"، "EUC-JP"، "EUC-KR"، "GB18030"، "ISO-2022-JP"، "ISO-2022-KR"، "ISO-8859-1"، "ISO-8859-2"، "ISO-8859-5"، "ISO-8859-6"، "ISO-8859-7"، "ISO-8859-8"، "ISO-8 8859-9"، "ويندوز - 1250"، "ويندوز - 1251"، "ويندوز - 1252"، "ويندوز - 1253"، "ويندوز - 1254"، "ويندوز - 1255". -
quoteChar
هو عرض أسعار مزدوج، عرض أسعار واحد، أو سلسلة فارغة (دون علامة اقتباس أحرف).
-
لتنسيق JSON، النسخة المباشرة تدعم الحالة التي يكون فيها جدول Snowflake للمتلقي فقط عمود واحد ونوع بيانات هذا العمود هو VARIANT أو OBJECT أو ARRAY.
-
compression
يمكن أن يكون دون ضغط، gzip، bzip2، أو مضغوط. - يُترك
encodingName
كإعداد افتراضي أو يتم التعيين إلى utf-8. - لم يتم تحديد تعيين العمود.
-
في مصدر نشاط النسخ:
-
additionalColumns
غير محدد. - إذا كان المصدر مجلداً، يتم تعيين
recursive
إلى صحيح. -
prefix
modifiedDateTimeStart
modifiedDateTimeEnd
لم يتم تحديد و وenablePartitionDiscovery
.
-
مثال:
"activities":[
{
"name": "CopyToSnowflake",
"type": "Copy",
"inputs": [
{
"referenceName": "<input dataset name>",
"type": "DatasetReference"
}
],
"outputs": [
{
"referenceName": "<Snowflake output dataset name>",
"type": "DatasetReference"
}
],
"typeProperties": {
"source": {
"type": "<source type>"
},
"sink": {
"type": "SnowflakeV2Sink",
"importSettings": {
"type": "SnowflakeImportCopyCommand",
"copyOptions": {
"FORCE": "TRUE",
"ON_ERROR": "SKIP_FILE"
},
"fileFormatOptions": {
"DATE_FORMAT": "YYYY-MM-DD"
},
"storageIntegration": "< Snowflake storage integration name >"
}
}
}
}
]
نسخة مرحلية لـ Snowflake
عندما لا يكون مخزن بيانات المصدر أو تنسيقه متوافقا أصلا مع الأمر Snowflake COPY، كما هو مذكور في القسم الأخير، قم بتمكين النسخة المرحلية المضمنة باستخدام مثيل تخزين Azure Blob مؤقت. كما توفر لك ميزة النسخ المرحلي معدل نقل أفضل. تقوم الخدمة تلقائياً بتحويل البيانات لتلبية متطلبات تنسيق البيانات في Snowflake. ثم استدعاء الأمر COPY لتحميل البيانات في Snowflake. وأخيراً، فإنه ينظف البيانات المؤقتة الخاصة بك من تخزين الكائن الثنائي كبير الحجم. راجع النسخ المرحلي للحصول على تفاصيل حول نسخ البيانات باستخدام التقسيم المرحلي.
لاستخدام هذه الميزة، قم بإنشاء خدمة تخزين Azure Blob المرتبطة التي تشير إلى حساب تخزين Azure كالتقسيم المرحلي المؤقت. ثم حدد enableStaging
وstagingSettings
الخصائص في نشاط النسخ.
عند تحديد
storageIntegration
في المتلقي، يجب أن يكون Azure Blob Storage المرحلي المؤقت هو الذي أشرت إليه في المرحلة الخارجية في Snowflake. تأكد من إنشاء خدمة مرتبطة ب Azure Blob Storage لها مع أي مصادقة مدعومة، ومنح دور Storage Blob Data Reader على الأقل إلى كيان خدمة Snowflake في التحكم في الوصول إلى تخزين Azure Blob المرحلي (IAM).عندما لا تحدد
storageIntegration
في المتلقي، تحتاج الخدمة المرتبطة بتخزين Azure Blob المرحلي إلى استخدام مصادقة توقيع الوصول المشترك كما هو مطلوب من قبل الأمر Snowflake COPY.
مثال:
"activities":[
{
"name": "CopyToSnowflake",
"type": "Copy",
"inputs": [
{
"referenceName": "<input dataset name>",
"type": "DatasetReference"
}
],
"outputs": [
{
"referenceName": "<Snowflake output dataset name>",
"type": "DatasetReference"
}
],
"typeProperties": {
"source": {
"type": "<source type>"
},
"sink": {
"type": "SnowflakeV2Sink",
"importSettings": {
"type": "SnowflakeImportCopyCommand",
"storageIntegration": "< Snowflake storage integration name >"
}
},
"enableStaging": true,
"stagingSettings": {
"linkedServiceName": {
"referenceName": "MyStagingBlob",
"type": "LinkedServiceReference"
},
"path": "mystagingpath"
}
}
}
]
تعيين خصائص تدفق البيانات
عند تحويل البيانات في مخطط تدفق البيانات، يمكنك القراءة من الجداول والكتابة إليها في Snowflake. لمزيد من المعلومات، راجع تحويل المصدر و تحويل المتلقي في تعيين تدفقات البيانات. يمكنك اختيار استخدام مجموعة بيانات Snowflake أو مجموعة بيانات مضمنة كمصدر ونوع متلقي.
تحويل المصدر
يسرد الجدول أدناه الخصائص التي يدعمها مصدر Snowflake. يمكنك تحرير هذه الخصائص في علامة التبويب خيارات المصدر. يستخدم الموصل نقل البيانات الداخلية لـ Snowflake.
Name | الوصف | مطلوب | القيم المسموح بها | خاصية البرنامج النصي لتدفق البيانات |
---|---|---|---|---|
جدول | إذا قمت بتحديد الجدول كإدخال، فسيحضر تدفق البيانات جميع البيانات من الجدول المحدد في مجموعة بيانات Snowflake أو في خيارات المصدر عند استخدام مجموعة البيانات المضمنة. | لا | السلسلة |
(لمجموعة البيانات المضمنة فقط) اسم الجدول اسم المخطط |
الاستعلام | إذا قمت بتحديد الاستعلام كإدخال، أدخل استعلاما لإحضار البيانات من Snowflake. يمنع هذا الإعداد أي جدول اخترته في مجموعة البيانات. إذا كانت أسماء المخطط والجدول والأعمدة تحتوي على أحرف صغيرة، فاقتبس معرّف العنصر في الاستعلام، على سبيل المثال select * from "schema"."myTable" . |
لا | السلسلة | استعلام |
تمكين الاستخراج التزايدي (معاينة) | استخدم هذا الخيار لإخبار ADF بمعالجة الصفوف التي تغيرت منذ آخر مرة تم فيها تنفيذ البنية الأساسية لبرنامج ربط العمليات التجارية فقط. | لا | Boolean | enableCdc |
عمود تزايدي | عند استخدام ميزة الاستخراج التزايدي، يجب اختيار العمود التاريخ/الوقت/العدد الذي ترغب في استخدامه كعلامة مائية في الجدول المصدر. | لا | السلسلة | العلامة المائية |
تمكين تتبع تغيير Snowflake (معاينة) | يمكن هذا الخيار ADF من الاستفادة من تقنية التقاط بيانات تغيير Snowflake لمعالجة بيانات دلتا فقط منذ تنفيذ البنية الأساسية لبرنامج ربط العمليات التجارية السابق. يقوم هذا الخيار تلقائيا بتحميل بيانات دلتا مع عمليات إدراج الصف وتحديثه وحذفه دون الحاجة إلى أي عمود تزايدي. | لا | Boolean | enableNativeCdc |
صافي التغييرات | عند استخدام تتبع تغيير البلورة الثلجية، يمكنك استخدام هذا الخيار للحصول على صفوف تم تغييرها أو تغييرات شاملة. لن تعرض الصفوف التي تم تغييرها سوى أحدث إصدارات الصفوف التي تغيرت منذ نقطة زمنية معينة، بينما ستعرض لك التغييرات الشاملة جميع إصدارات كل صف تم تغييره، بما في ذلك الإصدارات التي تم حذفها أو تحديثها. على سبيل المثال، إذا قمت بتحديث صف، فسترى إصدار حذف وإصدار إدراج في تغييرات شاملة، ولكن فقط إصدار الإدراج في صفوف تم تغييرها. اعتمادا على حالة الاستخدام الخاصة بك، يمكنك اختيار الخيار الذي يناسب احتياجاتك. الخيار الافتراضي خطأ، مما يعني تغييرات شاملة. | لا | Boolean | netChanges |
تضمين أعمدة النظام | عند استخدام تتبع تغيير snowflake، يمكنك استخدام خيار systemColumns للتحكم في ما إذا كانت أعمدة دفق بيانات التعريف التي يوفرها Snowflake مضمنة أو مستبعدة في إخراج تعقب التغيير. بشكل افتراضي، يتم تعيين systemColumns إلى true، ما يعني تضمين أعمدة دفق بيانات التعريف. يمكنك تعيين systemColumns إلى false إذا كنت تريد استبعادها. | لا | Boolean | أعواد النظام |
بدء القراءة من البداية | سيؤدي تعيين هذا الخيار باستخدام الاستخراج المتزايد وتعقب التغيير إلى توجيه ADF لقراءة جميع الصفوف عند التنفيذ الأول للبنية الأساسية لبرنامج ربط العمليات التجارية مع تشغيل الاستخراج التزايدي. | لا | Boolean | skipInitialLoad |
أمثلة النص مصدر Snowflake
عند استخدام مجموعة بيانات Snowflake كنوع المصدر، يكون البرنامج النصي لتدفق البيانات المقترنة:
source(allowSchemaDrift: true,
validateSchema: false,
query: 'select * from MYTABLE',
format: 'query') ~> SnowflakeSource
إذا كنت تستخدم مجموعة بيانات مضمنة، يكون البرنامج النصي لتدفق البيانات المقترنة:
source(allowSchemaDrift: true,
validateSchema: false,
format: 'query',
query: 'select * from MYTABLE',
store: 'snowflake') ~> SnowflakeSource
تتبع التغيير الأصلي
يدعم Azure Data Factory الآن ميزة أصلية في Snowflake تعرف باسم تعقب التغييرات، والتي تتضمن تعقب التغييرات في شكل سجلات. تسمح لنا هذه الميزة من snowflake بتعقب التغييرات في البيانات بمرور الوقت مما يجعلها مفيدة لغرض تحميل البيانات والتدقيق المتزايد. لاستخدام هذه الميزة، عند تمكين Change data capture وتحديد Snowflake Change Tracking، نقوم بإنشاء كائن Stream للجدول المصدر الذي يمكن تعقب التغيير على جدول Snowflake المصدر. بعد ذلك، نستخدم عبارة CHANGES في استعلامنا لجلب البيانات الجديدة أو المحدثة فقط من الجدول المصدر. أيضا، يوصى بجدولة البنية الأساسية لبرنامج ربط العمليات التجارية بحيث يتم استهلاك التغييرات ضمن فاصل زمني من وقت استبقاء البيانات المعين لجدول مصدر snowflake قد يرى المستخدم سلوكا غير متناسق في التغييرات الملتقطة.
تحويل المتلقي
يسرد الجدول أدناه الخصائص التي يدعمها متلقي Snowflake. يمكنك تحرير هذه الخصائص في علامة التبويب الإعدادات . عند استخدام مجموعة البيانات المضمنة، سترى إعدادات إضافية، وهي نفس الخصائص الموضحة في قسم خصائص مجموعة البيانات. يستخدم الموصل نقل البيانات الداخلية من Snowflake.
Name | الوصف | مطلوب | القيم المسموح بها | خاصية البرنامج النصي لتدفق البيانات |
---|---|---|---|---|
أسلوب التحديث | حدد العمليات المسموح بها في وجهة Snowflake. لتحديث صفوف أو إجراء upsert "إدراج الصفوف أو تحديثها" أو حذفها، يلزم إجراء تحويل في الصف المعدل لوضع علامة على الصفوف التي تخضع لتلك الإجراءات. |
نعم |
true أو false |
قابل للحذف قابلة للادراج قابل للتحديث قابل للإدراج أو التحديث |
الأعمدة الرئيسية | بالنسبة للتحديثات وعمليات التنشيط والحذف، يجب تعيين عمود أو أعمدة مفتاح لتحديد الصف الذي ستتم إعادة تعديله. | لا | صفيف | المفاتيح |
إجراء الجدول | يحدد ما إذا كان سيتم إعادة إنشاء أو إزالة كل الصفوف من الجدول الوجهة قبل الكتابة. - None: لن يتم اتخاذ أي إجراء على الجدول. - Recreate: سيتم إسقاط الجدول وإعادة إنشائه. مطلوب في حال إنشاء جدول جديد بشكل ديناميكي. - Truncate: سيتم إزالة جميع الصفوف من الجدول الهدف. |
لا |
true أو false |
إعادة إنشاء اقتطاع |
أمثلة النص متلقي Snowflake
عند استخدام مجموعة بيانات Snowflake كنوع المتلقي، يكون البرنامج النصي لتدفق البيانات المقترنة:
IncomingStream sink(allowSchemaDrift: true,
validateSchema: false,
deletable:true,
insertable:true,
updateable:true,
upsertable:false,
keys:['movieId'],
format: 'table',
skipDuplicateMapInputs: true,
skipDuplicateMapOutputs: true) ~> SnowflakeSink
إذا كنت تستخدم مجموعة بيانات مضمنة، يكون البرنامج النصي لتدفق البيانات المقترنة:
IncomingStream sink(allowSchemaDrift: true,
validateSchema: false,
format: 'table',
tableName: 'table',
schemaName: 'schema',
deletable: true,
insertable: true,
updateable: true,
upsertable: false,
store: 'snowflake',
skipDuplicateMapInputs: true,
skipDuplicateMapOutputs: true) ~> SnowflakeSink
تحسين دفع الاستعلام
من خلال تعيين مستوى تسجيل البنية الأساسية لبرنامج ربط العمليات التجارية إلى بلا، نستبعد نقل مقاييس التحويل الوسيط، ومنع العوائق المحتملة لتحسينات Spark وتمكين تحسين دفع الاستعلام الذي يوفره Snowflake. يسمح تحسين الإيقاف المؤقت هذا بتحسينات أداء كبيرة لجداول Snowflake الكبيرة مع مجموعات بيانات واسعة النطاق.
إشعار
لا ندعم الجداول المؤقتة في Snowflake، لأنها محلية لجلسة العمل أو المستخدم الذي يقوم بإنشائها، ما يجعلها غير قابلة للوصول إلى جلسات العمل الأخرى وعرضة للكتابة فوقها كجداول عادية بواسطة Snowflake. بينما يقدم Snowflake جداول عابرة كبديل، والتي يمكن الوصول إليها عالميا، فإنها تتطلب حذفا يدويا، مما يتناقض مع هدفنا الأساسي المتمثل في استخدام جداول Temp وهو تجنب أي عمليات حذف في مخطط المصدر.
بحث عن خصائص النشاط
لمزيد من المعلومات حول الخصائص، راجع نشاط البحث.
ترقية موصل Snowflake
لترقية موصل Snowflake، يمكنك إجراء ترقية جنبا إلى جنب، أو ترقية موضعية.
الترقية جنبا إلى جنب
لإجراء ترقية جنبا إلى جنب، أكمل الخطوات التالية:
- إنشاء خدمة Snowflake مرتبطة جديدة وتكوينها بالإشارة إلى خصائص الخدمة المرتبطة V2.
- إنشاء مجموعة بيانات استنادا إلى خدمة Snowflake المرتبطة التي تم إنشاؤها حديثا.
- استبدل الخدمة المرتبطة الجديدة ومجموعة البيانات بأخرى موجودة في البنية الأساسية لبرنامج ربط العمليات التجارية التي تستهدف كائنات V1.
الترقية الموضوعية
لإجراء ترقية موضعية، تحتاج إلى تحرير حمولة الخدمة المرتبطة الموجودة وتحديث مجموعة البيانات لاستخدام الخدمة المرتبطة الجديدة.
تحديث النوع من Snowflake إلى SnowflakeV2.
تعديل حمولة الخدمة المرتبطة من تنسيق V1 الخاص بها إلى V2. يمكنك إما تعبئة كل حقل من واجهة المستخدم بعد تغيير النوع المذكور أعلاه، أو تحديث الحمولة مباشرة من خلال محرر JSON. راجع قسم خصائص الخدمة المرتبطة في هذه المقالة للحصول على خصائص الاتصال المدعومة. توضح الأمثلة التالية الاختلافات في الحمولة للخدمات المرتبطة V1 وV2 Snowflake:
حمولة خدمة Snowflake V1 المرتبطة JSON:
{ "name": "Snowflake1", "type": "Microsoft.DataFactory/factories/linkedservices", "properties": { "annotations": [], "type": "Snowflake", "typeProperties": { "authenticationType": "Basic", "connectionString": "jdbc:snowflake://<fake_account>.snowflakecomputing.com/?user=FAKE_USER&db=FAKE_DB&warehouse=FAKE_DW&schema=PUBLIC", "encryptedCredential": "<your_encrypted_credential_value>" }, "connectVia": { "referenceName": "AzureIntegrationRuntime", "type": "IntegrationRuntimeReference" } } }
حمولة خدمة Snowflake V2 المرتبطة JSON:
{ "name": "Snowflake2", "type": "Microsoft.DataFactory/factories/linkedservices", "properties": { "parameters": { "schema": { "type": "string", "defaultValue": "PUBLIC" } }, "annotations": [], "type": "SnowflakeV2", "typeProperties": { "authenticationType": "Basic", "accountIdentifier": "<FAKE_Account>", "user": "FAKE_USER", "database": "FAKE_DB", "warehouse": "FAKE_DW", "encryptedCredential": "<placeholder>" }, "connectVia": { "referenceName": "AutoResolveIntegrationRuntime", "type": "IntegrationRuntimeReference" } } }
تحديث مجموعة البيانات لاستخدام الخدمة المرتبطة الجديدة. يمكنك إما إنشاء مجموعة بيانات جديدة استنادا إلى الخدمة المرتبطة التي تم إنشاؤها حديثا، أو تحديث خاصية نوع مجموعة بيانات موجودة من SnowflakeTable إلى SnowflakeV2Table.
الاختلافات بين Snowflake V2 وV1
يوفر موصل Snowflake V2 وظائف جديدة ومتوافق مع معظم ميزات موصل Snowflake V1. يعرض الجدول أدناه اختلافات الميزات بين V2 وV1.
Snowflake V2 | Snowflake V1 |
---|---|
دعم المصادقة الأساسية ومصادقة زوج المفاتيح. | دعم المصادقة الأساسية. |
معلمات البرنامج النصي غير معتمدة في نشاط البرنامج النصي حاليا. كبديل، استخدم التعبيرات الديناميكية لمعلمات البرنامج النصي. لمزيد من المعلومات، راجع التعبيرات والوظائف في Azure Data Factory وAzure Synapse Analytics. | دعم معلمات البرنامج النصي في نشاط البرنامج النصي. |
دعم BigDecimal في نشاط البحث. سيتم عرض نوع NUMBER، كما هو محدد في Snowflake، كسلسلة في نشاط البحث. إذا كنت تريد إخفاءه إلى نوع رقمي، يمكنك استخدام معلمة المسار مع دالة int أو دالة float. على سبيل المثال، int(activity('lookup').output.firstRow.VALUE) ، float(activity('lookup').output.firstRow.VALUE) |
BigDecimal غير مدعوم في نشاط البحث. |
accountIdentifier
warehouse
database يتم استخدام الخصائص و schema و role لإنشاء اتصال. |
connectionstring يتم استخدام الخاصية لإنشاء اتصال. |
تتم قراءة نوع بيانات الطابع الزمني في Snowflake كنوع بيانات DateTimeOffset في نشاط البحث والبرنامج النصي. | تتم قراءة نوع بيانات الطابع الزمني في Snowflake كنوع بيانات DateTime في نشاط البحث والبرنامج النصي. إذا كنت لا تزال بحاجة إلى استخدام قيمة Datetime كمعلمة في البنية الأساسية لبرنامج ربط العمليات التجارية بعد ترقية الموصل، يمكنك تحويل نوع DateTimeOffset إلى نوع DateTime باستخدام الدالة formatDateTime (مستحسن) أو دالة concat. على سبيل المثال: formatDateTime(activity('lookup').output.firstRow.DATETIMETYPE) ، concat(substring(activity('lookup').output.firstRow.DATETIMETYPE, 0, 19), 'Z') |
المحتوى ذو الصلة
للحصول على قائمة مخازن البيانات المعتمدة كمصادر ومواضع تلقٍّ، راجع مخازن البيانات المعتمدة والتنسيقات.