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