דור DSPL

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 של DSPL
  • country_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 שכולל את ההגדרות הבאות תכונות:

  1. "Roll up" (אוסף ערוצים) כדי לקבל את כל המחלה מקרים לפי קבוצת גיל בלבד
  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 תצוגה חזותית.