DSPL Gen הוא כלי שורת פקודה שעוזר להמיר טבלת נתונים בפורמט CSV למערך נתונים פשוט של DSPL. הכלי מנתח את הקלט יוצר את כל טבלאות הנתונים הדרושות ופורס קובץ DSPL XML. התוצאה היא מערך נתונים כמעט שלם 'template' שדורש שיפור קל בלבד לפני ההעלאה להמחשה.
ההנחה הבסיסית שעומדת מאחורי יצירת DSPL היא שכל עמודה קובץ CSV של קלט תואם לקונספט של DSPL יחיד וכל שורה תצפית יחידה לשילוב של מאפיינים. הכלי פועל על ידי חזרה בין העמודות, יצירת המטא-נתונים המתאימים לכל עמודה עמודה / קונספט (למשל, המזהה, הסוג, המאפיין או המדד, וכו') ואז יוצרים את כל הגדרות הקונספט והפלחים הנחוצים בטבלאות.
הפעלה של יצירת DSPL
תחביר
הערה: ההנחיות האלה מבוססות על ההנחה כבר פעלת בהתאם הוראות התקנה ניתן למצוא בדף הכלים של 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 שנותן את המספר הכולל של המקרים מחלה, בחלוקה לפי חודש, מדינה וקבוצת גיל. כדי לשמור על פשטות, נניח שיש 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 ולערוך את השמות, התיאורים וכתובות ה-URL השונים במטא-נתונים של מערך הנתונים.
הוספת הערות לקובץ ה-CSV
אפשרויות בסיסיות
במקרים רבים, כמו בדוגמה שלמעלה, קמפיין DSPL יכול לנחש את המטא-נתונים של כל עמודה. למשל הסוג, הפורמט והאם הוא מאפיין או מדד. עם זאת, במקרים אחרים, ייתכן שהכלי לא יוכל לנחש אותם, לנחש אותם בצורה שגויה או לנחש נכון, אבל עדיין, בכל זאת, לא לפעול לפי ההתנהגות הרצויה.
כדי לטפל במקרים כאלה, הכלי תומך בהוספת אפשרות ליצירת DSPL אפשרויות / "רמזים" בשורת הכותרת של ה-CSV. התחביר בעמודות האלה הוא ככה:
column1[option1=value1;option2=value2;...],column2[option1=value1;option2=value2;...],column3[...],...
במיוחד, חשוב לזכור שרשימת האפשרויות ממוקמת בתוך סוגריים מימין לשם העמודה והאפשרות העוקבת ההגדרות מופרדות בנקודתיים. כל אפשרות מורכבת שם של אפשרות, סימן שוויון וערך אפשרות.
נכון לעכשיו, מערכת DSPL Gen תומכת באפשרויות הבסיסיות הבאות:
אפשרות | תיאור | ברירת מחדל |
---|---|---|
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 |
הקונספט של ההורה לעמודה הזו. ההורה הזה חייב להיות מאפיין מושג שמוגדר בתוך מערך הנתונים (כלומר, לא יובא). אם ניתן, נשתמש במידע הזה כדי להגדיר היררכיית מושגים של הכיתובים. חשוב לזכור שלכל מופע צאצא יכול להיות רק הורה אחד. אם מספר שזוהו ערכי הורה, הכלי יפיק שגיאה. |
ללא |
נכסי-על של ערכים
בנוסף להגדרה הבסיסית, "hint" מהאפשרויות שתוארו למעלה,
DSPL Gen תומך גם בנכסי-על של פרוסות: כשיש טבלה אחת
קלט, הכלי יכול ליצור באופן אוטומטי טבלאות נוספות עם
קבוצות משנה של המאפיינים. לדוגמה, אם טבלת הקלט תואמת
פרוסה עם שלושה מאפיינים שאינם זמן (למשל: dimension1
,
dimension2
וגם dimensions3
) הכלי יכול
ליצור גם כמה פרוסות: dimension1
בלבד,
רק dimension2
, רק dimension1
ועוד
dimension2
, וכו'
אם מוסיפים את הפרוסות האלה, קל יותר לנתח את מערך הנתונים כי הוא מפחית את מספר מסנני המאפיינים שנדרשים כדי להפיק החזותיות. מצד שני, תהליך זה עשוי להוסיף 'חדשים' לא נמצאו נתונים בקובץ המקורי, לכן עלולות להיות שגיאות גם אם לא בשימוש נכון, בדיקה קפדנית של הנתונים הכלליים לפני פרסום של הכיתובים.
תהליך האיסוף מופעל על ידי הוספה של אפשרויות נוספות כותרת ה-CSV להזנת קלט:
אפשרות | תיאור | ברירת מחדל |
---|---|---|
aggregation |
שיטת הצבירה שבה משתמשים כשמשלבים מספר ערכים
בעמודה הזו. חייב להיות אחד מהערכים AVG , COUNT ,
MAX , MIN או SUM . בלבד
בעל משמעות עבור מדדים. |
SUM |
rollup |
אם הערך הוא true , הקונספט של
העמודה הזו מופיעה (כלומר, נצברים);
שיש לו משמעות רק עבור מושגי מאפיינים. |
לא נכון |
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 שכולל את ההגדרות הבאות תכונות:
- "Roll up" (אוסף ערוצים) כדי לקבל את כל המחלה מקרים לפי קבוצת גיל בלבד
- שימוש בגרסה הקנונית
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 תצוגה חזותית.