نسخ البيانات من جدول SAP باستخدام Azure Data Factory أو Azure Synapse Analytics
ينطبق على: Azure Data Factory
Azure Synapse Analytics
تلميح
جرب Data Factory في Microsoft Fabric، وهو حل تحليلي متكامل للمؤسسات. يغطي Microsoft Fabric كل شيء بدءا من حركة البيانات إلى علم البيانات والتحليلات في الوقت الحقيقي والمعلومات المهنية وإعداد التقارير. تعرف على كيفية بدء إصدار تجريبي جديد مجانا!
توضح هذه المقالة كيفية استخدام نشاط النسخ في Azure Data Factory وخطوط أنابيب Azure Synapse Analytics لنسخ البيانات من جدول SAP. لمزيد من المعلومات، راجع نظرة عامة على نشاط النسخ.
تلميح
للتعرف على الدعم العام لسيناريو تكامل بيانات SAP، راجع تكامل بيانات SAP باستخدام الورق الأبيض لمصنع البيانات Azure مع مقدمة مفصلة حول كل موصل SAP والمقارنة والتوجيه.
القدرات المدعومة
موصل جدول الويب هذا مدعوم للقدرات التالية:
القدرات المدعومة | IR |
---|---|
نشاط النسخ (مصدر/-) | ② |
نشاط البحث | ② |
① وقت تشغيل تكامل Azure ② وقت تشغيل التكامل المستضاف ذاتيًا
للحصول على قائمة مخازن البيانات المدعومة كمصادر أو متلقين عبر نشاط النسخ، راجع جدول مخازن البيانات المدعومة.
وبوجه خاص، يدعم موصل جدول SAP هذا ما يلي:
نسخ البيانات من جدول SAP في:
- SAP ERP المكون المركزي (SAP ECC) الإصدار 7.01 أو أحدث (في مكدس حزمة دعم SAP الأخيرة الصادر بعد عام 2015).
- SAP مستودع الأعمال (SAP BW) الإصدار 7.01 أو أحدث (في مكدس حزمة دعم SAP الأخيرة الصادر بعد عام 2015).
- SAP S/4HANA.
- منتجات أخرى في SAP Business Suite إصدار 7.01 أو أحدث (في مكدس حزمة دعم SAP الأخيرة الصادر بعد عام 2015).
نسخ البيانات من كل من جدول SAP شفاف وجدول مجمع وجدول عنقودي وطريقة عرض.
نسخ البيانات باستخدام المصادقة الأساسية أو اتصالات الشبكة الآمنة (SNC)، إذا تم تكوين SNC.
الاتصال بخادم تطبيقات SAP أو خادم رسائل SAP.
استرداد البيانات عن طريق RFC الافتراضي أو المخصص.
لمزيد من المعلومات حول SNC، راجع بدء استخدام SAP SNC لتكاملات RFC - مدونة SAP.
الإصدار 7.01 أو أحدث يشير إلى إصدار SAP NetWeaver بدلاً من إصدار SAP ECC. على سبيل المثال، يحتوي SAP ECC 6.0 EHP 7 بشكل عام على إصدار NetWeaver> =7.4. في حال كنت غير متأكد من البيئة الخاصة بك، إليك خطوات تأكيد الإصدار من نظام SAP الخاص بك:
- استخدم SAP GUI للاتصال بنظام SAP.
- انتقل إلى System ->Status.
- تحقق من إصدار SAP_BASIS، تأكد من أنه يساوي أو أكبر من 701.
المتطلبات الأساسية
لاستخدام موصل جدول SAP هذا، تحتاج إلى:
إعداد وقت تشغيل تكامل مستضاف ذاتياً (الإصدار 3.17 أو أحدث). للمزيد من المعلومات، راجع إنشاء وتكوين وقت تشغيل التكامل ذاتي الاستضافة.
قم بتحميل موصل SAP 64 بت لـ Microsoft.NET 3.0 من موقع SAP وتثبيته على جهاز وقت تشغيل التكامل المستضاف ذاتياً. أثناء التثبيت، تأكد من تحديد الخيار Install Assemblies to GAC في النافذة Optional setup steps.
يجب أن يكون لدى مستخدم SAP الذي يتم استخدامه في موصل جدول SAP الأذونات التالية:
- التخويل لاستخدام وجهات استدعاء الدالة البعيدة (RFC).
- أذونات تنفيذ نشاط كائن التخويل S_SDSAUTH. يمكنك الرجوع إلى SAP Note 460089 على كائنات تخويل الأغلبية. بعض RFCs مطلوبة بواسطة موصل NCo الأساسي، على سبيل المثال RFC_FUNCTION_SEARCH.
الشروع في العمل
لتنفيذ نشاط النسخ باستخدام أحد المسارات، يمكنك استخدام إحدى الأدوات أو عدد تطوير البرامج التالية:
- أداة نسخ البيانات
- مدخل Azure
- The .NET SDK
- عدة تطوير برامج Python
- Azure PowerShell
- واجهة برمجة تطبيقات REST
- قالب Azure Resource Manager
إنشاء خدمة مرتبطة بجدول SAP باستخدام واجهة المستخدم
استخدم الخطوات التالية لإنشاء خدمة مرتبطة بجدول SAP في واجهة مستخدم مدخل Microsoft Azure.
استعرض للوصول إلى علامة التبويب "Manage" في مصنع بيانات Azure أو مساحة عمل Synapse، وحدد "Linked Services"، ثم انقر فوق "New":
ابحث عن SAP وحدد موصل جدول SAP.
قم بتكوين تفاصيل الخدمة، واختبر الاتصال، وأنشئ الخدمة المرتبطة الجديدة.
تفاصيل تكوين الموصل
توفر المقاطع التالية تفاصيل حول الخصائص المستخدمة لتعريف الكيانات الخاصة بموصل جدول SAP.
خصائص الخدمة المرتبطة
يتم دعم الخصائص التالية لخدمة SAP BW Open Hub المرتبطة:
الخاصية | الوصف | مطلوب |
---|---|---|
type |
type يجب تعيين الخاصية إلى SapTable . |
نعم |
server |
اسم الخادم الذي يوجد عليه مثيل SAP. استخدم للاتصال بخادم تطبيقات SAP. |
لا |
systemNumber |
رقم النظام لنظام SAP. استخدم للاتصال بخادم تطبيقات SAP. القيمة المسموح بها: رقم عشري مكون من رقمين يمثل كسلسلة. |
لا |
messageServer |
اسم المضيف لخادم رسائل SAP. استخدمه للاتصال بخادم رسائل SAP. |
لا |
messageServerService |
اسم الخدمة أو رقم المنفذ لخادم الرسائل. استخدمه للاتصال بخادم رسائل SAP. |
لا |
systemId |
معرف نظام SAP الذي يوجد به الجدول. استخدمه للاتصال بخادم رسائل SAP. |
لا |
logonGroup |
مجموعة تسجيل الدخول لنظام SAP. استخدمه للاتصال بخادم رسائل SAP. |
لا |
clientId |
معرف العميل في نظام SAP. القيمة المسموح بها: رقم عشري مكون من ثلاثة أرقام يتم تمثيله كسلسلة. |
نعم |
language |
اللغة التي يستخدمها نظام SAP. القيمة الافتراضية هي EN . |
لا |
userName |
اسم المستخدم الذي لديه حق الوصول إلى خادم SAP. | نعم |
password |
كلمة المرور للمستخدم. ضع علامة على هذا الحقل SecureString من النوع لتخزينه بشكل آمن، أو قم بالإشارة إلى سر مخزّن في Azure Key Vault. |
نعم |
sncMode |
مؤشر تنشيط SNC للوصول إلى خادم SAP حيث يوجد الجدول. استخدم إذا كنت تريد استخدام SNC للاتصال بخادم SAP. القيم المسموح بها 0 هي (إيقاف التشغيل، الافتراضي) أو 1 (تشغيل). |
لا |
sncMyName |
اسم SNC الخاص بالمبادر للوصول إلى خادم SAP حيث يوجد الجدول. ينطبق عندما يكون sncMode مفعلاً. |
لا |
sncPartnerName |
اسم SNC الخاص بشريك الاتصال للوصول إلى خادم SAP حيث يوجد الجدول. ينطبق عندما يكون sncMode مفعلاً. |
لا |
sncLibraryPath |
مكتبة منتج الأمان الخارجي للوصول إلى خادم SAP حيث يوجد الجدول. ينطبق عندما يكون sncMode مفعلاً. |
لا |
sncQop |
مستوى حماية جودة SNC للتطبيق. ينطبق عندما يكون sncMode مفعلاً. القيم المسموح بها هي 1 (المصادقة) 2 و(التكامل) 3 و(الخصوصية) 8 و(الافتراضي) 9 و(الحد الأقصى). |
لا |
connectVia |
يُستخدم وقت تشغيل التكامل للاتصال بمخزن البيانات. مطلوب وقت تشغيل تكامل مستضاف ذاتياً، كما ذُكر سابقاً في المتطلبات الأساسية. | نعم |
مثال 1: الاتصال بخادم تطبيق SAP
{
"name": "SapTableLinkedService",
"properties": {
"type": "SapTable",
"typeProperties": {
"server": "<server name>",
"systemNumber": "<system number>",
"clientId": "<client ID>",
"userName": "<SAP user>",
"password": {
"type": "SecureString",
"value": "<Password for SAP user>"
}
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
مثال 2: الاتصال بخادم رسائل SAP
{
"name": "SapTableLinkedService",
"properties": {
"type": "SapTable",
"typeProperties": {
"messageServer": "<message server name>",
"messageServerService": "<service name or port>",
"systemId": "<system ID>",
"logonGroup": "<logon group>",
"clientId": "<client ID>",
"userName": "<SAP user>",
"password": {
"type": "SecureString",
"value": "<Password for SAP user>"
}
},
"connectVia": {
"referenceName": "<name of integration runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
مثال 3: الاتصال باستخدام SNC
{
"name": "SapTableLinkedService",
"properties": {
"type": "SapTable",
"typeProperties": {
"server": "<server name>",
"systemNumber": "<system number>",
"clientId": "<client ID>",
"userName": "<SAP user>",
"password": {
"type": "SecureString",
"value": "<Password for SAP user>"
},
"sncMode": 1,
"sncMyName": "<SNC myname>",
"sncPartnerName": "<SNC partner name>",
"sncLibraryPath": "<SNC library path>",
"sncQop": "8"
},
"connectVia": {
"referenceName": "<name of integration runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
لمزيد من المعلومات حول SNC، راجع بدء استخدام SAP SNC لتكاملات RFC - مدونة SAP.
خصائص مجموعة البيانات
للحصول على قائمة كاملة بالأقسام والخصائص لتعريف مجموعات البيانات، راجع مجموعات البيانات. يوفر المقطع التالي قائمة بالخصائص المدعومة من قبل مجموعة بيانات جدول SAP.
لنسخ البيانات من وإلى خدمة SAP BW Open Hub المرتبطة، يتم دعم الخصائص التالية:
الخاصية | الوصف | مطلوب |
---|---|---|
type |
type يجب تعيين الخاصية إلى SapTableResource . |
نعم |
tableName |
اسم جدول SAP لنسخ البيانات منه. | نعم |
مثال
{
"name": "SAPTableDataset",
"properties": {
"type": "SapTableResource",
"typeProperties": {
"tableName": "<SAP table name>"
},
"schema": [],
"linkedServiceName": {
"referenceName": "<SAP table linked service name>",
"type": "LinkedServiceReference"
}
}
}
انسخ خصائص النشاط
للحصول على قائمة كاملة بالأقسام والخصائص لتعريف الأنشطة، راجع التدفقات. يوفر المقطع التالي قائمة بالخصائص المدعومة من قبل مصدر جدول SAP.
جدول SAP كمصدر
لنسخ البيانات من جدول SAP، يتم دعم الخصائص التالية:
الخاصية | الوصف | مطلوب |
---|---|---|
type |
type يجب تعيين الخاصية إلى SapTableSource . |
نعم |
rowCount |
عدد الصفوف المراد استردادها. | لا |
rfcTableFields |
الحقول (الأعمدة) للنسخ من جدول SAP. على سبيل المثال، column0, column1 |
لا |
rfcTableOptions |
خيارات تصفية الصفوف في جدول SAP. على سبيل المثال، COLUMN0 EQ 'SOMEVALUE' راجع أيضاً جدول عامل تشغيل استعلام SAP لاحقاً في هذه المقالة. |
لا |
customRfcReadTableFunctionModule |
وحدة نمطية مخصصة لدالة RFC يمكن استخدامها لقراءة البيانات من جدول SAP. يمكنك استخدام وحدة نمطية مخصصة لدالة RFC لتعريف كيفية استرداد البيانات من نظام SAP لديك وإعادتها إلى الخدمة. يجب أن يكون للوحدة النمطية للدالة المخصصة واجهة مطبقة (استيراد وتصدير وجداول) تشبه /SAPDS/RFC_READ_TABLE2 ، وهي الواجهة الافتراضية المستخدمة بواسطة الخدمة. |
لا |
partitionOption |
آلية التقسيم للقراءة من جدول SAP. تتضمن الخيارات المدعومة ما يلي:
|
لا |
partitionColumnName |
اسم العمود المستخدم لتقسيم البيانات. | لا |
partitionUpperBound |
سيتم استخدام القيمة القصوى للعمود المحدد في partitionColumnName والتي سيتم استخدامها للمتابعة في التقسيم. |
لا |
partitionLowerBound |
سيتم استخدام القيمة الدنيا للعمود المحدد في partitionColumnName والتي سيتم استخدامها للمتابعة في التقسيم. (ملاحظة: partitionLowerBound لا يمكن أن يكون "0" عندما يكون خيار التقسيم PartitionOnInt ) |
لا |
maxPartitionsNumber |
الحد الأقصى لعدد الأقسام الذي سيتم تقسيم البيانات إليه. القيمة الافتراضية هي 1. | لا |
sapDataColumnDelimiter |
تم تمرير الحرف المفرد المستخدم كمحدد إلى SAP RFC لتقسيم بيانات الإخراج. | لا |
تلميح
إذا كان جدول SAP يحتوي على حجم كبير من البيانات، مثل عدة مليارات من الصفوف، فاستخدم partitionOption
وpartitionSetting
لتقسيم البيانات إلى أقسام أصغر. في هذه الحالة، تتم قراءة البيانات لكل قسم، ويتم استرداد كل قسم بيانات من خادم SAP الخاص بك عبر استدعاء RFC واحد.
عند أخذ partitionOption
مثلpartitionOnInt
كمثال، يتم حساب عدد الصفوف في كل قسم بهذه الصيغة: (إجمالي الصفوف التي تقع بين partitionUpperBound
partitionLowerBound
و)/ maxPartitionsNumber
.
لتحميل أقسام البيانات بالتوازي لتسريع النسخ، يتم التحكم في الدرجة المتوازية بواسطة إعداد parallelCopies
على نشاط النسخ. على سبيل المثال، إذا قمت بتعيين parallelCopies
إلى أربعة، تنشئ الخدمة بشكل متزامن وتشغل أربعة استعلامات استناداً إلى خيار القسم المحدد والإعدادات، ويقوم كل استعلام باسترداد جزء من البيانات من جدول SAP الخاص بك. نوصي بشدة بإنشاء maxPartitionsNumber
قيم متعددةparallelCopies
للخاصية. عند نسخ البيانات إلى مخزن البيانات المستندة إلى الملفات، يوصى أيضا بالكتابة إلى مجلد كملفات متعددة (حدد اسم المجلد فقط)، وفي هذه الحالة يكون الأداء أفضل من الكتابة إلى ملف واحد.
تلميح
يتم تمكينBASXML
بشكل افتراضي لموصل جدول SAP هذا داخل الخدمة.
في rfcTableOptions
، يمكنك استخدام عوامل تشغيل استعلام SAP المشتركة التالية لتصفية الصفوف:
عامل | الوصف |
---|---|
EQ |
يساوي |
NE |
لا يساوي |
LT |
أقل من |
LE |
أقل من أو يساوي |
GT |
أكبر من |
GE |
أكبر من أو يساوي |
IN |
كما هو الحال في TABCLASS IN ('TRANSP', 'INTTAB') |
LIKE |
كما هو الحال في LIKE 'Emma%' |
مثال
"activities":[
{
"name": "CopyFromSAPTable",
"type": "Copy",
"inputs": [
{
"referenceName": "<SAP table input dataset name>",
"type": "DatasetReference"
}
],
"outputs": [
{
"referenceName": "<output dataset name>",
"type": "DatasetReference"
}
],
"typeProperties": {
"source": {
"type": "SapTableSource",
"partitionOption": "PartitionOnInt",
"partitionSettings": {
"partitionColumnName": "<partition column name>",
"partitionUpperBound": "2000",
"partitionLowerBound": "1",
"maxPartitionsNumber": 500
}
},
"sink": {
"type": "<sink type>"
},
"parallelCopies": 4
}
}
]
الانضمام إلى جداول SAP
يدعم موصل جدول SAP حالياً جدول واحد فقط مع الوحدة الوظيفية الافتراضية. للحصول على البيانات المشتركة من جداول متعددة، يمكنك تفعيل خاصية customRfcReadTableFunctionModule في موصل جدول SAP باتباع الخطوات التالية:
- اكتب وحدة وظيفية مخصصة، والتي يمكن أن تأخذ استعلاماً كـ OPTIONS وتطبق المنطق الخاص بك لاسترداد البيانات.
- بالنسبة إلى "الوحدة الوظيفة المخصصة"، أدخل اسم الوحدة الوظيفية المخصصة الخاص بك.
- لـ "خيارات جدول RFC"، حدد عبارة ربط الجدول لإدخاله في الوحدة الوظيفية الخاصة بك كـ OPTIONS، مثل "
<TABLE1>
INNER JOIN<TABLE2>
ON COLUMN0".
وفيما يلي مثال على ذلك:
تلميح
يمكنك أيضاً مراعاة وجود البيانات التي تم ضمها مجمعة في VIEW، التي يدعمها موصل جدول SAP. يمكنك أيضاً محاولة استخراج الجداول ذات الصلة للدخول إلى Azure (على سبيل المثال موقع تخزين Azure وقاعدة بيانات Azure SQL)، ثم استخدام تدفق البيانات للاستمرار مع المزيد من الربط أو التصفية.
إنشاء وحدة وظيفية مخصصة
لجدول SAP، حالياً نحن ندعم خاصية customRfcReadTableFunctionModule في مصدر النسخ، والذي يسمح لك بتفعيل المنطق الخاص بك ومعالجة البيانات.
كإرشادات سريعة، إليك بعض المتطلبات للبدء في "الوحدة الوظيفية الخاصة":
التعريف:
تصدير البيانات إلى أحد الجداول أدناه:
فيما يلي توضيحات حول كيفية عمل موصل جدول SAP مع وحدة وظيفية مخصصة:
إنشاء اتصال مع خادم SAP عبر SAP NCO.
استدعاء "وحدة وظيفية مخصصة" مع تعيين المعلمات كما يلي:
- QUERY_TABLE: اسم الجدول الذي قمت بتعيينه في مجموعة بيانات جدول SAP;
- محدِّد: محدِّد تعيين في مصدر جدول SAP;
- ROWCOUNT/الخيار/الحقول: عدد الصفوف/ حقول/ خيار مجمع الذي قمت بتعيينه في مصدر الجدول.
احصل على النتيجة ووزع البيانات بالطرق التالية:
وزِّع القيمة في جدول الحقول للحصول على المخططات.
الحصول على قيم جدول الإخراج لمعرفة الجدول الذي يحتوي على هذه القيم.
احصل على القيم في OUT_TABLE، وقم بتوزيع البيانات ثم اكتبها في المتلقي.
تعيينات نوع البيانات لجدول SAP
عند نسخ البيانات من جدول SAP، يتم استخدام التعيينات التالية من أنواع بيانات جدول SAP إلى أنواع البيانات المؤقتة المستخدمة داخل الخدمة. لمعرفة كيفية تعيين نشاط النسخ لمخطط المصدر ونوع البيانات إلى المتلقي، راجع تعيينات نوع البيانات والمخطط.
نوع SAP ABAP | نوع بيانات مؤقتة للخدمة |
---|---|
C (سلسلة) |
String |
I (عدد صحيح) |
Int32 |
F (تعويم) |
Double |
D (تاريخ) |
String |
T (الوقت) |
String |
P (BCD معبأة، عملة، عشري، كمية) |
Decimal |
N (رقمي) |
String |
X (ثنائي وأولي) |
String |
بحث عن خصائص النشاط
لمعرفة تفاصيل حول الخصائص، تحقق من نشاط البحث.
المحتوى ذو الصلة
للحصول على قائمة بمخازن البيانات المدعومة من نشاط النسخ كمصادر ومتلقين، راجع مخازن البيانات المدعومة.