إنشاء تعبيرات في تدفق بيانات التعيين
ينطبق على: Azure Data Factory Azure Synapse Analytics
تلميح
جرب Data Factory في Microsoft Fabric، وهو حل تحليلي متكامل للمؤسسات. يغطي Microsoft Fabric كل شيء بدءا من حركة البيانات إلى علم البيانات والتحليلات في الوقت الحقيقي والمعلومات المهنية وإعداد التقارير. تعرف على كيفية بدء إصدار تجريبي جديد مجانا!
في تدفق بيانات التعيين، يتم إدخال العديد من خصائص التحويل كتعبيرات. تتكون هذه التعبيرات من قيم الأعمدة والمعلمات والدالات وعوامل التشغيل والبيانات الحرفية التي يتم تقييمها إلى نوع بيانات Spark في وقت التشغيل. تتمتع تدفقات بيانات التعيين بتجربة مخصصة تهدف إلى مساعدتك في إنشاء هذه التعبيرات التي تسمى منشئ التعبير. باستخدام إكمال تعليمة برمجية IntelliSense للتمييز والتحقق من البنية والإكمال التلقائي، تم تصميم أداة إنشاء التعبيرات لتسهيل تدفق بيانات البناء. توضح هذه المقالة كيفية استخدام منشئ التعبير لبناء منطق عملك بشكل فعال.
فتح منشئ التعبير
هناك نقاط دخول متعددة لفتح منشئ التعبير. تعتمد كلها على السياق المحدد لتحويل تدفق البيانات. حالة الاستخدام الأكثر شيوعاً هي التحويلات مثل العمود المشتق والتجميع حيث يقوم المستخدمون بإنشاء أو تحديث الأعمدة باستخدام لغة تعبير تدفق البيانات. يمكن فتح منشئ التعبير من خلال تحديد فتح منشئ التعبير أعلى قائمة الأعمدة. يمكنك أيضا تحديد سياق عمود وفتح منشئ التعبير مباشرة إلى هذا التعبير.
في بعض التحويلات مثل عامل التصفية، يؤدي النقر فوق مربع نص تعبير أزرق إلى فتح منشئ التعبير.
عند الإشارة إلى الأعمدة في حالة مطابقة أو مجموعة حسب الحالة، يمكن للتعبير استخراج القيم من الأعمدة. لإنشاء تعبير، حدد العمود المحسوب.
في الحالات التي يكون فيها التعبير أو القيمة الحرفية مدخلات صالحة، حدد Add dynamic content لإنشاء تعبير يتم تقييمه إلى قيمة حرفية.
عناصر التعبير
في تعيين تدفقات البيانات، يمكن أن تتكون التعبيرات من قيم العمود والمعلمات والوظائف والمتغيرات المحلية والعوامل والحروف. يجب تقييم هذه التعبيرات إلى نوع بيانات Spark مثل سلسلة أو منطقية أو عدد صحيح.
الوظائف
تحتوي مخططات تدفق البيانات على دالات ومشغلات مضمنة يمكن استخدامها في التعبيرات. للحصول على قائمة بالدالات المتاحة، راجع تعيين مرجع لغة تدفق البيانات.
وظائف من تحديد المستخدم (إصدار أولي)
تخطيط تدفقات البيانات يدعم إنشاء واستخدام وظائف يحددها المستخدم. لمعرفة كيفية إنشاء واستخدام الوظائف التي يحددها المستخدم، راجع الوظائف التي يحددها المستخدم.
فهارس صفيف العناوين
عندما تتعامل مع أعمدة أو دالات ترجع أنواع الصفائف، استخدم الأقواس ([]) للوصول إلى عنصر معين. إذا كان الفهرس غير موجود، يتم تقييم التعبير إلى NULL.
هام
في تعيين تدفقات البيانات، تكون المصفوفات مبنية على أساس واحد بمعنى أن العنصر الأول يشار إليه بالفهرس الأول. على سبيل المثال، سيقوم myArray[1] بالوصول إلى العنصر الأول من مصفوفة تسمى "myArray".
مخطط الإدخال
إذا كان تدفق البيانات الخاص بك يستخدم مخططاً محدداً في أي من مصادره، فيمكنك الرجوع إلى عمود بالاسم في العديد من التعبيرات. إذا كنت تستخدم انحراف المخطط، يمكنك الرجوع إلى الأعمدة بشكل صريح باستخدام byName()
الدالات أو byNames()
أو المطابقة باستخدام أنماط الأعمدة.
أسماء الأعمدة ذات الأحرف الخاصة
عندما يكون لديك أسماء أعمدة تتضمن أحرفاً خاصة أو مسافات، قم بإحاطة الاسم بأقواس معقوفة للإشارة إليها في تعبير.
{[dbo].this_is my complex name$$$}
المعلمات
المعلمات هي القيم التي يتم تمريرها إلى تدفق البيانات في وقت التشغيل من المسار. للإشارة إلى معلمة، حدد المعلمة من طريقة عرض عناصر التعبير أو قم بالإشارة إليها باستخدام علامة الدولار أمام اسمها. على سبيل المثال، تتم الإشارة إلى معلمة تسمى parameter1 بواسطة $parameter1
. لمعرفة المزيد، راجع تحديد معلمات تدفقات بيانات التعيين.
البحث المخزن مؤقتاً
يتيح لك البحث المخزن مؤقتاً إجراء بحث مضمّن لإخراج مصدر مخزن مؤقتاً. هناك وظيفتان متاحتان للاستخدام في كل متلقي، lookup()
وoutputs()
. بناء الجملة للإشارة إلى هذه الدالات هو cacheSinkName#functionName()
. لمزيد من المعلومات، راجع ملتقى التخزين المؤقت.
يأخذ lookup()
الأعمدة المتطابقة في التحويل الحالي كمعلمات ويعيد عموداً معقداً يساوي الصف المطابق للأعمدة الرئيسية في مخزن ذاكرة التخزين المؤقت. يحتوي العمود المعقد الذي تم إرجاعه على عمود فرعي لكل عمود تم تعيينه في مخزن التخزين المؤقت. على سبيل المثال، إذا كان لديك مصدر ذاكرة تخزين مؤقت لتعليمة برمجية خطأ errorCodeCache
يحتوي على عمود مفتاح مطابق للتعليمة البرمجية وعمود يسمى Message
. سيؤدي الاتصال بـ errorCodeCache#lookup(errorCode).Message
إلى إرجاع الرسالة المقابلة للتعليمة البرمجية التي تم تمريرها.
لا يأخذoutputs()
أي معلمات ويعيد مصدر التخزين المؤقت بأكمله كصفيف من الأعمدة المعقدة. لا يمكن استدعاء هذا إذا تم تحديد أعمدة المفاتيح في المتلقي ويجب استخدامها فقط إذا كان هناك عدد قليل من الصفوف في متلقي ذاكرة التخزين المؤقت. حالة الاستخدام الشائعة هي إلحاق القيمة القصوى لمفتاح متزايد. إذا احتوى صف مجمع واحد تم تخزينه مؤقتاً CacheMaxKey
على عمودMaxKey
، فيمكنك الرجوع إلى القيمة الأولى عن طريق استدعاء CacheMaxKey#outputs()[1].MaxKey
.
القيم المحلية
إذا كنت تشارك المنطق عبر أعمدة متعددة أو تريد تقسيم المنطق الخاص بك، يمكنك إنشاء متغير محلي. العمود المحلي هو مجموعة من المنطق الذي لا يحصل على نشر انتقال البيانات من الخادم إلى التحويل التالي. يمكن إنشاء الأعمدة المحلية داخل منشيء التعبير عن طريق الانتقال إلى Expression elements وتحديد Locals. أنشئ مجموعة الموارد عن طريق تحديد Create new.
يمكن للسكان المحليين الإشارة إلى أي عنصر تعبير بما في ذلك الوظائف ومخطط الإدخال والمعلمات والمواقع المحلية الأخرى. عند الرجوع إلى الأعمدة المحلية الأخرى، لا يهم الترتيب حيث يجب أن يكون العمود المحلي المُشار إليه «أعلى» من الحالي.
للإشارة إلى محلي في تحويل، حدد المحلي من طريقة عرض عناصر التعبير أو قم بالإشارة إليه باستخدام علامة النقطتين أمام اسمه. على سبيل المثال، سيتم الإشارة إلى محلي يسمى local1 بواسطة :local1
. لتحرير تعريف محلي، مرر الماوس فوقه في طريقة عرض عناصر التعبير وحدد أيقونة القلم الرصاص.
معاينة نتائج التعبير
إذا تم تشغيل وضع التصحيح، فيمكنك استخدام مجموعة تصحيح الأخطاء بشكل تفاعلي لمعاينة ما يقيّمه التعبير الخاص بك. حدد Refresh بجوار معاينة البيانات لتحديث نتائج معاينة البيانات. يمكنك مشاهدة مخرجات كل صف بالنظر إلى أعمدة الإدخال.
استيفاء السلسلة
عند إنشاء سلاسل طويلة تستخدم عناصر التعبير، استخدم استنتاج السلسلة لبناء منطق سلسلة معقد بسهولة. يتجنب الاستنتاج الداخلي للسلسلة الاستخدام المكثف لتسلسل السلسلة عندما يتم تضمين المعلمات في سلاسل الاستعلام. استخدم علامات الاقتباس المزدوجة لإحاطة نص السلسلة الحرفية مع التعبيرات. يمكنك تضمين دالات التعبير والأعمدة والمعلمات. لاستخدام صيغة التعبير، قم بتضمينها بأقواس معقوفة،
بعض الأمثلة على استنتاج السلسلة:
"My favorite movie is {iif(instr(title,', The')>0,"The {split(title,', The')[1]}",title)}"
"select * from {$tablename} where orderyear > {$year}"
"Total cost with sales tax is {round(totalcost * 1.08,2)}"
"{:playerName} is a {:playerRating} player"
إشعار
عند استخدام صيغة استنتاج السلسلة في استعلامات مصدر SQL، يجب أن تكون سلسلة الاستعلام في سطر واحد، دون '/n'.
التعليق على التعبيرات
أضف تعليقات إلى تعبيراتك باستخدام صيغة تعليق أحادية السطر ومتعددة الأسطر.
الأمثلة التالية هي تعليقات صحيحة:
/* This is my comment */
/* This is a
multi-line comment */
إذا قمت بوضع تعليق في الجزء العلوي من التعبير الخاص بك، فإنه يظهر في مربع نص التحويل لتوثيق تعبيرات التحويل الخاصة بك.
التعبيرات العادية
تستخدم العديد من دالات لغة التعبير بناء جملة التعبير العادي. عند استخدام وظائف التعبير العادي، يحاول Expression Builder تفسير الشرطة المائلة للخلف (\) كتسلسل أحرف هروب. عند استخدام الشرطة المائلة للخلف في تعبيرك العادي، قم إما بتضمين التعبير العادي بأكمله في علامة (`) أو استخدم شرطة مائلة للخلف مزدوجة.
مثال يستخدم الفاصلة العليا المائلة:
regex_replace('100 and 200', `(\d+)`, 'digits')
مثال يستخدم الشرطة المائلة المزدوجة:
regex_replace('100 and 200', '(\\d+)', 'digits')
اختصارات لوحة المفاتيح
فيما يلي قائمة بالاختصارات المتوفرة في منشئ التعبير. تتوفر معظم اختصارات Intellisense عند إنشاء التعبيرات.
- Ctrl+K Ctrl+C: تعليق سطر كامل.
- Ctrl+K Ctrl+U: إلغاء التعليق.
- F1: توفير أوامر تعليمات المحرر.
- Alt+مفتاح السهم لأسفل: تحريك الخط الحالي لأسفل.
- Alt+مفتاح السهم لأعلى: تحريك السطر الحالي لأعلى.
- Ctrl+مفتاح المسافة: إظهار تعليمات السياق.
التعبيرات شائعة الاستخدام
التحويل إلى التواريخ أو الطوابع الزمنية
لتضمين سلسلة حرفية في إخراج الطابع الزمني، قم بلف التحويل في toString()
.
toString(toTimestamp('12/31/2016T00:12:00', 'MM/dd/yyyy\'T\'HH:mm:ss'), 'MM/dd /yyyy\'T\'HH:mm:ss')
لتحويل المللي ثانية من حقبة إلى تاريخ أو طابع زمني، استخدم toTimestamp(<number of milliseconds>)
. إذا حان الوقت بالثواني، اضرب في 1000.
toTimestamp(1574127407*1000l)
يشير الحرف اللاحق "l" في نهاية التعبير السابق إلى التحويل إلى نوع طويل مثل بناء جملة مضمّن.
ابحث عن وقت من الحقبة أو وقت Unix
toLong( currentTimestamp() - toTimestamp('1970-01-01 00:00:00.000', 'yyyy-MM-dd HH:mm:ss.SSS') ) * 1000l
تقييم وقت تدفق البيانات
عمليات تدفق البيانات حتى ميلي ثانية. بالنسبة إلى 2018-07-31T20:00:00.2170000، سترى 2018-07-31T20:00:00.217 في الإخراج. في مدخل الخدمة، يتم عرض الطابع الزمني في إعداد المستعرض الحالي، والذي يمكن أن يلغي 217، ولكن عند تشغيل تدفق البيانات من البداية إلى النهاية، 217 (تتم معالجة جزء المللي ثانية أيضا). يمكنك استخدام toString (myDateTimeColumn) كتعبير ومشاهدة بيانات الدقة الكاملة في المعاينة. معالجة التاريخ والوقت كتاريخ ووقت بدلاً من سلسلة لجميع الأغراض العملية.