نسخ البيانات وتحويلها في Snowflake V1 باستخدام 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 هذا أنواع المصادقة التالية. راجع الأقسام المقابلة للاطلاع على التفاصيل.
المصادقة الأساسية
يتم دعم الخصائص التالية لخدمة Snowflake المرتبطة عند استخدام المصادقة الأساسية .
الخاصية | الوصف | مطلوب |
---|---|---|
النوع | يجب تعيين خاصية النوع إلى Snowflake. | نعم |
سلسلة الاتصال | تحديد المعلومات المطلوبة للاتصال بمثيل Snowflake. يمكنك اختيار وضع كلمة المرور أو سلسلة الاتصال بالكامل في Azure Key Vault. راجع الأمثلة الموجودة أسفل الجدول، ومقالة بيانات اعتماد المتجر في Azure Key Vault ، لمزيد من التفاصيل. بعض الإعدادات النموذجية: - اسم الحساب: اسم الحساب الكامل لحساب Snowflake الخاص بك (بما في ذلك الأجزاء الإضافية التي تحدد المنطقة والنظام الأساسي السحابي)، على سبيل المثال xy12345.east-us-2.azure. - اسم المستخدم: معرف تسجيل الدخول للمستخدم للاتصال. - كلمة السر: كلمة المرور للمستخدم. - قاعدة البيانات: قاعدة البيانات الافتراضية لاستخدامها بمجرد الاتصال. يجب أن توجد قاعدة بيانات ليمتلك الدور المحدد أذون لها. - المستودع: المستودع الظاهري لاستخدامه بمجرد الاتصال. يجب أن يوجد مستودع ليمتلك الدور المحدد أذون له. - الدور: دور التحكم في الوصول الافتراضي لاستخدامه في جلسة عمل Snowflake. يجب أن يكون الدور المحدد دورا موجودا تم تعيينه بالفعل إلى المستخدم المحدد. الدور الافتراضي هو عام. |
نعم |
نوع المصادقة | تعيين هذه الخاصية إلى أساسي. | نعم |
connectVia | يُستخدم وقت تشغيل التكامل للاتصال بمخزن البيانات. يمكنك استخدام Azure Integration Runtime أو وقت تشغيل التكامل المستضاف ذاتياً (إذا كان مخزن بياناتك في شبكة اتصال خاصة). إذا لم يكن محدداً، فإنه يستخدم وقت تشغيل تكامل Azure الافتراضي. | لا |
مثال:
{
"name": "SnowflakeLinkedService",
"properties": {
"type": "Snowflake",
"typeProperties": {
"authenticationType": "Basic",
"connectionString": "jdbc:snowflake://<accountname>.snowflakecomputing.com/?user=<username>&password=<password>&db=<database>&warehouse=<warehouse>&role=<myRole>"
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
كلمة المرور في Azure Key Vault:
{
"name": "SnowflakeLinkedService",
"properties": {
"type": "Snowflake",
"typeProperties": {
"authenticationType": "Basic",
"connectionString": "jdbc:snowflake://<accountname>.snowflakecomputing.com/?user=<username>&db=<database>&warehouse=<warehouse>&role=<myRole>",
"password": {
"type": "AzureKeyVaultSecret",
"store": {
"referenceName": "<Azure Key Vault linked service name>",
"type": "LinkedServiceReference"
},
"secretName": "<secretName>"
}
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
خصائص مجموعة البيانات
للحصول على قائمة كاملة بالأقسام والخصائص المتوفرة لتعريف مجموعات البيانات، راجع مقالة مجموعات البيانات.
يتم اعتماد الخصائص التالية لمجموعة بيانات Snowflake.
الخاصية | الوصف | مطلوب |
---|---|---|
النوع | يجب تعيين خاصية نوع مجموعة البيانات إلى SnowflakeTable. | نعم |
Schema | اسم المخطط. ملاحظة: اسم المخطط حساسة لحالة الأحرف. | لا للمصدر، نعم للمتلقي |
طاولتنا | اسم الجدول/طريقة العرض. لاحظ أن اسم الجدول حساس لحالة الأحرف. | لا للمصدر، نعم للمتلقي |
مثال:
{
"name": "SnowflakeDataset",
"properties": {
"type": "SnowflakeTable",
"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 تُدعم الخصائص التالية في قسم مصدر نشاط النسخ.
الخاصية | الوصف | مطلوب |
---|---|---|
النوع | يجب تعيين خاصية نوع مصدر نشاط النسخ إلى: SnowflakeSource. | نعم |
استعلام | تحديد الاستعلام SQL لقراءة البيانات من Snowflake. إذا كانت أسماء المخطط والجدول والأعمدة تحتوي على أحرف صغيرة، فاقتبس معرّف العنصر في الاستعلام، على سبيل المثال select * from "schema"."myTable" .تنفيذ الإجراء المخزن غير مدعوم. |
لا |
exportSettings | إعدادات متقدمة تستخدم لاسترداد البيانات من Snowflake. يمكنك تكوين تلك المدعومة من قبل COPY في الأمر الذي ستمر به الخدمة عند استدعاء الكشف. | نعم |
تحت exportSettings : |
||
النوع | نوع أمر التصدير، تعيين إلى SnowflakeExportCopyCommand. | نعم |
additionalCopyOptions | خيارات نسخ إضافية، مقدمة كقاموس لأزواج قيم المفاتيح. أمثلة: MAX_FILE_SIZE، OVERWRITE. لمزيد من المعلومات، راجع خيارات نسخ Snowflake. | لا |
additionalFormatOptions | خيارات إضافية لتنسيق ملف يتم توفيرها إلى الأمر COPY كقاموس أزواج قيم المفاتيح. أمثلة: DATE_FORMAT، TIME_FORMAT، TIMESTAMP_FORMAT. لمزيد من المعلومات، راجع خيارات نوع تنسيق Snowflake. | لا |
إشعار
تأكد من أن لديك الإذن لتنفيذ الأمر التالي والوصول إلى المخطط INFORMATION_SCHEMA و أعمدة الجدول.
COPY INTO <location>
نسخة مباشرة من Snowflake
إذا كان مخزن البيانات المتلقي والتنسيق يفيان بالمعايير الموضحة في هذا القسم، يمكنك استخدام نشاط النسخ للنسخ المباشر من Snowflake إلى المتلقي. تتحقق الخدمة من الإعدادات وتفشل في تشغيل نشاط النسخ إذا لم يتم استيفاء المعايير التالية:
الخدمة المرتبطة بالمتلقي هي تخزين كائن ثنائي كبير الحجم من Azure مع مصادقة توقيع الوصول المشترك. إذا كنت ترغب في نسخ البيانات مباشرة إلى Azure Data Lake Storage Gen2 بالتنسيق المعتمد التالي، يمكنك إنشاء خدمة كائن ثنائي كبير الحجم من Azure مرتبطة بمصادقة SAS مقابل حساب ADLS 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": "SnowflakeSource",
"query": "SELECT * FROM MYTABLE",
"exportSettings": {
"type": "SnowflakeExportCopyCommand",
"additionalCopyOptions": {
"MAX_FILE_SIZE": "64000000",
"OVERWRITE": true
},
"additionalFormatOptions": {
"DATE_FORMAT": "'MM/DD/YYYY'"
}
}
},
"sink": {
"type": "<sink type>"
}
}
}
]
نسخة مرحلية من Snowflake
عندما لا يكون مخزن بيانات المتلقي أو تنسيقه متوافقا أصلا مع الأمر Snowflake COPY، كما هو مذكور في القسم الأخير، قم بتمكين النسخة المرحلية المضمنة باستخدام مثيل تخزين Azure Blob مؤقت. كما توفر لك ميزة النسخ المرحلي معدل نقل أفضل. تصدر الخدمة البيانات من Snowflake إلى التخزين المرحلي، ثم تنسخ البيانات للمتلقي، وأخيراً تنظف بياناتك المؤقتة من التخزين المرحلي. راجع نسخة مرحلية للحصول على تفاصيل حول نسخ البيانات باستخدام التقسيم المرحلي.
لاستخدام هذه الميزة، قم بإنشاء خدمة تخزين Azure Blob المرتبطة التي تشير إلى حساب تخزين Azure كالتقسيم المرحلي المؤقت. ثم حدد enableStaging
وstagingSettings
الخصائص في نشاط النسخ.
إشعار
يجب أن تستخدم خدمة تخزين Azure Blob المرحلية المرتبطة مصادقة توقيع الوصول المشترك، كما هو مطلوب من قبل الأمر Snowflake COPY. يجب أن تتأكد من منح إذن الوصول المناسب إلى Snowflake في تخزين Azure Blob المرحلي. لمعرفة المزيد حول هذا الموضوع، راجع هذه المقالة.
مثال:
"activities":[
{
"name": "CopyFromSnowflake",
"type": "Copy",
"inputs": [
{
"referenceName": "<Snowflake input dataset name>",
"type": "DatasetReference"
}
],
"outputs": [
{
"referenceName": "<output dataset name>",
"type": "DatasetReference"
}
],
"typeProperties": {
"source": {
"type": "SnowflakeSource",
"query": "SELECT * FROM MyTable",
"exportSettings": {
"type": "SnowflakeExportCopyCommand"
}
},
"sink": {
"type": "<sink type>"
},
"enableStaging": true,
"stagingSettings": {
"linkedServiceName": {
"referenceName": "MyStagingBlob",
"type": "LinkedServiceReference"
},
"path": "mystagingpath"
}
}
}
]
Snowflake كمتلقي
يستخدم موصل Snowflake الأمر COPY في [الجدول] الخاص بـ Snowflake لتحقيق أفضل أداء. وهو يدعم كتابة البيانات في Snowflake على Azure.
إذا كان تخزين بيانات المصدر وتنسيقه مدعومين أصلاً بواسطة أمر Snowflake COPY، فيمكنك استخدام نشاط النسخ للنسخ مباشرةً من المصدر إلى Snowflake. لمزيد من التفاصيل، راجع نسخة مباشرة إلى Snowflake. خلاف ذلك، استخدم نسخة مرحلية مدمجة إلى Snowflake.
لنسخ البيانات من Snowflake، يتم دعم الخصائص التالية في قسم متلقي نشاط النسخ.
الخاصية | الوصف | مطلوب |
---|---|---|
النوع | خاصية نوع متلقي نشاط النسخ، تعيين SnowflakeSink. | نعم |
preCopyScript | حدد استعلام SQL لنشاط النسخ للتشغيل قبل كتابة البيانات في Snowflake عند كل تشغيل. استخدم هذه الخاصية لتنظيف البيانات المحملة في الخلفية. | لا |
importSettings | إعدادات متقدمة تستخدم لكتابة البيانات في Snowflake. يمكنك تكوين تلك المدعومة من قبل COPY في الأمر الذي ستمر به الخدمة عند استدعاء الكشف. | نعم |
تحت importSettings : |
||
النوع | نوع أمر الاستيراد، تعيين إلى SnowflakeImportCopyCommand. | نعم |
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. تتحقق الخدمة من الإعدادات وتفشل في تشغيل نشاط النسخ إذا لم يتم استيفاء المعايير التالية:
الخدمة المرتبطة بالمصدر هي تخزين كائن ثنائي كبير الحجم من Azure مع مصادقة توقيع الوصول المشترك. إذا كنت ترغب في نسخ البيانات مباشرة من Azure Data Lake Storage Gen2 بالتنسيق المدعوم التالي، يمكنك إنشاء خدمة مرتبطة ب Azure Blob مع مصادقة SAS مقابل حساب ADLS 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": "SnowflakeSink",
"importSettings": {
"type": "SnowflakeImportCopyCommand",
"copyOptions": {
"FORCE": "TRUE",
"ON_ERROR": "SKIP_FILE"
},
"fileFormatOptions": {
"DATE_FORMAT": "YYYY-MM-DD"
}
}
}
}
}
]
نسخة مرحلية لـ Snowflake
عندما لا يكون مخزن بيانات المصدر أو تنسيقه متوافقا أصلا مع الأمر Snowflake COPY، كما هو مذكور في القسم الأخير، قم بتمكين النسخة المرحلية المضمنة باستخدام مثيل تخزين Azure Blob مؤقت. كما توفر لك ميزة النسخ المرحلي معدل نقل أفضل. تقوم الخدمة تلقائياً بتحويل البيانات لتلبية متطلبات تنسيق البيانات في Snowflake. ثم استدعاء الأمر COPY لتحميل البيانات في Snowflake. وأخيراً، فإنه ينظف البيانات المؤقتة الخاصة بك من تخزين الكائن الثنائي كبير الحجم. راجع النسخ المرحلي للحصول على تفاصيل حول نسخ البيانات باستخدام التقسيم المرحلي.
لاستخدام هذه الميزة، قم بإنشاء خدمة تخزين Azure Blob المرتبطة التي تشير إلى حساب تخزين Azure كالتقسيم المرحلي المؤقت. ثم حدد enableStaging
وstagingSettings
الخصائص في نشاط النسخ.
إشعار
خدمة تخزين 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": "SnowflakeSink",
"importSettings": {
"type": "SnowflakeImportCopyCommand"
}
},
"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 وهو تجنب أي عمليات حذف في مخطط المصدر.
بحث عن خصائص النشاط
لمزيد من المعلومات حول الخصائص، راجع نشاط البحث.
المحتوى ذو الصلة
للحصول على قائمة مخازن البيانات المعتمدة كمصادر ومواضع تلقٍّ، راجع مخازن البيانات المعتمدة والتنسيقات.