DSPL Gen

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

والافتراض الأساسي وراء DSPL Gen هو أن كل عمود في ملف CSV للإدخال يتوافق مع مفهوم DSPL واحد وأن كل صف هو ملاحظة واحدة لمجموعة من الأبعاد. وتعمل الأداة من خلال تكرارها في الأعمدة، مع إنشاء البيانات الوصفية المناسبة لكل عمود / مفهوم (مثل المعرّف والنوع وما إذا كان مكوّنًا أو مقياسًا وما إلى ذلك) ثم إنشاء جميع مفاهيم المفهوم وجداول الجداول اللازمة.

تشغيل DSPL Gen

البنية

ملاحظة: تفترض هذه التوجيهات أنك قد اتّبعت تعليمات التثبيت الواردة في صفحة "أدوات DSPL"

لتشغيل DSPL Gen، انتقل إلى الوحدة الطرفية / رسالة المطالبة على النظام واكتب:

python dsplgen.py -o [output path] [path to CSV file] 

حيث يتم استبدال المصطلحات بين قوسين على النحو التالي:

  • [output path]: مسار إلى الدليل الذي تريد وضع ملفات الإخراج به، ويجب أن يكون هذا الدليل موجودًا في نظام الملفات من قبل.
  • [path to CSV file]: مسار إلى ملف CSV الذي تم إدخاله يمكنك الاطّلاع على القسم أدناه للحصول على مزيد من التفاصيل حول كيفية تنسيق هذا الملف.

المكوّن -o [output path] اختياري، وفي حال حذفه، سيتم وضع ملفات الناتج في الدليل الحالي.

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

أخيرًا، افتح ملف XML في محرِّر النصوص من اختيارك، ثم نفِّذ أي تغييرات تريدها. وعليك ملء الأسماء والأوصاف وغيرها من القيم الأخرى التي تم تصنيفها بالأداة باستخدام العلامة ** INSERT ... **.

مثال بسيط

لنفترض أن لدينا ملف CSV يعرض إجمالي عدد حالات المرض، مقسّمًا حسب الشهر والبلد والفئة العمرية. للتبسيط، لنفترض فقط أن هناك قيمتين لكل بُعد:

date,country,age_group,disease_cases
01/2000,US,old,102030
01/2000,MX,old,192939
01/2000,US,young,23131
01/2000,MX,young,12311
02/2000,US,old,143135
02/2000,MX,old,203131
02/2000,US,young,22990
02/2000,MX,young,12591

ويؤدي تشغيل الأداة على الإدخال أعلاه إلى إنتاج 4 ملفات:

  • dataset.xml: نموذج XML DSPL
  • country_table.csv: قيم المفهوم country
  • age_group_table.csv: قيم مفهوم age_group
  • slice_0_table.csv: جدول لشرائح مجموعة البيانات (مماثلة لجدول الإدخال، باستثناء الترتيب)

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

إضافة تعليقات توضيحية إلى ملف CSV للإدخال

الخيارات الأساسية

في كثير من الحالات، كما في المثال أعلاه، بإمكان DSPL Gen تخمين البيانات الوصفية الأساسية لكل عمود، مثل النوع والتنسيق وما إذا كان عبارة عن بُعد أو مقياس. وفي حالات أخرى، قد لا تتمكّن الأداة من تخمين هذه المعلومات أو قد تخمنها بشكل غير صحيح أو قد تخمّن بشكل صحيح، ولكنها مع ذلك لا تتبع السلوك المطلوب.

لمعالجة هذه الحالات، تتيح الأداة إضافة خيارات إنشاء / تلميحات DSPL في صف عنوان ملف CSV. وتكون بنية هذه العناصر على النحو التالي:

column1[option1=value1;option2=value2;...],column2[option1=value1;option2=value2;...],column3[...],...

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

يدعم DSPL Gen حاليًا الخيارات الأساسية التالية:

Option الوصف تلقائي
type يجب أن يكون نوع بيانات DSPL في هذا العمود أحد date أو float أو integer أو string. تم الحصول عليها من البيانات
format تمثّل هذه السمة تنسيق عمود التاريخ هذا، كما هو الحال في DSPL، ويجب ترميز هذا التنسيق باستخدام معيار Joda DateTime. تم الحصول عليها من البيانات
slice_role دور هذا العمود في أي شرائح، ويجب أن يكون dimension أو metric. dimension إذا كان العمود من النوع date أو string، أو العمود metric
concept تمثّل هذه السمة المفهوم الأساسي الذي يمثّله هذا العمود، مثل geo:country. وفي حال توفير مفهوم، يتم استيراد المفهوم ولن يتم إنتاج أي تعريف في ملف XML. لا ينطبق
extends تمثّل هذه السمة المفهوم الأساسي الذي يتضمّنه هذا العمود، مثل entity:entity. لا ينطبق
parent

المفهوم الأصلي لهذا العمود. ويجب أن يكون هذا العنصر الرئيسي مفهومًا للمكوّن المحدّد في مجموعة البيانات (أي لم يتم استيراده)، في حال تقديمه، سيتم استخدام هذه المعلومات لتحديد تدرج هرمي للمفهوم في مجموعة البيانات.

يُرجى العِلم أنّ كل مثيل فرعي يتضمّن عنصرًا رئيسيًا واحدًا فقط. وفي حال رصد عدة قيم رئيسية، ستعرض الأداة خطأً.

لا ينطبق

بيانات إجمالية

بالإضافة إلى خيارات "التلميح" الأساسية الموضّحة أعلاه، يوفّر DSPL Gen أيضًا العروض الإجمالية للشريحة: بالنظر إلى إدخال جدول واحد، يمكن للأداة تلقائيًا إنشاء جداول إضافية مع مجموعات فرعية محدودة من الأبعاد. على سبيل المثال، إذا كان جدول الإدخال يتوافق مع شريحة ذات ثلاثة أبعاد غير وقتية (مثل dimension1 وdimension2 وdimensions3) يمكن للأداة إنشاء بعض الشرائح الإضافية أيضًا: dimension1 وdimension2 وdimension1 و dimension2 فقط وما إلى ذلك.

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

يتم تشغيل عملية العرض الإجمالي من خلال تضمين بعض الخيارات الإضافية في عنوان الإدخال CSV:

Option الوصف تلقائي
aggregation أسلوب التجميع المطلوب استخدامه عند الجمع بين قيم متعددة لهذا العمود، ويجب أن تكون واحدة من AVG أو COUNT أو MAX أو MIN أو SUM؛ أي أنّها مفيدة لمقاييس فقط. SUM
rollup إذا كانت القيمة هي true، يكون مفهوم هذا العمود "عرضًا إجماليًا" (أي مجمّعًا بشكل مجمّع)، ويُقصد به مفاهيم المكوّن فقط. خطأ
total_val تمثّل هذه السمة القيمة في هذا العمود التي تشير إلى الصفوف المطلوب الاحتفاظ بها عند عرض هذا العمود بشكل مفيد، ولا يكون ذلك مفيدًا إلا لمفاهيم الأبعاد. None

بعد ذلك، يتولى DSPL Gen حساب البيانات المجمّعة باستخدام الخوارزمية التالية:

  • احسب جميع مجموعات الأعمدة المحتملة باستخدام قيم علامات rollup
  • لكل نسخة:
    • إذا كانت أي أعمدة عرض إجمالي تتضمّن معلَمة total_val معيّنة، يجب فلترة الصفوف حسب هذه القيمة، أو اختيار كل الصفوف.
    • إسقاط أعمدة العرض الإجمالي
    • تجميع الصفوف حسب قيم أعمدة البُعد المتبقية
    • اجمع كل مقياس باستخدام الطريقة المحدّدة في المَعلمة aggregation.
    • إنشاء شريحة وجدول مرتبط بالنتيجة

تجدر الإشارة إلى أنه في حال وجود قيمة واحدة فقط في كل مجموعة وضبط دالة التجميع على SUM (القيمة التلقائية)، ستكون قيم المقياس في المصدر والجدول الذي تم إنشاؤه كما هي، أي لن يتم إنشاء قيم جديدة. وبالتالي، يسمح لك استخدام المَعلمة total_val ويضمن توفّر صف "إجمالي" واحد فقط لكل نسخة من المكوّنات الأخرى بتخزين البيانات المجمّعة مسبقًا مباشرةً في المصدر.

تحذير: عدد الشرائح التي تم إنشاؤها يساوي عمودان يتم دمجهما. قد يؤدي تطبيق هذا الخيار على عدد كبير من الأعمدة إلى أوقات تشغيل طويلة جدًا و/أو مجموعات بيانات كبيرة.

مثال متقدم

لنفترض أن لدينا بيانات الإدخال نفسها كما في المثال السابق، ولكنها تشمل الآن البيانات المجمّعة على مستوى البلدان:

date,country,age_group,disease_cases
01/2000,US,old,102030
01/2000,MX,old,192939
01/2000,total,old,152012
01/2000,US,young,23131
01/2000,MX,young,12311
01/2000,total,young,241011
02/2000,US,old,143135
02/2000,MX,old,203131
02/2000,total,old,211310
02/2000,US,young,22990
02/2000,MX,young,12591
02/2000,total,young,240131

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

نريد الآن إنشاء مجموعة بيانات DSPL تتضمن الميزات الإضافية التالية:

  1. "عرض إجمالي" للبلدان حتى نتمكّن من معرفة إجمالي حالات الإصابة حسب الفئة العمرية وحدها
  2. استخدِم مفهوم geo:country الأساسي للعمود country، حتى نتمكّن من الحصول تلقائيًا على الأسماء الكاملة والمواقع الجغرافية وغيرها.
  3. اجعل مفهوم disease_cases يوسع quantity:amount، حتى نتمكن من إضافة معلومات الوحدة (يدويًا) إلى ملف XML

ولإجراء ذلك، يتم تعديل صف رؤوس ملف CSV للإدخال كما يلي:

date,country[concept=geo:country;rollup=true;total_val=total],age_group,disease_cases[extends=quantity:amount]

وعند تشغيل الأداة مرة أخرى، نحصل الآن على جدول شرائح إضافي، جدول يلغي التمييز حسب البلد:

date,age_group,disease_cases
01/2000,old,152012
02/2000,old,211310
01/2000,young,241011
02/2000,young,240131

ويُرجى العِلم بأننا لو لم نُدرِج القيم الإجمالية والعلامة total_val في الجدول المصدر، سنحصل على المجموع المَحسوب لكل فئة عمرية.

علاوة على ذلك، يتضمن تعريف disease_cases في ملف XML الإضافة من quantity:amount، على النحو المطلوب. تم إسقاط تعريف country من ملف XML لأننا نستخدم مفهومًا تم استيراده بدلاً من ذلك.

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