انضم إلى التحول في رسم خرائط تدفق البيانات
ينطبق على:Azure Data Factory Azure Synapse Analytics
تلميح
جرب Data Factory في Microsoft Fabric، وهو حل تحليلي متكامل للمؤسسات. يغطي Microsoft Fabric كل شيء بدءا من حركة البيانات إلى علم البيانات والتحليلات في الوقت الحقيقي والمعلومات المهنية وإعداد التقارير. تعرف على كيفية بدء إصدار تجريبي جديد مجانا!
تتوفر تدفقات البيانات في كل من Azure Data Factory وخطوط أنابيب Azure Synapse. تنطبق هذه المقالة على تعيين تدفقات البيانات. إذا كنت جديداً في مجال التحويلات، فيرجى الرجوع إلى المقالة التمهيدية تحويل البيانات باستخدام تدفق بيانات التعيين.
استخدم تحويل الوصلة لدمج البيانات من مصدرين أو تدفقات في تدفق بيانات التعيين. سيتضمن دفق الإخراج جميع الأعمدة من كلا المصدرين المتطابقين بناءً على شرط الانضمام.
أنواع الانضمام
يدعم مخطط تدفق البيانات حالياً خمسة أنواع مختلفة من الوصلات.
وصلة داخلية
داخلي ينضم فقط إلى صفوف المخرجات التي لها قيم متطابقة في كلا الجدولين.
اليسار الخارجي
ترجع الوصلة الخارجية اليسرى جميع الصفوف من الدفق الأيسر والسجلات المتطابقة من الدفق الأيمن. إذا لم يكن هناك تطابق لصف من الدفق الأيسر، يتم تعيين أعمدة الإخراج من الدفق الأيمن على NULL. سيكون الناتج هو الصفوف التي يتم إرجاعها بواسطة صلة داخلية بالإضافة إلى الصفوف غير المتطابقة من الدفق الأيسر.
إشعار
أحياناً يفشل محرك Spark الذي تستخدمه تدفقات البيانات بسبب المنتجات الديكارتية المحتملة في شروط الانضمام الخاصة بك. في حالة حدوث ذلك، يمكنك التبديل إلى وصلة مشتركة مخصصة وإدخال شرط الانضمام يدوياً. قد ينتج عن هذا أداء أبطأ في تدفقات البيانات الخاصة بك حيث قد يحتاج محرك التنفيذ إلى حساب كافة الصفوف من كلا جانبي العلاقة ثم تصفية الصفوف.
خارجي إلى اليمين
ترجع الوصلة الخارجية اليمنى جميع الصفوف من الدفق الأيمن والسجلات المتطابقة من الدفق الأيسر. إذا لم يكن هناك تطابق لصف من الدفق الأيمن، يتم تعيين أعمدة الإخراج من الدفق الأيسر على NULL. سيكون الناتج هو الصفوف التي يتم إرجاعها بواسطة وصلة داخلية بالإضافة إلى الصفوف غير المتطابقة من الدفق الأيمن.
خارجي إلى كامل
تؤدي الوصلة الخارجية الكاملة إلى إخراج جميع الأعمدة والصفوف من كلا الجانبين بقيم NULL للأعمدة غير المتطابقة.
وصلة مشتركة مخصصة
تؤدي الوصلة المتقاطعة إلى إخراج المنتج العرضي للتيارين بناءً على الشرط. إذا كنت تستخدم شرطاً غير مساوٍ، فحدد تعبيراً مخصصاً كشرط ربط متبادل. سيكون تدفق الإخراج عبارة عن جميع الصفوف التي تفي بشرط الانضمام.
يمكنك استخدام نوع الصلة هذا للصلات والشروط OR
غير المتساوية.
إذا كنت ترغب في إنتاج منتج ديكارتي كامل بشكل صريح، فاستخدم تحويل العمود المشتق في كل من التدفقين المستقلين قبل الانضمام لإنشاء مفتاح اصطناعي للمطابقة. على سبيل المثال، إنشاء عمود جديد في العمود المشتق في كل دفق يسمى SyntheticKey
وتعيينه يساوي 1
. ثم استخدم a.SyntheticKey == b.SyntheticKey
كتعبير صلة مخصص.
إشعار
تأكد من تضمين عمود واحد على الأقل من كل جانب من علاقتك اليمنى واليسرى في وصلة متقاطعة مخصصة. يؤدي تنفيذ الصلات المتقاطعة بقيم ثابتة بدلاً من الأعمدة من كل جانب إلى إجراء عمليات مسح كاملة لمجموعة البيانات بأكملها، ما يتسبب في ضعف أداء تدفق البيانات.
صلة غامضة
يمكنك اختيار الربط استنادًا إلى منطق الصلة الغامضة بدلاً من مطابقة قيمة العمود الدقيقة، عن طريق تشغيل خيار خانة الاختيار "استخدام المطابقة الغامضة".
- دمج أجزاء النص: استخدم هذا الخيار للبحث عن التطابقات عن طريق إزالة المسافة بين الكلمات. على سبيل المثال، تتم مطابقة Data Factory مع DataFactory عند تمكين هذا الخيار.
- عمود درجة التشابه: اختياريًا، يمكنك أن تختار تخزين درجة المطابقة لكل صف في عمود عن طريق إدخال اسم عمود جديد هنا لتخزين تلك القيمة.
- حد التشابه: اختر قيمة ما بين 60 و100 كنسبة مئوية للتطابق بين القيم في الأعمدة التي حددتها.
إشعار
في الوقت الحالي، تعمل المطابقة الغامضة فقط مع أنواع أعمدة السلسلة ومع أنواع الصلات الخارجية الداخلية والخارجية اليسرى والخارجية الكاملة. يجب إيقاف تشغيل تحسين البث عند استخدام صلات المطابقة الغامضة.
التكوين
- اختر دفق البيانات الذي تنضم إليه في القائمة المنسدلة الدفق الأيمن.
- حدد نوع الانضمام
- اختر الأعمدة الرئيسية التي تريد المطابقة عليها لحالة الربط. بشكل افتراضي، يبحث تدفق البيانات عن المساواة بين عمود واحد في كل تدفق. للمقارنة عبر قيمة محسوبة، مرر الماوس فوق القائمة المنسدلة للعمود وحدد العمود المحسوب.
الوصلات غير المتساوية
لاستخدام عامل تشغيل شرطي مثل "لا يساوي (! =)" أو "أكبر من (>)" في حالات الربط، غيّر القائمة المنسدلة لعامل التشغيل بين العمودين. تتطلب الصلات غير المتساوية بث واحد على الأقل من الدفقين باستخدام البث الثابت في علامة التبويب تحسين .
تحسين أداء الانضمام
على عكس دمج الربط في أدوات مثل SSIS، فإن تحويل الربط ليس عملية ربط ودمج إلزامية. لا تتطلب مفاتيح الانضمام الفرز. تحدث عملية الانضمام بناءً على عملية الانضمام المثلى في Spark، إما البث أو ربط جانب الخريطة.
في عمليات الصلات وعمليات البحث والتحويل الموجود، إذا كان أحد تدفقات البيانات أو كلاهما يتناسب مع ذاكرة العقدة العاملة، فيمكنك تحسين الأداء عن طريق تمكين البث . بشكل افتراضي، سيقرر محرك الشرارة تلقائياً ما إذا كان سيتم بث جانب واحد أم لا. لاختيار جانب البث يدوياً، حدد ثابت .
لا يوصى بتعطيل البث عبر الخيار إيقافما لم تتعرض الصلات لأخطاء انتهاء المهلة.
الانضمام الذاتي
للانضمام الذاتي إلى دفق بيانات مع نفسه، اسم مستعار لتيار موجود مع تحويل محدد. أنشئ فرعا جديدا بالنقر فوق رمز علامة الجمع بجوار التحويل وتحديد فرع جديد. أضف تحويلاً محدداً إلى الاسم المستعار للتيار الأصلي. أضف تحويل صلة واختر الدفق الأصلي كتدفق لليسار والتحويل المحدد كتدفق لليمين.
اختبار شروط الانضمام
عند اختبار تحويلات الوصلة بمعاينة البيانات في وضع التصحيح، استخدم مجموعة صغيرة من البيانات المعروفة. عند أخذ عينات من صفوف من مجموعة بيانات كبيرة، لا يمكنك التنبؤ بالصفوف والمفاتيح التي ستتم قراءتها للاختبار. تكون النتيجة غير حتمية، ما يعني أن شروط الانضمام الخاصة بك قد لا تُرجع أي مطابقات.
البرنامج النصي لتدفق البيانات
بناء الجملة
<leftStream>, <rightStream>
join(
<conditionalExpression>,
joinType: { 'inner'> | 'outer' | 'left_outer' | 'right_outer' | 'cross' }
broadcast: { 'auto' | 'left' | 'right' | 'both' | 'off' }
) ~> <joinTransformationName>
مثال الانضمام الداخلي
المثال أدناه هو تحويل الانضمام المسمى JoinMatchedData
الذي يأخذ الدفق TripData
الأيسر والدفق TripFare
الأيمن . شرط الصلة هو التعبير hack_license == { hack_license} && TripData@medallion == TripFare@medallion && vendor_id == { vendor_id} && pickup_datetime == { pickup_datetime}
الذي يرجع true إذا vendor_id
hack_license
medallion
تطابقت الأعمدة و pickup_datetime
في كل دفق. joinType
هو 'inner'
. نحن نقوم بتمكين البث في البث الأيسر فقط، لذا broadcast
فإن له قيمة 'left'
.
في واجهة المستخدم، يبدو هذا التحول مثل الصورة أدناه:
يوجد البرنامج النصي لتدفق البيانات لهذا التحويل في الجزء أدناه:
TripData, TripFare
join(
hack_license == { hack_license}
&& TripData@medallion == TripFare@medallion
&& vendor_id == { vendor_id}
&& pickup_datetime == { pickup_datetime},
joinType:'inner',
broadcast: 'left'
)~> JoinMatchedData
مثال على الانضمام المشترك المخصص
المثال أدناه هو تحويل الانضمام المسمى JoiningColumns
الذي يأخذ الدفق LeftStream
الأيسر والدفق RightStream
الأيمن . يأخذ هذا التحويل في دفقين ويربط معا جميع الصفوف حيث يكون العمود leftstreamcolumn
أكبر من العمود rightstreamcolumn
. joinType
هو cross
. البث غير ممكن broadcast
له قيمة 'none'
.
في واجهة المستخدم، يبدو هذا التحول مثل الصورة أدناه:
يوجد البرنامج النصي لتدفق البيانات لهذا التحويل في الجزء أدناه:
LeftStream, RightStream
join(
leftstreamcolumn > rightstreamcolumn,
joinType:'cross',
broadcast: 'none'
)~> JoiningColumns
المحتوى ذو الصلة
بعد الانضمام إلى البيانات، أنشئ عمودا مشتقا واغرق بياناتك في مخزن بيانات الوجهة.