نسخ البيانات من وإلى Salesforce باستخدام Azure Data Factory أو Azure Synapse Analytics
ينطبق على: Azure Data Factory Azure Synapse Analytics
تلميح
جرب Data Factory في Microsoft Fabric، وهو حل تحليلي متكامل للمؤسسات. يغطي Microsoft Fabric كل شيء بدءا من حركة البيانات إلى علم البيانات والتحليلات في الوقت الحقيقي والمعلومات المهنية وإعداد التقارير. تعرف على كيفية بدء إصدار تجريبي جديد مجانا!
توضح هذه المقالة كيفية استخدام نشاط النسخ في Azure Data Factory ومسارات Azure Synapse لنسخ البيانات من وإلى Salesforce. وهو يستند إلى مقالة نظرة عامة حول نشاط النسخ التي تعرض نظرة عامة حول نشاط النسخ.
هام
يوفر موصل Salesforce الجديد دعما محسنا ل Salesforce الأصلي. إذا كنت تستخدم موصل Salesforce القديم في الحل الخاص بك، فيرجى ترقية موصل Salesforce قبل 11 أكتوبر 2024. راجع هذا القسم للحصول على تفاصيل حول الفرق بين الإصدار القديم والأحدث.
القدرات المدعومة
موصل Salesforce هذا مدعوم للإمكانيات التالية:
القدرات المدعومة | IR |
---|---|
Copy activity (المصدر/المتلق) | (1) (2) |
نشاط البحث | (1) (2) |
① وقت تشغيل تكامل Azure ② وقت تشغيل التكامل المستضاف ذاتيًا
للحصول على قائمة مخازن البيانات المدعومة من نشاط النسخ كمصادر ومتلقين، راجع جدول مخازن البيانات المدعومة.
وبشكل خاص، يدعم موصل Salesforce هذا:
- إصدارات مطور Salesforce Developer أو المحترفة أو المؤسسات أو الإصدارات غير المحدودة.
- نسخ البيانات من وإلى مجال مخصص (يمكن تكوين المجال المخصص في كل من بيئات الإنتاج وبيئة الاختبار المعزولة).
يمكنك تعيين إصدار واجهة برمجة التطبيقات المستخدم لقراءة/كتابة البيانات بشكل صريح عبر apiVersion
خاصية في الخدمة المرتبطة. عند نسخ البيانات إلى Salesforce، يستخدم الموصل BULK API 2.0.
المتطلبات الأساسية
يجب تمكين إذن API في Salesforce.
تحتاج إلى تكوين التطبيقات المتصلة في مدخل Salesforce للإشارة إلى هذا المستند الرسمي أو إرشادات خطوة بخطوة في التوصية الواردة في هذه المقالة.
هام
- يجب أن يكون لدى مستخدم التنفيذ إذن واجهة برمجة التطبيقات فقط.
- يمكن تغيير وقت انتهاء صلاحية الرمز المميز للوصول من خلال نهج جلسة العمل بدلا من رمز التحديث المميز.
حدود واجهة برمجة تطبيقات Salesforce المجمعة 2.0
نستخدم Salesforce Bulk API 2.0 للاستعلام عن البيانات واستيعابها. في Bulk API 2.0، يتم إنشاء دفعات لك تلقائيا. يمكنك إرسال ما يصل إلى 15000 دفعة لكل فترة 24 ساعة متجددة. إذا تجاوزت الدفعات الحد الأقصى، فستواجه حالات فشل.
في Bulk API 2.0، يستهلك استيعاب المهام فقط الدفعات. مهام الاستعلام لا. للحصول على التفاصيل، راجع كيفية معالجة الطلبات في دليل مطور واجهة برمجة التطبيقات المجمعة 2.0.
لمزيد من المعلومات، راجع قسم "الحدود العامة" في حدود مطور Salesforce.
الشروع في العمل
لتنفيذ نشاط النسخ باستخدام أحد المسارات، يمكنك استخدام إحدى الأدوات أو عدد تطوير البرامج التالية:
- أداة نسخ البيانات
- مدخل Azure
- The .NET SDK
- عدة تطوير برامج Python
- Azure PowerShell
- واجهة برمجة تطبيقات REST
- قالب Azure Resource Manager
إنشاء خدمة مرتبطة بـ Salesforce باستخدام واجهة المستخدم
استخدم الخطوات التالية لإنشاء خدمة مرتبطة بـ Salesforce في واجهة مستخدم مدخل Azure.
استعرض للوصول إلى علامة التبويب "Manage" في مصنع بيانات Azure أو مساحة عمل Synapse، وحدد "Linked Services"، ثم انقر فوق "New":
ابحث عن Salesforce وحدد موصل Salesforce.
قم بتكوين تفاصيل الخدمة، واختبر الاتصال، وأنشئ الخدمة المرتبطة الجديدة.
تفاصيل تكوين الموصل
توفر الأقسام التالية تفاصيل حول الخصائص المستخدمة لتعريف الكيانات الخاصة بموصل Salesforce.
خصائص الخدمة المرتبطة
يتم اعتماد الخصائص التالية للخدمة المرتبطة لـ Salesforce.
الخاصية | الوصف | مطلوب |
---|---|---|
النوع | يجب تعيين خاصية النوع إلى SalesforceV2. | نعم |
environmentUrl | حدد عنوان URL لمثيل Salesforce. على سبيل المثال، حدد "https://<domainName>.my.salesforce.com" لنسخ البيانات من المجال المخصص. تعرف على كيفية تكوين مجالك المخصص أو عرضه بالإشارة إلى هذه المقالة. |
نعم |
نوع المصادقة | نوع المصادقة المستخدمة للاتصال ب Salesforce. القيمة المسموح بها هي OAuth2ClientCredentials. |
نعم |
clientId | حدد معرف العميل لتطبيق Salesforce OAuth 2.0 المتصل. لمزيد من المعلومات، انتقل إلى هذه المقالة | نعم |
clientSecret | حدد سر العميل لتطبيق Salesforce OAuth 2.0 المتصل. لمزيد من المعلومات، انتقل إلى هذه المقالة | نعم |
apiVersion | حدد إصدار Salesforce Bulk API 2.0 لاستخدامه، على سبيل المثال، 52.0 . يدعم Bulk API 2.0 إصدار واجهة برمجة التطبيقات >فقط = 47.0. للتعرف على إصدار Bulk API 2.0، راجع المقالة. يحدث فشل إذا كنت تستخدم إصدار API أقل. |
نعم |
connectVia | يُستخدم وقت تشغيل التكامل للاتصال بمخزن البيانات. إذا لم يتم تحديده، فإنه يستخدم Azure Integration Runtime الافتراضي. | لا |
مثال: تخزين معلومات تسجيل الدخول
{
"name": "SalesforceLinkedService",
"properties": {
"type": "SalesforceV2",
"typeProperties": {
"environmentUrl": "<environment URL>",
"authenticationType": "OAuth2ClientCredentials",
"clientId": "<client ID>",
"clientSecret": {
"type": "SecureString",
"value": "<client secret>"
},
"apiVersion": "<API Version>"
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
مثال: تخزين بيانات الاعتماد في Azure Key Vault
{
"name": "SalesforceLinkedService",
"properties": {
"type": "SalesforceV2",
"typeProperties": {
"environmentUrl": "<environment URL>",
"authenticationType": "OAuth2ClientCredentials",
"clientId": "<client ID>",
"clientSecret": {
"type": "AzureKeyVaultSecret",
"secretName": "<secret name of client secret in AKV>",
"store":{
"referenceName": "<Azure Key Vault linked service>",
"type": "LinkedServiceReference"
}
},
"apiVersion": "<API Version>"
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
مثال: تخزين بيانات الاعتماد في Key Vault، بالإضافة إلى environmentUrl و clientId
من خلال تخزين بيانات الاعتماد في Key Vault، بالإضافة إلى environmentUrl و clientId، يمكنك استخدام واجهة المستخدم لتحرير الإعدادات. يجب تحديد خانة الاختيار تحديد المحتويات الديناميكية بتنسيق JSON، ويجب أن يكون هذا التكوين يدويا. ميزة هذا السيناريو هي أنه يمكنك اشتقاق جميع إعدادات التكوين من Key Vault بدلا من تحديد معلمات أي شيء هنا.
{
"name": "SalesforceLinkedService",
"properties": {
"type": "SalesforceV2",
"typeProperties": {
"environmentUrl": {
"type": "AzureKeyVaultSecret",
"secretName": "<secret name of environment URL in AKV>",
"store": {
"referenceName": "<Azure Key Vault linked service>",
"type": "LinkedServiceReference"
},
},
"authenticationType": "OAuth2ClientCredentials",
"clientId": {
"type": "AzureKeyVaultSecret",
"secretName": "<secret name of client ID in AKV>",
"store": {
"referenceName": "<Azure Key Vault linked service>",
"type": "LinkedServiceReference"
},
},
"clientSecret": {
"type": "AzureKeyVaultSecret",
"secretName": "<secret name of client secret in AKV>",
"store":{
"referenceName": "<Azure Key Vault linked service>",
"type": "LinkedServiceReference"
}
},
"apiVersion": "<API Version>"
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
خصائص مجموعة البيانات
للحصول على قائمة كاملة بالأقسام والخصائص المتوفرة لتعريف مجموعات البيانات، راجع مقالة مجموعات البيانات. يوفر هذا القسم قائمة بالخصائص المدعومة من قِبل مجموعة بيانات Salesforce.
لنسخ البيانات من وإلى Salesforce، قم بتعيين خاصية نوع مجموعة البيانات إلى SalesforceV2Object. تدعم الخصائص التالية.
الخاصية | الوصف | مطلوب |
---|---|---|
النوع | يجب تعيين خاصية النوع إلى SalesforceV2Object. | نعم |
objectApiName | اسم عنصر Salesforce لاسترداد البيانات منه. إصدار وقت تشغيل التكامل المستضاف ذاتيا القابل للتطبيق هو 5.44.8984.1 أو أعلى. | لا للمصدر (إذا تم تحديد "استعلام" في المصدر)، نعم للمتلقي |
معرف التقرير | معرف تقرير Salesforce لاسترداد البيانات منه. وهو غير مدعوم في المتلقي. هناك قيود عند استخدام التقارير. إصدار وقت تشغيل التكامل المستضاف ذاتيا القابل للتطبيق هو 5.44.8984.1 أو أعلى. | لا للمصدر (إذا تم تحديد "استعلام" في المصدر)، لا يدعم المتلقي |
هام
جزء "__c" من اسم API مطلوب لأي عنصر مخصص.
مثال:
{
"name": "SalesforceDataset",
"properties": {
"type": "SalesforceV2Object",
"typeProperties": {
"objectApiName": "MyTable__c"
},
"schema": [],
"linkedServiceName": {
"referenceName": "<Salesforce linked service name>",
"type": "LinkedServiceReference"
}
}
}
انسخ خصائص النشاط
للحصول على قائمة كاملة بالأقسام والخصائص المتوفرة لتعريف الأنشطة، راجع مقالة التدفقات. يوفر هذا القسم قائمة بالخصائص التي يدعمها مصدر Salesforce والملتقي.
Salesforce كنوع مصدر
لنسخ البيانات من Salesforce، قم بتعيين نوع المصدر في نشاط النسخ إلى SalesforceV2Source. يتم دعم الخصائص التالية في قسم المصدر لنشاط النسخ.
الخاصية | الوصف | مطلوب |
---|---|---|
النوع | يجب تعيين خاصية نوع مصدر نشاط النسخ إلى SalesforceV2Source. | نعم |
استعلام | قم باستخدام الاستعلام المخصص لقراءة البيانات. يمكنك فقط استخدام استعلام لغة استعلام كائن Salesforce (SOQL) مع القيود. للحصول على قيود SOQL، راجع هذه المقالة. إذا لم يتم تحديد الاستعلام، يتم استرداد جميع بيانات كائن Salesforce المحدد في "objectApiName/reportId" في مجموعة البيانات. | لا (إذا تم تحديد "objectApiName/reportId" في مجموعة البيانات) |
includeDeletedObjects | يشير إلى ما إذا كان يلزم الاستعلام عن السجلات الموجودة أو الاستعلام عن كافة السجلات بما في ذلك السجلات المحذوفة. إذا لم يتم تحديده، يكون السلوك الافتراضي خطأ. القيم المسموح بها: خطأ (افتراضي)، صحيح. |
لا |
هام
جزء "__c" من اسم API مطلوب لأي عنصر مخصص.
مثال:
"activities":[
{
"name": "CopyFromSalesforce",
"type": "Copy",
"inputs": [
{
"referenceName": "<Salesforce input dataset name>",
"type": "DatasetReference"
}
],
"outputs": [
{
"referenceName": "<output dataset name>",
"type": "DatasetReference"
}
],
"typeProperties": {
"source": {
"type": "SalesforceV2Source",
"query": "SELECT Col_Currency__c, Col_Date__c, Col_Email__c FROM AllDataType__c",
"includeDeletedObjects": false
},
"sink": {
"type": "<sink type>"
}
}
}
]
Salesforce كنوع متلقي
لنسخ البيانات إلى Salesforce، قم بتعيين نوع المتلقي في نشاط النسخ إلى SalesforceV2Sink. تُدعم الخصائص التالية في قسم متلقي نشاط النسخ.
الخاصية | الوصف | مطلوب |
---|---|---|
النوع | يجب تعيين خاصية نوع متلقي نشاط النسخ إلى SalesforceV2Sink. | نعم |
writeBehavior | أسلوب الكتابة للعملية. القيم المسموح بها هي إدراج و Upsert. |
لا (إذا كانت القيمة الافتراضية هي إدراج) |
externalIdFieldName | اسم حقل معرف خارجي لعملية upsert. يجب تعريف الحقل المحدد بـ "حقل مُعرف خارجي" في كائن Salesforce. لا يمكن أن تكون "القيم الفارغة" في بيانات الإدراج المطابق. | نعم لقيمة "Upsert" |
writeBatchSize | عدد الصفوف من البيانات المكتوبة إلى Salesforce في كل دفعة. اقترح تعيين هذه القيمة من 10,000 إلى 200,000. يقلل عدد قليل جدا من الصفوف في كل دفعة من أداء النسخ. قد يتسبب عدد كبير جدا من الصفوف في كل دفعة في انتهاء مهلة واجهة برمجة التطبيقات. | لا (الافتراضي هو 100,000) |
ignoreNullValues | يشير إلى ما إذا كان سيتم تجاهل القيم الفارغة من بيانات الإدراج أثناء عملية الكتابة أم لا. القيم المسموح بها صواب و خطأ. - صواب: ترك البيانات في عنصر الوجهة دون تغيير عند إجراء عملية upsert أو تحديث. إدراج قيمة افتراضية معرفة عند القيام بعملية إدراج. - خطأ: تحديث البيانات في عنصر الوجهة الفارغة عند القيام بعملية upsert أو تحديث. أدرج قيمة فارغة عند القيام بعملية إدراج. |
لا (إذا كانت القيمة الافتراضية خطأ) |
maxConcurrentConnections | الحد الأعلى للاتصالات المتزامنة التي تم إنشاؤها إلى مخزن البيانات أثناء تشغيل النشاط. حدد قيمة فقط عندما تريد تحديد الاتصالات المتزامنة. | لا |
مثال: متلقي Salesforce في نشاط النسخ
"activities":[
{
"name": "CopyToSalesforce",
"type": "Copy",
"inputs": [
{
"referenceName": "<input dataset name>",
"type": "DatasetReference"
}
],
"outputs": [
{
"referenceName": "<Salesforce output dataset name>",
"type": "DatasetReference"
}
],
"typeProperties": {
"source": {
"type": "<source type>"
},
"sink": {
"type": "SalesforceV2Sink",
"writeBehavior": "Upsert",
"externalIdFieldName": "CustomerId__c",
"writeBatchSize": 10000,
"ignoreNullValues": true
}
}
}
]
تعيين نوع البيانات لـ Salesforce
عند نسخ البيانات من Salesforce، يتم استخدام التعيينات التالية من أنواع بيانات Salesforce إلى أنواع البيانات المؤقتة داخل الخدمة داخلياً. لمعرفة كيفية تعيين نشاط النسخ للمخطط المصدر ونوع البيانات إلى المتلقي، راجع تعيينات المخطط ونوع البيانات.
نوع بيانات Salesforce | نوع بيانات مؤقتة للخدمة |
---|---|
الرقم التلقائي | السلسلة |
خانة اختيار | Boolean |
العملة | عدد عشري |
التاريخ | DateTime |
التاريخ/الوقت | DateTime |
بريد إلكتروني | السلسلة |
المعرف | السلسلة |
علاقة البحث | السلسلة |
قائمة الخيارات متعددة الاختيارات | السلسلة |
الرقم | عشري |
نسبة مئوية | عدد عشري |
هاتف | السلسلة |
قائمة انتقاء | السلسلة |
نص | السلسلة |
جزء نص | السلسلة |
مساحة النص (طويل) | السلسلة |
مساحة النص (منسق) | السلسلة |
النص (مشفر) | السلسلة |
عنوان URL | السلسلة |
إشعار
يتم تعيين نوع رقم Salesforce إلى النوع العشري في Azure Data Factory ومسارات Azure Synapse كنوع بيانات مؤقت للخدمة. النوع العشري يحترم الدقة والمقياس المحددين. بالنسبة للبيانات التي تتجاوز المنازل العشرية الحجم المحدد، يتم تقريب قيمتها في بيانات المعاينة والنسخ. لتجنب فقدان الدقة في Azure Data Factory ومسارات Azure Synapse، ضع في اعتبارك زيادة المنازل العشرية إلى قيمة كبيرة إلى حد معقول في صفحة تحرير تعريف الحقل المخصص في Salesforce.
بحث عن خصائص النشاط
لمعرفة تفاصيل حول الخصائص، تحقق من نشاط البحث.
ترقية الخدمة المرتبطة ب Salesforce
فيما يلي الخطوات التي تساعدك على ترقية الخدمة المرتبطة والاستعلامات ذات الصلة:
قم بتكوين التطبيقات المتصلة في مدخل Salesforce بالإشارة إلى المتطلبات الأساسية.
إنشاء خدمة مرتبطة جديدة ل Salesforce وتكوينها بالإشارة إلى خصائص الخدمة المرتبطة. تحتاج أيضا إلى تحديث مجموعات البيانات الموجودة التي تعتمد على الخدمة المرتبطة القديمة يدويا، وتحرير كل مجموعة بيانات لاستخدام الخدمة المرتبطة الجديدة بدلا من ذلك.
إذا كنت تستخدم استعلام SQL في مصدر نشاط النسخ أو نشاط البحث الذي يشير إلى الخدمة المرتبطة القديمة، فستحتاج إلى تحويلها إلى استعلام SOQL. تعرف على المزيد حول استعلام SOQL من Salesforce كنوع مصدر ولغة استعلام عنصر Salesforce (SOQL).
يتم استبدال readBehavior بتضمينDeletedObjects في مصدر نشاط النسخ أو نشاط البحث. للحصول على التكوين التفصيلي، راجع Salesforce كنوع مصدر.
الاختلافات بين Salesforce وSalesforce (قديم)
يوفر موصل Salesforce وظائف جديدة ومتوافقا مع معظم ميزات موصل Salesforce (القديم). يعرض الجدول التالي اختلافات الميزات بين Salesforce وSalesforce (قديم).
Salesforce | Salesforce (قديم) |
---|---|
دعم SOQL داخل Salesforce Bulk API 2.0. بالنسبة إلى استعلامات SOQL: • عبارات GROUP BY أو LIMIT أو ORDER BY أو OFFSET أو TYPEOF غير مدعومة. • الدوال التجميعية مثل COUNT() غير مدعومة، يمكنك استخدام تقارير Salesforce لتنفيذها. • دالات التاريخ في عبارات GROUP BY غير مدعومة، ولكنها مدعومة في عبارة WHERE. • حقول العنوان المركب أو حقول الموقع الجغرافي المركب غير مدعومة. كبديل، استعلم عن المكونات الفردية للحولات المركبة. • استعلامات العلاقة بين الأصل والتابع غير معتمدة، بينما يتم دعم استعلامات العلاقة بين الوالدين. |
دعم كل من بناء جملة SQL وSQL. |
لا يتم دعم الكائنات التي تحتوي على حقول ثنائية عند تحديد الاستعلام. | يتم دعم الكائنات التي تحتوي على حقول ثنائية عند تحديد الاستعلام. |
دعم الكائنات داخل واجهة برمجة التطبيقات المجمعة عند تحديد الاستعلام. | دعم الكائنات غير المدعومة بواجهة برمجة التطبيقات المجمعة عند تحديد الاستعلام. |
دعم التقرير عن طريق تحديد معرف تقرير. | دعم بناء جملة استعلام التقرير، مثل {call "<report name>"} . |
المحتوى ذو الصلة
للحصول على قائمة بمخازن البيانات المدعومة كمصادر ومتلقين من خلال نشاط النسخ، انظر مخازن البيانات المدعومة .