דור DSPL

DSPL Gen הוא כלי עזר לשורת הפקודה שעוזר להמיר טבלת נתוני CSV למערך נתונים פשוט של DSPL. הכלי מנתח את קובץ הקלט, יוצר את כל טבלאות הנתונים הנדרשות ופורס קובץ DSPL XML. התוצאה היא "תבנית" של מערך נתונים כמעט מלאה שדורשת חידוד קל בלבד לפני העלאה והצגה חזותית.

ההנחה הבסיסית מאחורי DSPL Gen היא שכל עמודה בקובץ ה-CSV של הקלט תואמת לקונספט אחד של DSPL, וכל שורה היא תצפית אחת לשילוב של מאפיינים. הכלי פועל על ידי חזרה על עמודות, תוך הגדרת המטא-נתונים המתאימים לכל עמודה / קונספט (למשל, המזהה, הסוג, המימד או המדד וכו'), ולאחר מכן יצירת כל הגדרות הקונספט וטבלאות הפלחים.

הרצת DSPL מדור קודם

תחביר

הערה: המסלול הזה מבוסס על ההנחה שכבר ביצעת את ההוראות להתקנה שבדף DSPL Tools.

כדי להריץ 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 שמציג את המספר הכולל של מקרים של מחלה, בחלוקה לפי חודש, מדינה וקבוצת גיל. למען הפשטות, נניח שיש 2 ערכים לכל מאפיין:

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 ולערוך את השמות, התיאורים וכתובות האתרים השונים במטא נתונים של מערך הנתונים.

הוספת הערות לקובץ CSV של הקלט

אפשרויות בסיסיות

במקרים רבים, כמו בדוגמה למעלה, DSPL Gen יכול לנחש את המטא-נתונים הבסיסיים של כל עמודה, למשל הסוג, הפורמט ואם מדובר במאפיין או במדד. עם זאת, במקרים אחרים, יכול להיות שהכלי לא יוכל לנחש אותו, לנחש אותו באופן שגוי או אולי לנחש אותו, אבל בכל זאת לא לעמוד בהתנהגות הרצויה.

כדי לטפל במקרים האלה, הכלי תומך בהוספה של אפשרויות DSPL ליצירת מודעות / "רמזים" בשורת הכותרת של CSV. התחביר של אלה:

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

באופן ספציפי, רשימת האפשרויות ממוקמת בתוך סוגריים מרובעים משמאל לשם העמודה, וההגדרות של האפשרויות עוקבות מופרדות באמצעות נקודה-פסיק. כל אפשרות כוללת שם של אפשרות, סימן שווה וערך של אפשרות.

בשלב זה, DSPL Gen תומך באפשרויות הבסיסיות הבאות:

אפשרות Description ברירת מחדל
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 של הקלט:

אפשרות Description ברירת מחדל
aggregation שיטת הצבירה שבה משתמשים כשמשלבים ערכים מרובים של העמודה הזו. הערך צריך להיות אחד מהערכים הבאים: AVG, COUNT, MAX, MIN או SUM; רק עבור מדדים. SUM
rollup אם הערך הוא true, הקונספט של העמודה הזו הוא "roll-up" (כלומר, מצטבר). רק לקונספטים של dimension. לא נכון
total_val הערך בעמודה הזו שמציינת את השורות שצריך לשמור כשהעמודה מסוכמת, שהיא מהותית רק לקונספטים של מאפיין. None

לאחר מכן, DSPL Gen יחשב את נכסי-העל באמצעות האלגוריתם הבא:

  • באמצעות הערכים של תגי rollup, יש לחשב את כל השילובים האפשריים של עמודות
  • בכל שילוב:
    • אם הוגדרו עמודות כוללות של פרמטרים מסוג total_val, יש לסנן את השורות לפי הערך הזה. אחרת, יש לבחור את כל השורות
    • משחררים את העמודות המסוכמות
    • קיבוץ השורות לפי הערכים של העמודות הנותרות של מאפיין
    • צבירה של כל מדד בשיטה שצוינה בפרמטר aggregation שלו
    • יוצרים פלח וטבלה משויכת לתוצאה

חשוב לזכור שאם בכל קבוצה יש רק ערך אחד, ופונקציית הצבירה היא SUM (ערך ברירת המחדל), ערכי המדדים בטבלאות המקור והטבלאות שנוצרו יהיו זהים. כלומר, לא ייווצרו ערכים חדשים. לכן, באמצעות הפרמטר total_val ומוודאים שיש רק שורה אחת בשם "סה"כ" לכל שילוב של המאפיינים האחרים, אפשר לאחסן את הצבירה המחושבת מראש ישירות במקור.

אזהרה: מספר הפרוסות שנוצרו שווה ל-2 עמודות ששולבו. הפעלת האפשרות הזו על מספר גדול של עמודות עלולה לגרום לזמני ריצה ארוכים מאוד או למערכי נתונים גדולים.

דוגמה מתקדמת

נניח שיש לנו את אותם נתוני קלט כמו בדוגמה הקודמת, אבל עכשיו הם כוללים נתונים נצברים במדינות שונות:

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 כי אנחנו משתמשים בקונספט מיובא לשם כך.

אחרי שממלאים את השמות, התיאורים והפרטים של היחידות השונים, אפשר לכווץ את חבילת מערך הנתונים ולהעלות אותה ל-Public Data Explorer.