محتويات الدورة

Power BI / متوسط: السياق والجودة والوصول / الدرس 10

الدمج والإلحاق وطي الاستعلام والخصوصية

اجمع الجداول المجهزة دون مضاعفة الوقائع، وميز تحويل المصدر عن التقييم المحلي وقرارات الخصوصية.

وقت القراءة التقريبي: 4 دقيقةتاريخ مراجعة المحتوى
في هذه الصفحة

أهداف الدرس

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

اختر عملية الجمع المناسبة

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

افحص تعددية التوسيع

يحفظ الربط الأيسر صف اليسار قبل التوسيع بتخزين مطابقاته داخل جدول متداخل. وقد ينتج توسيع مطابقين من اليمين صفين مقابل واقعة واحدة. يعطي مثال M عمدا المنتج A صفي سمات، فيصبح مجموع الإيراد الموسع 40 بدلا من 30 الأصلية. إنه مثال مقصود لمدخل خاطئ، وليس نموذجا معتمدا. وقد يحذف الربط الداخلي وقائع غير مطابقة بدلا من ذلك. افحص التكرار والحذف معا، ولا تفترض أن دمجا ناجحا يحفظ المجاميع. احسم المفاتيح المكررة وفق قاعدة نسخ العمل؛ فقد يختار حذف نسخة اعتباطية سمة تاريخية خاطئة بصمت.

powerquery مثال غير منفذ لمطابقات مكررة
let
    Sales = #table(type table [Key = text, Amount = number], {{"A", 10}, {"B", 20}}),
    Products = #table(type table [Key = text, Label = text], {{"A", "x"}, {"A", "y"}, {"B", "z"}}),
    Joined = Table.NestedJoin(Sales, {"Key"}, Products, {"Key"}, "Product", JoinKind.LeftOuter),
    Expanded = Table.ExpandTableColumn(Joined, "Product", {"Label"})
in
    Expanded

المبالغ المتوقعة بعد التوسيع10 و10 و20 في ثلاثة صفوف. تعبير M غير منفذ ويوضح عمدا عيب جودة في المفتاح.

افهم الطي دون افتراض حدوثه

يحاول طي الاستعلام ترجمة التحويلات المدعومة إلى عمليات ينفذها مصدر قادر عليها. ويقيم Power Query العمل الآخر. يؤثر دعم الموصل وقدرات المصدر وتسلسل التحويلات في النتيجة. لا يملك مثال #table المحلي مصدرا بعيدا يطوى إليه. قد يقلل الترشيح المبكر البيانات المنقولة عندما يطوى فعلا، لكن اسم خطوة مناسب لا يثبت تنفيذها في المصدر. راجع التشخيص المعني وعقد المصدر في بيئة مصرح بها. لا تنفذ استعلام قاعدة بيانات أو اختبار حمل لمجرد إظهار أن المثال التحريري قد اختبر.

احفظ حدود الخصوصية

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

python مرجع افتراضي لمضاعفة الربط
sales = [("A", 10), ("B", 20)]
products = [("A", "x"), ("A", "y"), ("B", "z")]
expanded = [(key, amount, label) for key, amount in sales for product, label in products if key == product]
print(len(expanded))
print(sum(amount for _, amount, _ in expanded))
الناتج المتوقع
3
40

تكشف ثلاثة صفوف ومجموع40 تكرار واقعة A. لا يتصل المثال بنظام مصدر أو محرك M.

سو الناتج النهائي للجمع

سجل أعداد صفوف المصادر وتفرد المفاتيح والصفوف غير المطابقة وأعداد ما بعد التوسيع ومجاميع المبالغ. اختبر مفاتيح فريدة وأخرى مكررة ومفتاح يسار غير مطابق وعمود إلحاق أعيدت تسميته. احفظ نسب المصدر بما يكفي لتفسير مساهمة كل مدخل في الصفوف. ينفذ المسار تعبير قائمة Python فقط؛ ويبقى الطي وتنفيذ الخصوصية وتقييم Power Query الفعلي غير مختبر. تشرح المراجعة الكاملة تفصيل الناتج وكل مجموع تغير، ولا تعتبر وجود عمود مدمج أو معاينة ناجحة دليلا على بقاء وقائع العمل دون تغيير.

الأخطاء الشائعة وإصلاحها

زيادة الإيراد بعد توسيع دمج المنتجات

لماذا يحدث؟
طابقت عدة صفوف يمين مفتاح واقعة واحدا.
كيف تصلحه؟
احسم عقد مفتاح البعد ونسخه وسو التوسيع.
كيف تتجنب تكراره؟
افحص التفرد والمجاميع قبل الدمج وبعده.

انقسام حقل ملحق إلى عمودين

لماذا يحدث؟
استخدمت المخططات أسماء أعمدة مختلفة.
كيف تصلحه؟
وحد المخطط الموثق قبل الإلحاق وافحص null.
كيف تتجنب تكراره؟
احفظ حالة تغير مخطط للتصديرات الدورية.

تعطيل الخصوصية لإسكات خطأ جمع

لماذا يحدث؟
لم تراجع ثقة المصادر وانتقال القيم.
كيف تصلحه؟
صمم حدود جمع معتمدة بدليل تشخيص افتراضي.
كيف تتجنب تكراره؟
عامل الخصوصية كقرار حوكمة بيانات.

اختبر فهمك

1. لماذا لا يضمن الربط الأيسر بقاء عدد الوقائع بعد التوسيع؟

اعرض الحل المشروح

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

2. هل يثبت مثال #table المحلي طي مرشح مبكر في قاعدة؟

اعرض الحل المشروح

لا، لأنه لا يملك موصلا بعيدا أو خطة تنفيذ في مصدر. يستطيع شرح دلالة التحويل فقط. يحتاج الطي دليلا خاصا بالموصل تحت المصدر الفعلي وشكل الاستعلام الفعلي. ويجب أن يبقى هذا الفحص منفصلا عن صحة النتيجة المحلية وعن اعتماد الخصوصية؛ فقد يصح التحويل حسابيا دون أن ينفذ في المكان المتوقع.

أهم ما تعلمته

  • تحتاج عمليات الجمع عقود تفصيل ومفتاح وتسوية.
  • يحتاج الطي والخصوصية دليلا خاصا بالمصدر.

المراجع الرسمية