وحدة BI — لوحات المعلومات والتحليلات (BI Module — Dashboards & Analytics)
تتيح لك وحدة BI في Nama ERP بناء لوحات معلومات تفاعلية تحوّل بياناتك المباشرة إلى مخططات وعدادات وجداول وغير ذلك. المخططات تتواصل مع بعضها عبر الفلاتر المتقاطعة (cross-filters) ونوافذ التفاصيل (drill-down) والروابط المباشرة — لذلك لوحاتك ليست صوراً ثابتة، بل أدوات استكشاف يمكن لفريقك النقر خلالها للوصول إلى الإجابات.
يرشدك هذا الدليل عبر كل ما تستطيع وحدة BI القيام به، من مصمم المخططات إلى التفاعلات المتقدمة مثل drill-down والفلتر المتقاطع. إذا كنت تبحث عن هياكل JSON وأنماط SQL وتنسيقات الاستيراد اللازمة لبناء لوحات المعلومات برمجياً، راجع المرجع التقني.
ما الذي ستحصل عليه
الإعداد الاعتيادي للـ BI في Nama ERP يبدو كما يلي:
- لوحات المعلومات (Dashboards) — تخطيطات شبكية تحوي عدة widgets جنباً إلى جنب
- Widgets — مخططات أو جداول أو بطاقات فردية تسحب كل منها البيانات من استعلام SQL
- الفلاتر المتقاطعة (Cross-Filters) — معاملات فلترة مشتركة (الفرع، نطاق التاريخ، العميل، إلخ) تشرّح البيانات عبر جميع الـ widgets دفعة واحدة
- Drill-Down — اضغط على نقطة بيانات لفتح مخطط أو لوحة معلومات مرتبطة، مفلترة مسبقاً لسياق تلك النقطة
- الروابط (Links) — اضغط على نقطة بيانات للانتقال مباشرة إلى السجل الأصلي (مثل: فتح شاشة تعديل العميل)
أنواع المخططات (Chart Types)
تأتي الوحدة بـ 41 قالب مخطط جاهز للاستخدام موزعة على 11 تصنيفاً. لا تحتاج إلى ضبط ECharts JSON من الصفر — اختر قالباً، وصوّبه على بياناتك، وخصّص المظهر.
مخططات الأعمدة (Bar Charts) — 10 قوالب
عمود منفرد، أعمدة مجمّعة (مقارنة جانبية)، مكدّسة، مكدّسة 100%، أفقية، أفقية مكدّسة، إيجابي/سلبي، شلال (waterfall)، مقارنة بالفترة السابقة، وأعمدة أفقية مرتبة تنازلياً.
مخططات الخطوط (Line Charts) — 6 قوالب
خط منفرد، متعدد السلاسل، خط متدرج (القيم تبقى ثابتة بين النقاط)، محور Y مزدوج (لمقارنة مقاييس مختلفة مثل الإيراد مقابل الكمية)، خط مع خط مرجعي منقّط، وخط مع شريط تكبير/تصغير (data-zoom) للنطاقات الزمنية الكبيرة.
مخططات المساحة (Area Charts) — 4 قوالب
مساحة أساسية، مساحة مكدّسة، مساحة بتعبئة متدرجة، ومساحة نطاقية.
مخططات الدائرة والحلقة (Pie & Donut Charts) — 6 قوالب
دائرة قياسية، حلقة (donut)، حلقة مع تسمية مركزية، دائرة وردية (rose — حجم الشريحة بالمساحة لا بالزاوية)، دائرة نصف دائرة، ودائرة متداخلة متعددة المستويات.
مخططات العدادات (Gauge Charts) — 3 قوالب
عداد عقرب قياسي، عداد حلقي، وعداد متعدد الحلقات (مؤشرات متحدة المركز).
مخططات مركبة (Combination Charts) — 2 قوالب
أعمدة + خط، وأعمدة + مساحة — مفيدة عندما تريد عرض الإجماليات كأعمدة والاتجاه كخط على نفس المخطط.
مخططات التشتت والفقاعات (Scatter & Bubble) — 2 قوالب
مخطط تشتت XY ومخطط فقاعي (حجم الفقاعة يمثّل بُعداً ثالثاً).
مخططات الرادار (Radar Charts) — 2 قوالب
رادار مضلّع ورادار مملوء — مثالي لمقارنة مقاييس متعددة عبر التصنيفات (مثل بطاقات KPI).
مخططات القمع (Funnel Charts) — 2 قوالب
قمع قياسي (مراحل التحويل) وقمع مقارن.
Treemap — 1 قالب
مخطط مستطيلات هرمي لعلاقات الجزء إلى الكل.
Heatmap — 1 قالب
تصور مصفوفي بشدة اللون — مفيد لأنماط وقت اليوم، وتحليل المنطقة × المنتج، وما شابه من تحليلات ثنائية الأبعاد.
مصمم المخططات (The Chart Designer)
مصمم المخططات هو الحوار الذي تفتحه عند إنشاء أو تعديل إعداد مخطط widget. له حالتان:
الحالة A — معرض القوالب (Template Gallery)
عند البدء بـ widget فارغ، يفتح المصمم في وضع المعرض. ترى شبكة قابلة للبحث من جميع الـ 41 قالباً، كل منها مُصيَّر كمخطط مصغّر حي لترى تماماً ما ستختار. يمكنك:
- البحث بالاسم (مثل: اكتب "stacked" للفلترة على النسخ المكدّسة)
- الفلترة حسب التصنيف باستخدام الرقائق (chips) في الأعلى (Bar، Line، Pie، إلخ)
- النقر على قالب لاختياره والانتقال إلى المحرر
- البدء من الصفر (Start Blank) إذا أردت بناء مخطط من canvas فارغ
الحالة B — محرر المخطط (Chart Editor)
بعد اختيار قالب (أو فتح widget موجود)، تنتقل إلى المحرر. هنا تربط بياناتك، وتضبط مظهر المخطط، وتهيّئ التفاعلات. المحرر مقسّم إلى منطقة النموذج على اليسار ومعاينة حية على اليمين — كل تغيير تجريه يحدّث المعاينة فوراً.
في أعلى المحرر، شريط نوع المخطط يُظهر 11 زر أيقونة (واحد لكل تصنيف). النقر على أحدها يبدّل نوع المخطط مع الإبقاء على ربط البيانات حيثما أمكن.
منطقة النموذج تحتوي على عدة تبويبات:
تبويب ربط البيانات (Data Mapping Tab)
هنا تخبر المخطط بحقول البيانات التي يستخدمها. الحقول المتاحة تعتمد على نوع ربط البيانات (الذي يُضبط تلقائياً عند اختيار القالب، لكن يمكن تغييره):
- عمود التصنيف (Category column) — البُعد الذي يظهر على محور X (مثل: اسم الفرع، الشهر)
- السلاسل (Series) — عمود قيمة واحد أو أكثر، لكل منها اسم ونوع مخطط (bar/line/scatter) وتنسيق رقم وتعيين محور Y اختياري
- عمود التسمية (Label column) — لمخططات نمط pivot حيث تصبح القيم المميزة في عمود واحد سلاسل منفصلة تلقائياً
- وضع التكديس/النسبة المئوية (Stack / Percent mode) — تحويل الأعمدة المجمّعة إلى مكدّسة، أو التطبيع إلى 100%
- ترتيب الفرز (Sort order) — تصاعدي أو تنازلي حسب القيمة
تتصرف أدوات الاختيار بشكل مختلف تبعاً لما إذا كان الـ widget يستخدم مصدر بيانات SQL خام أو مصدر بيانات wizard:
- مصدر بيانات SQL — تختار من أسماء أعمدة مجموعة النتائج التي يُرجعها استعلامك (بالإضافة إلى أعمدة tempo وأعمدة مقارنة الفترات التي حددتها).
- مصدر بيانات Wizard — تختار من معرفات حقول الـ wizard مباشرة. كل خيار يعرض العنوان المترجم ومعرف الحقل الخام بين قوسين (لتمييز
customerوupperInvoice.customerحتى عندما يُترجمان كلاهما إلى "العميل"). أعمدة tempo وأعمدة مقارنة الفترات تظهر في نفس أداة الاختيار تحت مجموعات منفصلة.
مخططات وضع Wizard تحصل على عدة اختصارات في المصمم:
- تقبل فتحات التصنيف والتسمية والقيمة وX وY والسلاسل معرف حقل wizard — الـ backend يحلّ الاسم المستعار SQL الصحيح عند وقت التصيير.
- إدخالات إصدار الفلتر المتقاطع تحتاج فقط الفلتر المتقاطع المستهدف ومعرف حقل wizard؛ أعمدة id/code/name/entityType تُستنتج تلقائياً من بيانات الحقل الوصفية.
- تبويبة Click & Links وتبويبة Drill-Down تعرضان أداة اختيار Active Dimension في وضع wizard. كل بُعد له مجموعته الخاصة من إدخالات الفلتر المتقاطع وإدخالات drill-down، وزر "Copy from Dimension" يستنسخ الإدخالات من بُعد آخر لتسريع الإعداد.
تبويب النمط (Style Tab)
التخصيص البصري دون لمس JSON:
- العنوان والعنوان الفرعي (Title & subtitle) — إظهار/إخفاء، نص، موضع
- لوحة الألوان (Color palette) — ست لوحات مدمجة (default، warm، cool، pastel، monochrome، Nama brand)، بالإضافة إلى منتقي ألوان مخصص للسلاسل الفردية
- أنماط الزخرفة (Decal patterns) — تشطيبات/أنماط للوصولية والطباعة بالأبيض والأسود
- المفسّر (Legend) — إظهار/إخفاء، موضع (أعلى/أسفل/يسار/يمين)، اتجاه
- تلميح الأدوات (Tooltip) — إظهار/إخفاء، وضع التشغيل (axis يعرض جميع السلاسل دفعة واحدة، item يعرض نقطة بيانات واحدة)
- المحاور (Axes) — تدوير التسمية، اتجاه معكوس، حدود min/max، خطوط الشبكة
- تسميات البيانات (Data labels) — إظهار/إخفاء، موضع (أعلى/أسفل/داخل/مركز)
- تكبير البيانات (Data zoom) — شريط تمرير أو تكبير بعجلة الماوس للمخططات القابلة للتمرير
- تحكمات خاصة بالنوع:
- الأعمدة: نصف قطر الزاوية، عرض العمود
- الخطوط/المساحات: منحنيات ناعمة، إظهار نقاط البيانات، عرض الخط، وضع الخطوة، تعبئة المساحة
- الدوائر: نصف القطر الداخلي (ثقب الحلقة)، نصف القطر الخارجي، وضع rose، زاوية البداية
- العدادات: قيمة min/max، تبديل المؤشر، عرض خط المحور
- التشتت: حجم الرمز
- Heatmaps: إظهار/إخفاء تسميات الخلايا
- الرادار: شكل مضلّع أو دائري
محرر JSON المتقدم (Advanced JSON Editor)
لأي شيء لا تغطيه تحكمات واجهة المستخدم، يمكنك التبديل إلى محرر كود Monaco وتعديل ECharts option JSON الخام مباشرة. التغييرات في محرر JSON تنعكس على تحكمات واجهة المستخدم، لذلك يمكنك الجمع بين التعديل البصري وكتابة JSON يدوياً.
TIP
لا تحتاج إلى تعلّم ECharts API كاملة لاستخدام المصمم. القوالب وتحكمات واجهة المستخدم تغطي أشيع السيناريوهات. لكن إذا أردت تحكماً دقيقاً — تدرجات مخصصة، تسميات نصية غنية، منسّقات tooltip معقدة — فمحرر JSON في متناولك. راجع وثائق Apache ECharts للمرجع الكامل للخيارات.
تبويب Click & Links
هيّئ ما يحدث عندما يتفاعل المستخدمون مع المخطط — مشروح بالتفصيل في قسمَي الفلاتر المتقاطعة والروابط أدناه.
تبويب Drill-Down
هيّئ أهداف drill-down — مشروح في قسم Drill-Down أدناه.
لوحات المعلومات والتخطيط (Dashboards & Layout)
لوحة المعلومات هي شبكة تحوي widgets متعددة. تهيّئ حجم الشبكة (مثل: 3 أعمدة × 4 صفوف)، ثم تضع كل widget بتحديد صفها وعمودها وعرضها (بالأعمدة) وارتفاعها (بالصفوف).
كل لوحة معلومات لها نوع (Kind):
- Single — لوحة المعلومات الكلاسيكية المعروفة. شبكة من الـ widgets، مع ربط اختياري بالفلاتر المتقاطعة. هذا هو الإعداد الافتراضي للوحات الجديدة.
- Tabbed — حاوية تحمل لوحات معلومات أخرى كتبويبات قابلة للتبديل، بدلاً من حمل الـ widgets مباشرة. راجع لوحات المعلومات ذات التبويبات (Tabbed Dashboards) أدناه.
تعديل التخطيط (Editing the Layout)
في وضع التعديل، يمكنك:
- سحب الـ widgets لإعادة ترتيبها على الشبكة
- تغيير حجم الـ widgets باستخدام المقابض على جميع الحواف والزوايا
- حفظ أو إلغاء تغييرات التخطيط
مصمم التخطيط مخصص للوحات Single فقط. محاولة فتحه على لوحة Tabbed تُظهر خطأ — لوحات Tabbed لا تحتوي شبكة widgets للتخطيط، فقط قائمة بلوحات فرعية.
التحديث التلقائي (Auto-Refresh)
يمكن تحديث لوحات المعلومات تلقائياً. هناك مستويان:
- تحديث مستوى اللوحة (Dashboard-level refresh) — مؤقت واحد يعيد جلب جميع الـ widgets على فترة محددة
- تحديث مستوى الـ Widget (Widget-level refresh) — يمكن لكل widget الحصول على فترة تحديثها الخاصة، مفيد عندما تحتاج بعض المخططات بيانات شبه فورية والأخرى لا
أنواع الـ Widgets على لوحة المعلومات
رغم أن ECharts هي النجم الأساسي، تدعم لوحات المعلومات عدة أنواع widget أخرى:
| نوع الـ Widget | ما يفعله |
|---|---|
| EChart | أي من الـ 41 قالب مخطط |
| Table | جدول بيانات — أسماء أعمدة SQL تصبح رؤوس الأعمدة تلقائياً |
| Table v2 (Enhanced) | جدول بيانات أغنى — الأعمدة محددة صراحة في JSON مع التنسيق ومصيّرات الخلايا والتنسيق الشرطي. راجع قسم Enhanced Table. |
| Metrics Cards | بطاقات ملخص KPI (قيمة + تسمية + اتجاه) |
| Timeline | تيار أحداث زمنية |
| Calendar | تقويم أحداث |
| Report | تقرير JasperReport مضمّن |
| HTML | محتوى HTML مخصص |
| Recent Visits | يعرض السجلات المُشاهدة مؤخراً |
| Card Menu | بطاقات تنقل |
| Resource View | جدولة الموارد |
لوحات المعلومات ذات التبويبات (Tabbed Dashboards)
في بعض الأحيان لا تكفي لوحة معلومات واحدة — الإدارة العليا تريد رؤية مقاييس المستودع والموارد البشرية والمبيعات في مكان واحد، لكن لكل فريق لوحته الخاصة المضبوطة لعمله. بناء لوحة مدمجة ضخمة يُكرّر كل شيء؛ التنقل بين ثلاث لوحات منفصلة مرهق. لوحات Tabbed تحلّ هذا بتمكينك من تركيب لوحات موجودة كتبويبات تحت لوحة أم واحدة.
قصة إعادة الاستخدام
تصوّر هذا:
- فريق المستودع يستخدم لوحة المستودع (Warehouse Dashboard) يومياً.
- الموارد البشرية لديها لوحة HR (HR Dashboard) خاصة.
- المبيعات تعمل على لوحة المبيعات (Sales Dashboard).
كل من هذه لوحة Single عادية، يمتلكها ويصونها فريقها. الآن يطلب المديرون التنفيذيون مكاناً واحداً لرؤية كل شيء. تُنشئ لوحة جديدة، وتضع نوعها كـ Tabbed، وتضيف اللوحات الثلاث الموجودة كلوحات فرعية. هذا كل شيء — لا تكرار لـ widgets، لا نسخ لاستعلامات SQL، لا صيانة موازية. عندما يضيف فريق المستودع مخططاً جديداً للوحتهم، يظهر في العرض التنفيذي تلقائياً.
اللوحات الفرعية لا تزال قابلة للتصفح بشكل مستقل أيضاً — فريق المستودع يستمر في استخدام لوحة المستودع مباشرة دون أي وعي بأنها تعيش أيضاً داخل عرض تنفيذي.
الإعداد
عند تعديل سجل لوحة معلومات، ترى حقل النوع (Kind):
- اتركه كـ Single للوحة معلومات عادية.
- غيّره إلى Tabbed لتركيب لوحات أخرى كتبويبات.
التبديل إلى Tabbed يكشف عن شبكة Sub Dashboards. أضف صفاً واحداً لكل تبويب:
| الحقل | ما يفعله |
|---|---|
| Sub Dashboard | منتقي مرجع يشير إلى لوحة معلومات موجودة |
| العنوان العربي (Arabic Title) | تجاوز اختياري لتسمية التبويب بالعربية |
| العنوان الإنجليزي (English Title) | تجاوز اختياري لتسمية التبويب بالإنجليزية |
ترتيب الصفوف في الشبكة هو ترتيب ظهور التبويبات في واجهة المستخدم. لإعادة ترتيب التبويبات، أعد ترتيب صفوف الشبكة. إذا تركت كلا حقلَي العنوان فارغَين، يستخدم التبويب اسم اللوحة الفرعية نفسها (name1 لواجهة المستخدم العربية، name2 للإنجليزية).
TIP
لوحة Tabbed لا يمكنها امتلاك widgets خاصة بها — فهي حاوية بحتة. إذا حاولت إضافة widgets مباشرة، يمنع النظام الحفظ. هذا يحافظ على تناسق النموذج: مهمة اللوحة الأم Tabbed هي استضافة اللوحات الفرعية، لا أكثر.
الفلاتر المتقاطعة عبر التبويبات
شريط الفلتر المتقاطع في أعلى لوحة Tabbed هو اتحاد كل الفلاتر المتقاطعة المعرّفة على أي من اللوحات الفرعية، مع إزالة التكرارات. لذلك إذا ربطت كل من لوحة المستودع ولوحة المبيعات فلتر "الفرع"، ترى رقيقة Fرع واحدة في الشريط — لا اثنتين.
علاوة على ذلك، تلك الرقيقة تُطبَّق عبر جميع التبويبات التي تربطها. اضغط "الرياض" أثناء مشاهدة تبويب المبيعات، وانتقل إلى المستودع، وسيُعيد المستودع الجلب مع تطبيق فلتر الرياض تلقائياً. يعمل هذا لأن روابط الفلتر المتقاطع موجودة على كل لوحة فرعية، والنظام يُعيد تطبيقها عند كل تبديل تبويب.
لا تُعرّف روابط الفلتر المتقاطع على لوحة Tabbed الأم نفسها — هذا مقصود. تبقى اللوحات الفرعية مكتفية بذاتها (حتى تستمر في العمل عند استخدامها مستقلة)، واللوحة الأم تجمع فقط ما تُعلنه.
الأداء — التحميل الكسول لكل تبويب
يُجلب من الخادم فقط widgets التبويب النشط. التبديل بين التبويبات يُشغّل جلباً للتبويب الجديد؛ التبويبات المحمّلة سابقاً لا تُعاد جلبها حتى تعود إليها. هذا يعني أن اللوحات الثقيلة في التبويبات نادرة الزيارة لا تُبطئ اللوحة الأم — تدفع فقط مقابل ما تنظر إليه.
تغييرات الفلتر المتقاطع تُعيد جلب التبويب النشط فقط أيضاً. التبويبات الأخرى تلتقط الفلتر عند زيارتها لاحقاً.
الإشارات المرجعية والمشاركة
التبويب النشط مُشفَّر في URL كمعامل استعلام sd (sub-dashboard). لذلك يمكنك:
- وضع إشارة مرجعية على تبويب + تركيبة فلاتر محددة، والرابط يُعيد الفتح في نفس الحالة
- مشاركة رابط يوجّه الزملاء مباشرة إلى "تبويب المستودع مع فلتر تاريخ Q1 مُطبَّق مسبقاً"
- استخدام أزرار رجوع/تقدم المتصفح — التبديل بين التبويبات لا يكسر سجل التنقل إلا بتحديث URL
ما الذي يختلف في تعديل لوحات Tabbed
لوحة Tabbed لا تحتوي شبكة widgets، لذلك:
- مصمم التخطيط لا يفتح للوحات الأم Tabbed. اضغط "تعديل عناصر لوحة المعلومات" وسترى رسالة خطأ تطلب استخدام شبكة Sub Dashboards بدلاً من ذلك.
- لتعديل تخطيط widgets لوحة فرعية، انتقل إلى تلك اللوحة الفرعية مباشرة (لا تزال لوحة Single عادية) واستخدم مصمم التخطيط هناك. التغييرات تظهر في اللوحة الأم تلقائياً.
القواعد والحدود
تُطبَّق بعض الثوابت عند الحفظ:
- لا تبويبات متداخلة. لا يمكن للوحة فرعية أن تكون بدورها Tabbed. التبويبات عمق واحد — يتجنب هذا الحلقات ويبقي واجهة المستخدم متوقعة.
- لا مرجع ذاتي. لا يمكن للوحة معلومات إدراج نفسها كإحدى تبويباتها.
- لا لوحات فرعية مكررة. يمكن لكل لوحة فرعية الظهور مرة واحدة على الأكثر في قائمة التبويبات.
- روابط الفلتر المتقاطع على اللوحات الفرعية فقط. لا يمكن للوحة الأم Tabbed امتلاك روابطها الخاصة — الاتحاد من اللوحات الفرعية هو ما يُشغّل الشريط.
- فلترة الصلاحيات في وقت التشغيل. إذا كان بإمكانك رؤية اللوحة الأم لكن ليس لوحة فرعية معينة، يظهر التبويب مع ذلك لكنه يُصيّر رسالة خطأ بدلاً من الـ widgets، لتعلم أن هناك شيئاً مقيّداً بدلاً من إخفائه صامتاً.
الفلاتر المتقاطعة (Cross-Filtering)
الفلتر المتقاطع هو كيفية تواصل المخططات مع بعضها. عند الضغط على عمود "فرع الرياض" في مخطط، تُعيد جميع المخططات الأخرى على لوحة المعلومات جلب بياناتها مفلترة على فرع الرياض. اضغط مرة أخرى ويُزال الفلتر.
كيف يعمل
يوجد ثلاثة مكونات في إعداد الفلتر المتقاطع:
كيان BICrossFilter — تعريف فلتر قابل لإعادة الاستخدام مخزّن في النظام. يحدد نوع المعامل (مرجع، تاريخ، نص، إلخ)، وعمود SQL الذي يُفلتر عليه، ومشغّل المقارنة المستخدم. تُنشئ هذه مرة واحدة وتُعيد استخدامها عبر widgets كثيرة.
روابط الفلتر المتقاطع على الـ widgets — كل widget تُعلن الفلاتر المتقاطعة التي تستجيب لها. عند تفعيل فلتر، يحصل استعلام SQL للـ widget على عبارة WHERE إضافية مُحقنة تلقائياً.
ربط إصدار النقر (Click emit mapping) على الـ widgets — كل widget يمكنها الإعلان عن الفلاتر المتقاطعة التي تُصدرها عند نقر المستخدم عليها. هذا ما يجعل نقرة على مخطط دائري تُعيّن فلتراً تتفاعل معه مخططات أخرى.
شريط الفلاتر (The Filter Bar)
في أعلى كل لوحة معلومات تستخدم الفلاتر المتقاطعة، ترى شريط الفلاتر. يُظهر:
- زر الفلاتر (Filters button) مع عدد الفلاتر النشطة (مثل: "الفلاتر: 3")
- رقائق الفلاتر (Filter chips) — واحدة لكل فلتر نشط، تعرض تسمية الحقل والقيمة المحددة مع زر X للإزالة
- النقر على زر الفلاتر يفتح حوار محرر الفلاتر حيث يمكن ضبط أو تغيير قيم فلاتر متعددة دفعة واحدة
أنواع الفلاتر (Filter Types)
تدعم الفلاتر المتقاطعة جميع أنواع البيانات المتوقعة:
| النوع | مثال | تحكم واجهة المستخدم |
|---|---|---|
| مرجع (Reference) | الفرع، العميل، الصنف | حقل بحث الكيان |
| تاريخ (Date) | من تاريخ، إلى تاريخ | منتقي تاريخ |
| نص (Text) | كلمة بحث | إدخال نصي |
| عدد صحيح / عشري (Integer / Decimal) | الحد الأدنى للمبلغ | إدخال رقمي |
| Enum | حالة الفاتورة | قائمة منسدلة |
| منطقي (Boolean) | النشطون فقط | مربع اختيار |
| قائمة (List) | فروع متعددة | اختيار متعدد |
المشغّلات (Operators)
يمكن لكل فلتر متقاطع استخدام مشغّل مقارنة مختلف:
| المشغّل | SQL | الاستخدام الشائع |
|---|---|---|
| يساوي (Equal) | = | تطابق تام (الأكثر شيوعاً) |
| في (In) | IN (...) | اختيار متعدد القيم |
| أكبر من أو يساوي (GreaterThanOrEqual) | >= | تاريخ "من"، الحد الأدنى |
| أصغر من أو يساوي (LessThanOrEqual) | <= | تاريخ "إلى"، الحد الأقصى |
| أكبر / أصغر (GreaterThan / LessThan) | > / < | مقارنة صارمة |
| لا يساوي (NotEqual) | <> | الاستثناء |
| يحتوي (Contains) | LIKE '%...%' | بحث نصي |
| يبدأ بـ (StartsWith) | LIKE '...%' | تطابق البادئة |
التغذية الراجعة البصرية (Visual Feedback)
عند تفعيل الفلاتر المتقاطعة، تعرض الـ widgets شارات تشير إلى:
- "مفلتر بواسطة: الفرع، التاريخ" — بيانات هذه الـ widget مفلترة بهذه الفلاتر المتقاطعة
- "يُصدر: الفرع" — هذه الـ widget هي مصدر فلتر الفرع النشط
مرّر الماوس على الشارة لرؤية قيم الفلتر الفعلية.
Drill-Down
يتيح Drill-Down للمستخدمين التنقل من البيانات الملخصة إلى البيانات التفصيلية. انقر بزر الماوس الأيمن على نقطة بيانات وتظهر قائمة سياقية تُريك أين يمكنك التعمق. هناك ثلاثة أشكال:
Widget Drill-Down (مخطط → مخطط)
انقر بزر الأيمن على نقطة بيانات ← اختر هدفاً ← تفتح نافذة تعرض مخطط الـ widget المستهدفة، مفلتراً مسبقاً على القيمة التي نقرت عليها. مثلاً: انقر بزر الأيمن على "الإلكترونيات" في مخطط دائري للمبيعات حسب التصنيف ← تعمق في مخطط "أفضل 10 أصناف في الإلكترونيات".
يمكنك تهيئة أهداف drill-down متعددة لكل widget، وتظهر كعناصر منفصلة في قائمة زر الأيمن.
Dashboard Drill-Down (مخطط → لوحة معلومات)
نفس الفكرة، لكن الهدف هو لوحة معلومات كاملة بدلاً من widget منفردة. فلاتر drill-down تُمرَّر إلى جميع الـ widgets على لوحة المعلومات المستهدفة. رائع للتحليل الهرمي — مثل: نظرة عامة على الشركة ← لوحة معلومات إقليمية ← لوحة معلومات الفرع.
Dimension Drill-By (نفس المخطط، بُعد أعمق)
إذا كانت widget تستخدم مصدر بيانات wizard مع حقول أبعاد متعددة، يمكنك التعمق حسب البُعد. انقر بزر الأيمن "الرياض" ← Drill Down By Month ← ترى نفس المقياس مصنّفاً حسب الشهر للرياض فقط. مسار التنقل (breadcrumb trail) يتتبع مسارك (المنطقة ← الفرع ← الشهر)، ويمكنك النقر على أي خطوة للعودة.
كيف يعمل drill-by لمخططات متعددة الأبعاد (CategoryLabelValue، الأعمدة المكدّسة، إلخ):
- البُعد المُستعمق يحلّ محل التصنيف (محور X). إذا كان المخطط يحتوي أيضاً على بُعد تسمية (تفصيل السلسلة)، تلك التسمية تبقى في مكانها — يحافظ المخطط على نفس الشكل البصري مع المحور X الجديد.
- يتراكم في مكدّس الفلاتر فقط قيمة التصنيف التي نقرت عليها، لا قيمة التسمية. فالنقر بزر الأيمن على عمود "يناير / المنتج A" والتعمق حسب المنطقة يعطيك توزيع يناير الإقليمي عبر جميع المنتجات — لا المنتج A فقط.
- تُخفي قائمة زر الأيمن الأبعاد النشطة فعلاً على المخطط، لذا لا يمكنك التعمق بواسطة بُعد المخطط يُجمَّع بواسطته بالفعل.
إصدار الفلتر المتقاطع تدفق منفصل: النقر بزر الأيسر على نقطة بيانات يُصدر فلاتر لكل بُعد نشط لتلك النقطة (التصنيف + التسمية معاً)، بغض النظر عن drill-by.
Single-Click Drill-Down
افتراضياً، يتطلب drill-down نقر زر الأيمن. لكن يمكنك تهيئة widget بحيث يُشغّل نقر زر الأيسر هدف drill-down محدداً فوراً — دون حاجة لقائمة. يُهيَّأ هذا عبر إعداد clickAction في تبويبة Click & Links.
حوار Drill-Down
عندما يفتح drill-down في وضع النافذة المنبثقة (الافتراضي)، يعرض:
- مسار تنقل (breadcrumb trail) في الأعلى يُظهر المسار الذي سلكته (قابل للنقر للرجوع)
- المخطط المستهدف مُصيَّر مع فلاتر drill-down مُطبَّقة
- زر تكبير للعرض الكامل
- دعم drill-downs متداخلة — يمكنك التعمق من النافذة إلى نافذة أخرى
الروابط — التنقل إلى السجلات (Links — Navigate to Records)
أحياناً تريد الضغط على نقطة بيانات في مخطط والانتقال إلى سجل ERP الفعلي خلفها. هذا ما ربط الروابط (link mappings) مخصص له.
روابط الكيانات (Entity Links)
وجّه رابطاً نحو نوع كيان + عمود ID، والضغط يفتح شاشة التعديل لذلك السجل. مثلاً: الضغط على عمود "ABC Trading" يمكن أن يفتح سجل العميل لـ ABC Trading — في نافذة منبثقة أو نفس التبويب أو تبويب جديد.
لمسة جميلة: يمكنك تهيئة labelColumn بحيث تقول قائمة السياق "فتح العميل 'ABC Trading'" بدلاً من "فتح العميل" فقط.
روابط URL
إذا كان استعلام SQL يُرجع عمود URL، يمكنك الربط به مباشرة. URLs المطلقة (http/https) تفتح في تبويب جديد؛ URLs النسبية تتنقل داخل التطبيق.
أين تظهر الروابط
تظهر الروابط في قائمة السياق عند زر الأيمن تحت قسم "التنقل إلى". مثل drill-down، يمكنك أيضاً تهيئة رابط كإجراء النقر الأيسر الافتراضي.
قائمة السياق عند زر الأيمن (The Right-Click Context Menu)
عند النقر بزر الأيمن على نقطة بيانات في مخطط مُهيَّأ بتفاعلات، ترى قائمة منظمة:
"Series Name / Category Value"
─────────────────────────
Navigate To:
├─ Open Customer "ABC Trading"
├─ Open Website
─────────────────────────
Open In:
├─ Sales Details
├─ Regional Dashboard
─────────────────────────
Drill Down By:
├─ By Month
├─ By Branchكل قسم يظهر فقط إذا كان الربط المقابل محدداً. مخطط بلا روابط ولا أهداف drill-down ولا أبعاد wizard لا يُظهر قائمة سياق على الإطلاق.
ملخص تفاعلات المخطط (Chart Interactions Summary)
| الإجراء | ما يحدث |
|---|---|
| نقر أيسر على نقطة بيانات | يُصدر فلتراً متقاطعاً (افتراضي)، أو يتنقل/يُعمّق إذا كان clickAction مُهيَّأً |
| نقر أيسر على نفس النقطة مرة أخرى | يُزيل الفلتر المتقاطع (سلوك التبديل) |
| نقر أيمن على نقطة بيانات | يفتح قائمة السياق مع أهداف drill-down والروابط وخيارات drill-by |
| تمرير الماوس على نقطة بيانات | يعرض التلميح (وضع axis يعرض جميع السلاسل، وضع item يعرض نقطة واحدة) |
| عجلة التمرير | تكبير/تصغير إذا كان data zoom مفعّلاً |
| سحب شريط التكبير | يضبط نطاق البيانات المرئية |
| شريط الأدوات: حفظ كصورة (Save as Image) | يُنزّل المخطط كملف PNG |
| شريط الأدوات: تصدير الإعداد (Export Config) | ينسخ JSON إعداد المخطط إلى الحافظة |
Widgets الجداول (Table Widgets)
ليس كل شيء يحتاج إلى مخطط. تعرض widgets الجداول نتائج الاستعلامات في شبكة بأعمدة قابلة للفرز وتغيير الحجم. أسماء أعمدة SQL تصبح رؤوس الشبكة — لا إعداد إضافي مطلوب سوى الاستعلام وربط الفلاتر المتقاطعة.
تحترم widgets الجداول الفلاتر المتقاطعة تماماً مثل widgets المخططات، لذلك عند الضغط على فرع في مخطط أعمدة، الجدول المجاور يتصفح لعرض سجلات ذلك الفرع فقط.
Enhanced Table Widget
الـ Table widget الكلاسيكية سريعة الإعداد لكنها تعرض الأعمدة تماماً كما يُرجعها SQL — أرقام خام، بلا تنسيق، بلا ترميز لوني، بلا مصيّرات خلايا مميزة. الـ Enhanced Table widget (Table v2 (Enhanced) في منتقي نوع الـ widget، عربي: "جدول محسن") هي جدول من الجيل الثاني حيث كل عمود مُهيَّأ صراحة، لتحصل على تنسيق لكل عمود، وشارات ملونة، وأشرطة تقدم، وشرارات مضمّنة (sparklines)، وتنسيق شرطي مبني على قواعد — كل هذا دون لمس أي كود مخصص.
TIP
Enhanced Table ترقية اختيارية. الـ Table widget الكلاسيكية تستمر في العمل كما كانت تماماً. اختر Enhanced Table عندما تحتاج واحداً أو أكثر من: تنسيق العملة/النسبة المئوية/التاريخ، تلوين الإيجابي بالأخضر والسلبي بالأحمر، شارات الحالة، أشرطة التقدم المضمّنة، sparklines، رؤوس مجموعات الأعمدة، أو تثبيت الأعمدة.
ما يمكنك فعله لكل عمود
كل عمود في Enhanced Table مُعرَّف في chartConfigJSON بمجموعة خياراته الخاصة:
مصدر البيانات (Data source) — إما اسم عمود SQL خام (
field) أو معرف حقل wizard (wizardFieldId). نفس التقسيم كأي مكان آخر في وحدة BI.التنسيق (Formatting) — اختر من
text،number،currency،percent،date،datetime،duration. تحكم في الخانات العشرية، وفاصلة الآلاف، ورموز العملة ووضعها (بادئة أو لاحقة)، وأنماط تنسيق التاريخ.مصيّر الخلية (Cell renderer) — كيف تُرسم الخلية:
text— قيمة منسّقة عادية (افتراضي)html— يُصيّر HTML خام من قيمة الخلية (للتنسيق الغني القادم من SQL)badge— تسمية حبة أو مربعة، لون الخلفية مدفوع بالتنسيق الشرطيbar— شريط أفقي ممتلئ نسبياً بين حد أدنى وأقصى (مثل: "الكمية من 50")progress— نفس bar، دلالياً "تقدم نحو الهدف"sparkline— مخطط مصغّر مضمّن (خط، عمود، أو مساحة) يُغذَّى من عمود منفصل في مجموعة النتائجicon— يعرض أيقونة بناءً على قيمة الخلية (مثل: علامة صح لـ "معتمد"، تحذير لـ "معلّق")
التنسيق الشرطي (Conditional formatting) — تلوين خلفية الخلية / لون النص / غامق / مائل بناءً على القيمة. القواعد تشمل:
- الحدود (Thresholds) — "إذا كانت القيمة ≥ 10,000 أظهر أخضر؛ إذا < 0 أظهر أحمر"
- النطاقات (Ranges) — "إذا كانت القيمة بين 0 و100 أظهر كهرماني"
- مقارنة الأعمدة (Column comparison) — "إذا تجاوزت قيمة هذا العمود عمود الميزانية، أظهر أحمر"
- مطابقة Enum — "إذا كانت الحالة 'ملغاة' أظهر رمادياً ومائلاً"
- فحوص null — "إذا كان فارغاً، أظهر نمط 'لا بيانات' خفياً"
القواعد تُقيَّم على الخادم، لذا المقارنة دائماً رقمية عند الحاجة (لا مزيد من "2 > 10 لأنهما مقارنتان كنصوص"). التواريخ تُقارن كتواريخ عندما يكون نوع تنسيق العمود
dateأوdatetime.مجموعات الأعمدة (Column groups) — أعطِ عدة أعمدة رأس مجموعة مشتركة (مثل: مجموعة "العميل" فوق
Customer NameوBranch).التثبيت والعرض وتجميع الصفوف والتجميع (Pinning, width, row grouping, aggregation) — تحكمات AG Grid القياسية، مُكشوفة تصريحياً في JSON.
تنسيق مستوى الصف (Row-Level Styling)
إضافة إلى قواعد كل خلية، يمكنك تنسيق صفوف كاملة بناءً على قيمة أي عمود. مثلاً: تمييز كل صف حيث الهامش سلبي، أو تظليل الطلبات الملغاة عبر الصف بأكمله. قاموس القواعد هو نفسه كالتنسيق الشرطي لكل خلية — فقط تُسمّي العمود الذي تختبره.
التفاعلات — نفس البقية
كل ما تعرفه عن تفاعلات BI لا يزال يعمل: إصدار الفلتر المتقاطع عند النقر، drill-down إلى widgets أو لوحات معلومات عند زر الأيمن، روابط الكيانات في قائمة "التنقل إلى"، وتجاوز clickAction بنقرة واحدة. الإضافة الوحيدة هي أن كل ربط نقر/drill/رابط يمكنه اختيارياً تضمين حقل column — عند تعيينه، يُشغَّل الربط فقط عندما ينقر المستخدم خلية في ذلك العمود المحدد. عند غياب column، يُشغَّل الربط على أي خلية في الصف (سلوك Table الكلاسيكي).
ملاءمات المسؤول (Admin Conveniences)
عند تسجيل الدخول كـ admin (أو أي مستخدم بـ treatAsAdmin مُفعَّل)، يُظهر شريط أدوات الـ widget زرَّين إضافيَّين:
- نسخ JSON البيانات (Copy Data JSON) — ينسخ الحمولة البيانية المحسوبة بالكامل للـ widget إلى الحافظة. مفيد لتصحيح قواعد التنسيق أو فهم سبب مظهر خلية معينة.
- فتح الـ Widget (Open Widget) — يفتح شاشة تعديل الـ widget في تبويب جديد. نفس الزر يظهر أيضاً على widgets
TableوMetrics CardsوCard MenuوEChartللمسؤولين، يُتيح وصولاً بنقرة واحدة لإعداد الـ widget من أي لوحة معلومات.
المصمم (Designer)
محرر إعداد المخطط للـ Enhanced Table widgets يستبدل التبويبات الخاصة بـ ECharts بتبويبة Table Columns تتيح لك:
- سرد الأعمدة وإعادة ترتيبها (أزرار سحب وإسقاط)
- تعديل id وfield ورؤوس كل عمود وعرضه وتثبيته ونوع المصيّر ونوع التنسيق مضمّناً
- البدء من استعلام SQL عبر زر توليد الأعمدة من مجموعة النتائج (Generate Columns From Result Set) — يُشغّل SQL مصدر البيانات ويُولّد عموداً افتراضياً لكل رأس في مجموعة النتائج، لتبدأ غير فارغ
تبويبة Table Options المرفقة تغطي مفاتيح مستوى الشبكة (pagination، تجميع الصفوف، صف الإجمالي الكلي، إلخ).
للإعداد الأكثر تقدماً — تحديداً مجموعات الأعمدة، وخيارات كل مصيّر مثل bar min/max أو تعيينات الأيقونات، وDSL قواعد التنسيق الشرطي الكاملة — استخدم تبويبة Raw JSON. المرجع التقني §14 يحتوي الـ schema الكاملة.
متى تستخدم أيًّا منهما
| حالة الاستخدام | الـ Widget |
|---|---|
| شبكة مخصصة سريعة على استعلام SQL، بلا تنسيق | Table |
| جداول مالية بتنسيق عملة، والسلبي باللون الأحمر، والإجماليات | Table v2 (Enhanced) |
| أعمدة الحالة / الأولوية / التصنيف التي ينبغي عرضها كشارات ملونة | Table v2 (Enhanced) |
| جداول نمط KPI مع أشرطة مضمّنة أو sparklines تعرض الحجم النسبي | Table v2 (Enhanced) |
| جداول بمجموعات أعمدة، أعمدة مثبّتة، أو إعدادات تجميع مسبقة لكل عمود | Table v2 (Enhanced) |
ترقية جدول موجود (Upgrading An Existing Table)
لا ترقية تلقائية — التبديل خيار متعمد لكل widget:
- عدّل سجل
DashBoardWidgetوغيّر نوعه منTableإلىTable v2 (Enhanced). - افتح محرر إعداد المخطط. تبويبة Table Columns تظهر بدلاً من تبويبة ربط بيانات ECharts.
- اضغط توليد الأعمدة من مجموعة النتائج لتولّد أعمدة من SQL الـ widget.
- اضبط التنسيق والمصيّرات والتنسيق الشرطي كما تريد.
- احفظ. أي ربط فلاتر متقاطعة وdrill-down وروابط موجود يستمر في العمل — حقل
columnعلى تلك الروابط يطابق بالفعلids الأعمدة الافتراضية (التي هي فقط أسماء أعمدة SQL).
مصادر البيانات (Data Sources)
كل widget تحصل على بياناتها من استعلام SQL خام أو مصدر بيانات wizard.
SQL الخام (Raw SQL)
تكتب استعلام SELECT بـ T-SQL قياسي. المتطلب الوحيد هو تضمين placeholder المكتوب /*AND-FILTERS*/ في عبارة WHERE — هنا يضخّ النظام شروط الفلتر المتقاطع في وقت التشغيل. لأنه تعليق SQL، يبقى استعلامك صالحاً إذا لصقته في SQL Server Management Studio للاختبار.
مصدر بيانات Wizard
بدلاً من كتابة SQL، تُعرّف مصدر بيانات باستخدام معرفات حقول Nama ERP (مسارات الخصائص مثل customer.customerCategory أو price.netValue). النظام يولّد SQL تلقائياً. حقول Wizard مُصنَّفة إما كـ Dimension (group-by / تصنيف) أو Measure (قيمة مجمّعة بـ Sum، Count، Average، Min، أو Max).
تُتيح مصادر بيانات Wizard عدة ميزات في المصمم ووقت التشغيل لا تحصل عليها widgets SQL الخام:
- Dimension drill-by — انقر بزر الأيمن على نقطة بيانات وتعمق بواسطة أي بُعد آخر محدد على الـ wizard. متاح فقط للـ widgets المدعومة بـ wizard لأن النظام يحتاج هيكل الحقل لإعادة بناء الاستعلام أثناء التشغيل.
- أعمدة الفلتر المتقاطع المستنتجة تلقائياً — عند إصدار فلتر متقاطع من حقل مرجع (مثل
customer.customerCategory)، لا تكتب أعمدة id / code / name1 / name2 / entityType. النظام يقرأها من بيانات وصفية لحقل الـ wizard، المخزّنة عند حفظ الـ wizard. - ربط نقر وdrill-down لكل بُعد — إذا كان المخطط يحتوي أبعاداً متعددة (مثل التصنيف والتسمية على عمود مكدّس)، كل بُعد له مجموعته الخاصة من إدخالات click-emit وdrill-down. مصمم المخطط يُظهر أداة اختيار "Active Dimension" في تبويبتَي Click & Links وDrill-Down للتبديل بينها.
- منتقيات معرف الحقل بدلاً من منتقيات اسم العمود — منتقيات ربط البيانات والفلتر المتقاطع وdrill-down في المصمم تُدرج معرفات حقول wizard (مع العناوين المترجمة والمعرف الخام لإزالة الغموض) بدلاً من أسماء أعمدة SQL الخام.
في كل مرة تحفظ wizard، يُحسب النظام مسبقاً سجل بيانات وصفية لكل حقل (الاسم المستعار للعرض، SQL LHS، نوع الكيان المُشار إليه، اسم مستعار للأعمدة الفرعية للمراجع) ويُخزّنه على سطر الحقل. تصيير المخطط يقرأ من هذه الذاكرة المؤقتة، لذا widgets وضع wizard لا تدفع تكلفة إعادة بناء الاستعلام عند كل طلب فقط للبحث عن الأسماء المستعارة.
تنسيق الأرقام (Number Formatting)
يمكنك تحديد كيفية عرض القيم الرقمية في التلميحات وتسميات المحاور وتسميات البيانات. تشمل خيارات التنسيق:
| نوع التنسيق | مثال الإخراج |
|---|---|
number | 1,234,567.89 |
currency | SAR 1,234,568 |
percent | 85.5% |
compact | 1.2M, 45K |
يمكنك أيضاً التحكم في الخانات العشرية وتحديد رمز العملة. إذا عيّنت النوع إلى currency دون تحديد العملة، يستخدم النظام العملة الافتراضية لمؤسستك.
مقارنة الفترات (Period Comparison)
أحياناً تحتاج الإجابة على "كيف يقارن هذا الربع بنفس الربع من العام الماضي؟" دون بناء لوحة معلومات مختلفة تماماً. ميزة مقارنة الفترات تتولى هذا — يُشغّل النظام استعلام الـ widget الموجود مرتين (مرة للتواريخ الحالية، مرة للتواريخ المنزاحة) ويدمج النتائج، لذا كل مخطط يشترك يعرض تلقائياً الفترتين جنباً إلى جنب.
الإعداد
ثلاثة مكونات مطلوبة:
إنشاء
BI Period Comparison Config— ملف رئيسي يُعرّف:- مقدار إزاحة التواريخ (مثل: سنة واحدة، 3 أشهر) باستخدام حقل
Subtracted Period - أسماء الأعمدة للأعمدة المحقونة للفترة (مثل:
periodAr/periodEn) - تسميات العرض لكل فترة (مثل: "السنة الحالية" / "السنة السابقة" بالعربية والإنجليزية)
- مقدار إزاحة التواريخ (مثل: سنة واحدة، 3 أشهر) باستخدام حقل
ربطه بفلاتر التاريخ المتقاطعة — على كل فلتر تاريخ متقاطع (مثل: من تاريخ، إلى تاريخ)، عيّن حقل
Period Comparison Configللـ config الذي أنشأته. يجب أن يشير كلا فلترَي التاريخ إلى نفس الـ config لإزاحة كلا طرفي النطاق معاً.تفعيل المقارنة على كل widget — على الـ widget، ضع علامة على مربع الاختيار
Enable Comparison. الـ widgets التي بها هذا العلم فقط ستُشغّل مقارنة الاستعلام المزدوج. الـ widgets الأخرى على نفس لوحة المعلومات تستمر في العمل عادياً باستعلام واحد.
وضعان للمقارنة
الوضع A — عمود تسمية الفترة (للمخططات الاتجاهية)
الأفضل لمخططات الخطوط والمساحات وأي مخطط يستخدم ربط بيانات CategoryLabelValue. يضخّ النظام عمود فترة في مجموعة النتائج (باستخدام أسماء الأعمدة من الـ config)، ويمكن لـ labelColumn في المخطط الرجوع إليه للحصول تلقائياً على سلسلتين — سلسلة لكل فترة.
مثال: مخطط خط اتجاه المبيعات الشهرية مع categoryColumn: "monthLabel" وlabelColumn: "periodEn". عندما يختار المستخدم يناير–مارس 2026، يعرض المخطط خطّين: "السنة الحالية" و"السنة السابقة"، كلاهما مرسوم على الأشهر 01، 02، 03.
لهذا الوضع، نسّق شهرك/تصنيفك لاستبعاد السنة (مثل: FORMAT(l.valueDate, 'MM') بدلاً من 'yyyy-MM') بحيث تتوافق نفس الأشهر عبر الفترات.
الوضع B — تقسيم العمود (لمخططات الأعمدة والسلاسل الصريحة)
الأفضل لمخططات الأعمدة والقوائم المرتبة وأي مخطط يستخدم CategoryValue مع سلاسل محددة صراحة. بدلاً من إضافة بُعد فترة، يقسم هذا الوضع عمود القياس إلى اثنين: واحد للفترة الحالية، وواحد للفترة السابقة.
هيّئه في شبكة Comparison Data Mapping للـ widget:
| العمود الأصلي | عمود الفترة السابقة |
|---|---|
netValue | prevNetValue |
ربط بيانات CategoryValue للمخطط يحتوي حينئذ على سلسلتين: واحدة لـ netValue ("السنة الحالية") وواحدة لـ prevNetValue ("السنة السابقة")، مُنتجاً أعمدة جنباً إلى جنب.
لـ EChart widgets، لا تحتاج إلى ضبط Merge Comparison Results By Columns — طبقة ربط بيانات ECharts تدمج بالفعل الصفوف التي تشترك في نفس مفاتيح التصنيف/التسمية وتجمع قيمها تلقائياً. لكن Merge Comparison Results By Columns مهم لـ أنواع widgets غير المخططات مثل Tables وMetrics Cards وغيرها حيث لا توجد طبقة ربط بيانات للتعامل مع الدمج. عيّنه إلى CSV للأعمدة التي تُحدد صفاً فريداً (مثل: itemClassName)، وسيطابق النظام الصفوف من كلتا الفترتين ويجمعها في صف واحد بدلاً من إلحاق التكرارات.
معاملات الاستعلام (Query Parameters)
بغض النظر عن الوضع، يضخّ النظام معاملَين في كل استعلام مقارنة: periodArValue وperiodEnValue. يمكن لمؤلفي الـ widget استخدامها مباشرة في SQL — مثلاً في تعبيرات CONCAT() أو CASE — لتسمية أو تحويل البيانات بناءً على الفترة التي يُستعلم عنها حالياً.
إنشاء لوحات المعلومات بالذكاء الاصطناعي (Creating Dashboards with AI)
يوثّق المرجع التقني لوحدة BI كل هيكل JSON ونمط SQL وتنسيق استيراد تحتاجه لإنشاء لوحات المعلومات برمجياً. مكتوب خصيصاً لأدوات الذكاء الاصطناعي والمطورين — مما يعني أنه يمكنك استخدام مساعد ذكاء اصطناعي لتصميم وتوليد ملفات استيراد لوحات معلومات كاملة لك.
استخدام الذكاء الاصطناعي لبناء لوحات المعلومات
إليك سير عمل يُجدي جيداً:
أعطِ أداة الذكاء الاصطناعي رابط المرجع التقني:
https://docs.namasoft.com/guide/bi-module-technical-reference.htmlأخبره بنموذج البيانات الذي تعمل معه — يمكنك توجيهه إلى dm.namasoft.com لاكتشاف الـ schema
صف لوحة المعلومات التي تريدها بلغة طبيعية، مثلاً:
"أحتاج لوحة تحليل مبيعات بمخطط دائري يعرض المبيعات حسب فئة العميل، ومخطط أعمدة أفقي يعرض أفضل 10 أصناف، ومخطط خط اتجاه شهري، وجدول تفاصيل. يجب فلترة جميع المخططات حسب الفرع ونطاق التاريخ وفئة العميل. المخطط الدائري يُصدر فلتر فئة العميل عند النقر، ومخطط الأعمدة يتعمق في تفاصيل الفاتورة."
اطلب من الذكاء الاصطناعي توليد ملف import JSON كامل وفق تنسيق المرجع التقني
استورد الـ JSON المولَّد إلى Nama ERP — ستحصل على لوحة معلومات عاملة مع جميع الفلاتر المتقاطعة والـ drill-downs والتنسيقات جاهزة
بما أن الذكاء الاصطناعي قد يخمّن أسماء الجداول أو الأعمدة أو الـ joins بشكل خاطئ، من الأفضل إعطاؤه استعلاماً نموذجياً يحتوي الأعمدة والـ joins التي تريد استخدامها.
للـ wizards، يمكن تخطي الاستعلام النموذجي والسماح للذكاء الاصطناعي بالرجوع إلى dm.namasoft.com لمسارات الخصائص — الـ wizard يحلّ الـ joins تلقائياً من معرفات الحقول.
هذا أسرع بكثير من بناء كل widget يدوياً، خاصة للوحات المعلومات ذات المخططات المترابطة الكثيرة وإعدادات الفلاتر المتقاطعة المعقدة.