نسخ البيانات من جدول 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 الافتراضي أو المخصص.

الإصدار 7.01 أو أحدث يشير إلى إصدار SAP NetWeaver بدلاً من إصدار SAP ECC. على سبيل المثال، يحتوي SAP ECC 6.0 EHP 7 بشكل عام على إصدار NetWeaver> =7.4. في حال كنت غير متأكد من البيئة الخاصة بك، إليك خطوات تأكيد الإصدار من نظام SAP الخاص بك:

  1. استخدم SAP GUI للاتصال بنظام SAP.
  2. انتقل إلى System ->Status.
  3. تحقق من إصدار SAP_BASIS، تأكد من أنه يساوي أو أكبر من 701.
    Check SAP_BASIS

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

لاستخدام موصل جدول SAP هذا، تحتاج إلى:

  • إعداد وقت تشغيل تكامل مستضاف ذاتياً (الإصدار 3.17 أو أحدث). للمزيد من المعلومات، راجع إنشاء وتكوين وقت تشغيل التكامل ذاتي الاستضافة.

  • قم بتحميل موصل SAP 64 بت لـ Microsoft.NET 3.0 من موقع SAP وتثبيته على جهاز وقت تشغيل التكامل المستضاف ذاتياً. أثناء التثبيت، تأكد من تحديد الخيار Install Assemblies to GAC في النافذة Optional setup steps.

    Install SAP Connector for .NET

  • يجب أن يكون لدى مستخدم SAP الذي يتم استخدامه في موصل جدول SAP الأذونات التالية:

    • التخويل لاستخدام وجهات استدعاء الدالة البعيدة (RFC).
    • أذونات تنفيذ نشاط كائن التخويل S_SDSAUTH. يمكنك الرجوع إلى SAP Note 460089 على كائنات تخويل الأغلبية. بعض RFCs مطلوبة بواسطة موصل NCo الأساسي، على سبيل المثال RFC_FUNCTION_SEARCH.

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

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

إنشاء خدمة مرتبطة بجدول SAP باستخدام واجهة المستخدم

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

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

  2. ابحث عن SAP وحدد موصل جدول SAP.

    Screenshot of the SAP table connector.

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

    Screenshot of configuration for an SAP table linked service.

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

توفر المقاطع التالية تفاصيل حول الخصائص المستخدمة لتعريف الكيانات الخاصة بموصل جدول 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"
        }
    }
}

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

للحصول على قائمة كاملة بالأقسام والخصائص لتعريف مجموعات البيانات، راجع مجموعات البيانات. يوفر المقطع التالي قائمة بالخصائص المدعومة من قبل مجموعة بيانات جدول 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. تتضمن الخيارات المدعومة ما يلي:
  • None
  • PartitionOnInt (عدد صحيح عادي أو قيم عدد صحيح مع صفر الحشو على اليسار، مثل 0000012345)
  • PartitionOnCalendarYear (4 أرقام في شكل "YYYY")
  • PartitionOnCalendarMonth (6 أرقام في شكل "YYYYMM")
  • PartitionOnCalendarDate (8 أرقام في شكل "YYYYMMDD")
  • PartitionOntime (6 أرقام بالتنسيق "HHMMSS"، مثل 235959)
لا
partitionColumnName اسم العمود المستخدم لتقسيم البيانات. لا
partitionUpperBound سيتم استخدام القيمة القصوى للعمود المحدد في partitionColumnName والتي سيتم استخدامها للمتابعة في التقسيم. لا
partitionLowerBound سيتم استخدام القيمة الدنيا للعمود المحدد في partitionColumnName والتي سيتم استخدامها للمتابعة في التقسيم. (ملاحظة: partitionLowerBound لا يمكن أن يكون "0" عندما يكون خيار التقسيم PartitionOnInt) لا
maxPartitionsNumber الحد الأقصى لعدد الأقسام الذي سيتم تقسيم البيانات إليه. القيمة الافتراضية هي 1. لا
sapDataColumnDelimiter تم تمرير الحرف المفرد المستخدم كمحدد إلى SAP RFC لتقسيم بيانات الإخراج. لا

تلميح

إذا كان جدول SAP يحتوي على حجم كبير من البيانات، مثل عدة مليارات من الصفوف، فاستخدم partitionOption وpartitionSetting لتقسيم البيانات إلى أقسام أصغر. في هذه الحالة، تتم قراءة البيانات لكل قسم، ويتم استرداد كل قسم بيانات من خادم SAP الخاص بك عبر استدعاء RFC واحد.

عند أخذ partitionOption مثلpartitionOnInt كمثال، يتم حساب عدد الصفوف في كل قسم بهذه الصيغة: (إجمالي الصفوف التي تقع بين partitionUpperBoundpartitionLowerBound و)/ 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".

وفيما يلي مثال على ذلك:

Sap Table Join

تلميح

يمكنك أيضاً مراعاة وجود البيانات التي تم ضمها مجمعة في VIEW، التي يدعمها موصل جدول SAP. يمكنك أيضاً محاولة استخراج الجداول ذات الصلة للدخول إلى Azure (على سبيل المثال موقع تخزين Azure وقاعدة بيانات Azure SQL)، ثم استخدام تدفق البيانات للاستمرار مع المزيد من الربط أو التصفية.

إنشاء وحدة وظيفية مخصصة

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

كإرشادات سريعة، إليك بعض المتطلبات للبدء في "الوحدة الوظيفية الخاصة":

  • التعريف:

    Definition

  • تصدير البيانات إلى أحد الجداول أدناه:

    Export table 1

    Export table 2

فيما يلي توضيحات حول كيفية عمل موصل جدول SAP مع وحدة وظيفية مخصصة:

  1. إنشاء اتصال مع خادم SAP عبر SAP NCO.

  2. استدعاء "وحدة وظيفية مخصصة" مع تعيين المعلمات كما يلي:

    • QUERY_TABLE: اسم الجدول الذي قمت بتعيينه في مجموعة بيانات جدول SAP;
    • محدِّد: محدِّد تعيين في مصدر جدول SAP;
    • ROWCOUNT/الخيار/الحقول: عدد الصفوف/ حقول/ خيار مجمع الذي قمت بتعيينه في مصدر الجدول.
  3. احصل على النتيجة ووزع البيانات بالطرق التالية:

    1. وزِّع القيمة في جدول الحقول للحصول على المخططات.

      Parse values in Fields

    2. الحصول على قيم جدول الإخراج لمعرفة الجدول الذي يحتوي على هذه القيم.

      Get values in output table

    3. احصل على القيم في OUT_TABLE، وقم بتوزيع البيانات ثم اكتبها في المتلقي.

تعيينات نوع البيانات لجدول SAP

عند نسخ البيانات من جدول SAP، يتم استخدام التعيينات التالية من أنواع بيانات جدول SAP إلى أنواع البيانات المؤقتة المستخدمة داخل الخدمة. لمعرفة كيفية تعيين نشاط النسخ لمخطط المصدر ونوع البيانات إلى المتلقي، راجع تعيينات نوع البيانات والمخطط.

نوع SAP ABAP نوع بيانات مؤقتة للخدمة
C (سلسلة) String
I (عدد صحيح) Int32
F (تعويم) Double
D (تاريخ) String
T (الوقت) String
P (BCD معبأة، عملة، عشري، كمية) Decimal
N (رقمي) String
X (ثنائي وأولي) String

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

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

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