انضم إلى التحول في رسم خرائط تدفق البيانات

ينطبق على: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 كنسبة مئوية للتطابق بين القيم في الأعمدة التي حددتها.

Fuzzy join

إشعار

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

التكوين

  1. اختر دفق البيانات الذي تنضم إليه في القائمة المنسدلة الدفق الأيمن.
  2. حدد نوع الانضمام
  3. اختر الأعمدة الرئيسية التي تريد المطابقة عليها لحالة الربط. بشكل افتراضي، يبحث تدفق البيانات عن المساواة بين عمود واحد في كل تدفق. للمقارنة عبر قيمة محسوبة، مرر الماوس فوق القائمة المنسدلة للعمود وحدد العمود المحسوب.

Screenshot of join Transformation

الوصلات غير المتساوية

لاستخدام عامل تشغيل شرطي مثل "لا يساوي (! =)" أو "أكبر من (>)" في حالات الربط، غيّر القائمة المنسدلة لعامل التشغيل بين العمودين. تتطلب الصلات غير المتساوية بث واحد على الأقل من الدفقين باستخدام البث الثابت في علامة التبويب تحسين .

Non-equi join

تحسين أداء الانضمام

على عكس دمج الربط في أدوات مثل SSIS، فإن تحويل الربط ليس عملية ربط ودمج إلزامية. لا تتطلب مفاتيح الانضمام الفرز. تحدث عملية الانضمام بناءً على عملية الانضمام المثلى في Spark، إما البث أو ربط جانب الخريطة.

Join Transformation optimize

في عمليات الصلات وعمليات البحث والتحويل الموجود، إذا كان أحد تدفقات البيانات أو كلاهما يتناسب مع ذاكرة العقدة العاملة، فيمكنك تحسين الأداء عن طريق تمكين البث . بشكل افتراضي، سيقرر محرك الشرارة تلقائياً ما إذا كان سيتم بث جانب واحد أم لا. لاختيار جانب البث يدوياً، حدد ثابت .

لا يوصى بتعطيل البث عبر الخيار إيقافما لم تتعرض الصلات لأخطاء انتهاء المهلة.

الانضمام الذاتي

للانضمام الذاتي إلى دفق بيانات مع نفسه، اسم مستعار لتيار موجود مع تحويل محدد. أنشئ فرعا جديدا بالنقر فوق رمز علامة الجمع بجوار التحويل وتحديد فرع جديد. أضف تحويلاً محدداً إلى الاسم المستعار للتيار الأصلي. أضف تحويل صلة واختر الدفق الأصلي كتدفق لليسار والتحويل المحدد كتدفق لليمين.

Self-join

اختبار شروط الانضمام

عند اختبار تحويلات الوصلة بمعاينة البيانات في وضع التصحيح، استخدم مجموعة صغيرة من البيانات المعروفة. عند أخذ عينات من صفوف من مجموعة بيانات كبيرة، لا يمكنك التنبؤ بالصفوف والمفاتيح التي ستتم قراءتها للاختبار. تكون النتيجة غير حتمية، ما يعني أن شروط الانضمام الخاصة بك قد لا تُرجع أي مطابقات.

البرنامج النصي لتدفق البيانات

بناء الجملة

<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_idhack_licensemedallionتطابقت الأعمدة و pickup_datetime في كل دفق. joinTypeهو 'inner'. نحن نقوم بتمكين البث في البث الأيسر فقط، لذا broadcast فإن له قيمة 'left'.

في واجهة المستخدم، يبدو هذا التحول مثل الصورة أدناه:

Screenshot shows the transformation with the Join Settings tab selected and a Join type of Inner.

يوجد البرنامج النصي لتدفق البيانات لهذا التحويل في الجزء أدناه:

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'.

في واجهة المستخدم، يبدو هذا التحول مثل الصورة أدناه:

Screenshot shows the transformation with the Join Settings tab selected and a Join type of Custom (cross).

يوجد البرنامج النصي لتدفق البيانات لهذا التحويل في الجزء أدناه:

LeftStream, RightStream
    join(
        leftstreamcolumn > rightstreamcolumn,
        joinType:'cross',
        broadcast: 'none'
    )~> JoiningColumns

بعد الانضمام إلى البيانات، أنشئ عمودا مشتقا واغرق بياناتك في مخزن بيانات الوجهة.