تحويل البيانات باستخدام نشاط البرنامج النصي في Azure Data Factory أو Synapse Analytics

ينطبق على: Azure Data Factory Azure Synapse Analytics

تلميح

جرب Data Factory في Microsoft Fabric، وهو حل تحليلي متكامل للمؤسسات. يغطي Microsoft Fabric كل شيء بدءا من حركة البيانات إلى علم البيانات والتحليلات في الوقت الحقيقي والمعلومات المهنية وإعداد التقارير. تعرف على كيفية بدء إصدار تجريبي جديد مجانا!

يُمكنك استخدام أنشطة تحويل البيانات في مسار Synapse أو Data Factory لتحويل البيانات الأولية ومعالجتها إلى تنبؤات ونتائج معرفية. يعد نشاط البرنامج النصي أحد أنشطة التحويل التي تدعمها البنى الأساسية. تعتمد هذه المقالة على مقالة تحويل البيانات، والتي تقدم نظرة عامة على تحويل البيانات وأنشطة التحويل المدعومة.

باستخدام نشاط البرنامج النصي، يمكنك تنفيذ العمليات الشائعة باستخدام لغة معالجة البيانات (DML) ولغة تعريف البيانات (DDL). تسمح عبارات DML مثل INSERT وUPDATE وDELETE وSELECT للمستخدمين بإدراج البيانات وتعديلها وحذفها واستردادها في قاعدة البيانات. تسمح عبارات DDL مثل CREATE وALTER وDROP لمدير قاعدة البيانات بإنشاء كائنات قاعدة البيانات وتعديلها وإزالتها مثل الجداول والفهارس والمستخدمين.

يمكنك استخدام نشاط البرنامج النصي لاستدعاء برنامج نصي SQL في أحد مخازن البيانات التالية في مؤسستك أو على جهاز Azure ظاهري (VM):

  • قاعدة بيانات Azure SQL
  • Azure Synapse Analytics
  • قاعدة بيانات Microsoft SQL Server. إذا كنت تستخدم SQL Server، قم بتثبيت وقت تشغيل التكامل المستضاف ذاتياً على نفس الجهاز الذي يستضيف قاعدة البيانات أو على جهاز منفصل لديه حق الوصول إلى قاعدة البيانات. وقت تشغيل التكامل المستضاف ذاتياً هو مكوّن يربط مصادر البيانات المحلية / على جهاز Azure الظاهري بالخدمات السحابية بطريقة آمنة ومُدارة. راجع مقالة وقت تشغيل التكامل المستضاف ذاتيًا للحصول على التفاصيل.
  • Oracle
  • Snowflake

قد يحتوي البرنامج النصي إما على عبارة SQL واحدة أو عبارات SQL متعددة يتم تشغيلها بشكل تسلسلي. يمكنك استخدام مهمة البرنامج النصي للأغراض التالية:

  • اقتطاع جدول استعدادًا لإدراج البيانات.
  • إنشاء كائنات قاعدة البيانات وتغييرها وإسقاطها مثل الجداول وطرق العرض.
  • أعد إنشاء جداول الحقائق والأبعاد قبل تحميل البيانات فيها.
  • تشغيل الإجراءات المخزنة. إذا استدعت عبارة SQL إجراء مخزنًا يرجع النتائج من جدول مؤقت، فاستخدم الخيار WITH RESULT SETS لتعريف بيانات التعريف لمجموعة النتائج.
  • احفظ مجموعة الصفوف التي تم إرجاعها من استعلام كإخراج نشاط لاستهلاك انتقال البيانات من الخادم.

تفاصيل بناء الجملة

إليك تنسيق JSON لتعريف نشاط البرنامج النصي:

{ 
   "name": "<activity name>", 
   "type": "Script", 
   "linkedServiceName": { 
      "referenceName": "<name>", 
      "type": "LinkedServiceReference" 
    }, 
   "typeProperties": { 
      "scripts" : [ 
         { 
            "text": "<Script Block>", 
            "type": "<Query> or <NonQuery>", 
            "parameters":[ 
               { 
                  "name": "<name>", 
                  "value": "<value>", 
                  "type": "<type>", 
                  "direction": "<Input> or <Output> or <InputOutput>", 
                  "size": 256 
               }, 
               ... 
            ] 
         }, 
         ... 
      ],     
         ... 
         ] 
      }, 
      "scriptBlockExecutionTimeout": "<time>",  
      "logSettings": { 
         "logDestination": "<ActivityOutput> or <ExternalStore>", 
         "logLocationSettings":{ 
            "linkedServiceName":{ 
               "referenceName": "<name>", 
               "type": "<LinkedServiceReference>" 
            }, 
            "path": "<folder path>" 
         } 
      } 
    } 
} 

يصف الجدول التالي خصائص JSON هذه:

اسم الخاصية ‏‏الوصف مطلوب
الاسم اسم النشاط. ‏‏نعم‬
النوع نوع النشاط، مضبوطًا على "برنامج نصي". ‏‏نعم‬
typeProperties حدد خصائص لتكوين نشاط البرنامج النصي. ‏‏نعم‬
linkedServiceName قاعدة البيانات الهدف التي يعمل عليها البرنامج النصي. يجب أن يكون مرجعًا إلى خدمة مرتبطة. ‏‏نعم‬
برامج نصية صفيف من الكائنات لتمثيل البرنامج النصي. لا
scripts.text النص العادي لكتلة الاستعلامات. لا
scripts.type نوع كتلة الاستعلامات. يمكن أن يكون Query أو NonQuery. الافتراضي: استعلام. لا
scripts.parameter صفيف معلمات البرنامج النصي. لا
scripts.parameter.name اسم المعلمة. لا
scripts.parameter.value قيمة المعلمة. لا
scripts.parameter.type نوع بيانات المعلمة. النوع هو نوع منطقي ويتبع تعيين النوع لكل موصل. لا
scripts.parameter.direction اتجاه المعلمة. يمكن أن يكون الإدخال، الإخراج، InputOutput. يتم تجاهل القيمة إذا كان الاتجاه هو Output. نوع ReturnValue غير معتمد. قم بتعيين القيمة المرجعة SP إلى معلمة إخراج لاستردادها. لا
scripts.parameter.size الحد الأقصى لحجم المعلمة. ينطبق فقط على معلمة اتجاه Output/InputOutput من سلسلة/بايت النوع[]. لا
scriptBlockExecutionTimeout وقت الانتظار حتى تكتمل عملية تنفيذ كتلة البرنامج النصي قبل انتهاء المهلة. لا
logSettings الإعدادات لتخزين سجلات الإخراج. إذا لم يتم تحديده، يتم تعطيل سجل البرنامج النصي. لا
logSettings.logDestination وجهة إخراج السجل. يمكن أن يكون ActivityOutput أو ExternalStore. الافتراضي: ActivityOutput. لا
logSettings.logLocationSettings إعدادات الموقع الهدف إذا كان logDestination هو ExternalStore. لا
logSettiongs.logLocationSettings.linkedServiceName الخدمة المرتبطة للموقع الهدف. يتم دعم تخزين الكائن الثنائي كبير الحجم فقط. لا
logSettings.logLocationSettings.path مسار المجلد الذي سيتم تخزين السجلات ضمنه. لا

إخراج النشاط

عينة الإخراج:

{ 
    "resultSetCount": 2, 
    "resultSets": [ 
        { 
            "rowCount": 10, 
            "rows":[ 
                { 
                    "<columnName1>": "<value1>", 
                    "<columnName2>": "<value2>", 
                    ... 
                } 
            ] 
        }, 
        ... 
    ], 
    "recordsAffected": 123, 
    "outputParameters":{ 
        "<parameterName1>": "<value1>", 
        "<parameterName2>": "<value2>" 
    }, 
    "outputLogs": "<logs>", 
    "outputLogsLocation": "<folder path>", 
    "outputTruncated": true, 
    ... 
} 
اسم الخاصية ‏‏الوصف الحالة
resultSetCount عدد مجموعات النتائج التي تم إرجاعها بواسطة البرنامج النصي. دائمًا
resultSets الصفيف الذي يحتوي على جميع مجموعات النتائج. دائمًا
resultSets.rowCount السجلات الإجمالية في مجموعة النتائج. دائمًا
resultSets.rows صفيف الصفوف في مجموعة النتائج. دائمًا
recordsAffected عدد السجلات المتأثرة بالبرنامج النصي. إذا كان scriptType هو NonQuery.
outputParameters معلمات الإخراج للبرنامج النصي. إذا كان نوع المعلمة هو Output أو InputOutput.
outputLogs السجلات المكتوبة بواسطة البرنامج النصي، على سبيل المثال، عبارة الطباعة. إذا كان الموصل يدعم عبارة السجل وكان enableScriptLogs صحيحًا ولم يتم توفير logLocationSettings.
outputLogsPath مسار كامل لملف السجل. إذا كان enableScriptLogs صحيحًا وتم توفير logLocationSettings.
outputTruncated مؤشر ما إذا كان الإخراج يتجاوز الحدود والحصول على اقتطاع. إذا تجاوز الإخراج الحدود.

إشعار

  • يتم جمع الإخراج في كل مرة يتم فيها تنفيذ كتلة برنامج نصي. الإخراج النهائي هو النتيجة المدمجة لجميع مخرجات كتلة البرنامج النصي. سيتم الكتابة فوق معلمة الإخراج بنفس الاسم في كتلة برنامج نصي مختلفة.
  • نظرًا لأن الإخراج يحتوي على قيود الحجم/الصفوف، سيتم اقتطاع الإخراج بالترتيب التالي: السجلات -> المعلمات -> الصفوف. ملاحظة، ينطبق هذا على كتلة برنامج نصي واحد، ما يعني أن صفوف الإخراج الخاصة بكتلة البرنامج النصي التالية لن تخلي السجلات السابقة.
  • لن يفشل أي خطأ يحدث بسبب السجل في النشاط.
  • لاستهلاك نتائج إخراج resultSets في نشاط الدفق للأسفل، يرجى الرجوع إلى وثائق نتيجة نشاط البحث.
  • استخدم outputLogs عند استخدام عبارات "PRINT" لغرض التسجيل. إذا أرجع الاستعلام resultSets، فسيكون متوفرا في إخراج النشاط وسيقتصر على 5000 صف/ حد حجم 4 ميغابايت.

تكوين نشاط البرنامج النصي باستخدام واجهة المستخدم

Inline script

لقطة شاشة تعرض واجهة المستخدم لتكوين برنامج نصي مضمن.

تتكامل البرامج النصية المضمنة بشكل جيد مع البنية الأساسية CI/CD إذ يتم تخزين البرنامج النصي كجزء من بيانات تعريف البنية الأساسية.

تسجيل الدخول

لقطة شاشة تعرض واجهة المستخدم لإعدادات التسجيل لبرنامج نصي.

خيارات التسجيل:

  • تعطيل - لم يتم تسجيل أي إخراج تنفيذ.
  • إخراج النشاط - يتم إلحاق إخراج تنفيذ البرنامج النصي بإخراج النشاط. يمكن استهلاكه من أنشطة انتقال البيانات من الخادم. يقتصر حجم الإخراج على 4 ميغابايت.
  • التخزين الخارجي - استمرار الإخراج إلى التخزين. استخدم هذا الخيار إذا كان حجم الإخراج أكبر من 2 ميغابايت أو كنت ترغب في استمرار الإخراج بشكل صريح على حساب التخزين الخاص بك.

إشعار

الفواتير - سيتم فوترة نشاط البرنامج النصي كأنشطة البنية الأساسية.

راجع المقالات التالية التي تشرح كيفية تحويل البيانات بطرق أخرى: