dimension_group

Usage

view: view_name {
  dimension_group:  field_name { ... }
}
היררכיה
dimension_group
מקבל
מזהה Looker (שימש כחלק הראשון של השם עבור כל ממד שנוצר על ידי קבוצת הממדים)

כללים מיוחדים
  • הערך של type יכול להיות time, duration או custom_calendar
  • בדרך כלל משתמשים בפרמטר timeframes או intervals
  • משתמשים בפרמטר datatype אם קבוצת המאפיינים לא מבוססת על שדה של תאריך ושעה
  • כדי למנוע המרה אוטומטית של אזור זמן בקבוצות מאפיינים של type: time, צריך להשתמש בפרמטר convert_tz.

הגדרה

הפרמטר dimension_group משמש ליצירה של קבוצת מאפיינים שמבוססים על זמן או על משך, בבת אחת. אתה מגדיר את קבוצת המאפיינים, וקבוצת המאפיינים תיצור קבוצה של מאפיינים בודדים עבור מרווחי זמן או מסגרות זמן שונות. לדוגמה, אפשר לציין קבוצת מאפיינים של type: time על סמך עמודה של חותמת זמן, וקבוצת המאפיינים תיצור מאפיינים תואמים כדי להציג את הנתונים לפי זמן, תאריך, שבוע, שעה, רבעון ושנה.

הצורה והפונקציה של קבוצת המאפיינים משתנות בהתאם לערך type של קבוצת המאפיינים:

קבוצות של מאפיינים מסוג משך

type: duration משמש בשילוב עם dimension_group כדי לחשב קבוצה של מאפייני משך זמן שמבוססים על מרווחי זמן.

הצורה של קבוצת מאפיינים של type: duration היא כדלקמן:

dimension_group: dimension_group_name {
  type: duration
  sql_start: SQL expression ;;  # often this is a single database column
  sql_end: SQL expression ;;  # often this is a single database column
  intervals: [interval, interval, …] # see following explanation for valid intervals
}

לקבוצות מאפיינים של type: duration:

  • הפרמטרים sql_start ו-sql_end מספקים ביטויי SQL שמגדירים את שעת ההתחלה ואת שעת הסיום של משך הזמן. פרטים נוספים מופיעים בקטע הגדרת ההתחלה והסיום של משך הזמן בדף הזה.

  • הפרמטר intervals מציין יחידה אחת או יותר של מרווחים שבהן צריך להשתמש כדי למדוד את הפרש הזמן. האפשרויות האפשריות מפורטות בקטע אפשרויות של מרווחי זמן בדף הזה.

  • ערכי משך הזמן מעוגלים כלפי מטה למספר השלם הקרוב ביותר.

  • הפרמטר datatype הוא אופציונלי. אם קבוצת המאפיינים שלך אינה מבוססת על תאריך ושעה, תוכל לציין במקום זאת פורמט של תקופה, חותמת זמן, תאריך או שנה/יום. במקרה של קבוצות מאפיינים מסוג type: duration, הפרמטר datatype חל גם על הפרמטרים sql_start ו-sql_end, ולכן חשוב לוודא שגם sql_start וגם sql_end הם מסוג הנתונים שצוין. הפרמטר datatype מתואר בפירוט רב יותר בקטע הגדרת מסד הנתונים datatype בדף הזה.

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

לדוגמה, אם יש לכם עמודות של enrollment_date ושל graduation_date, אתם יכולים ליצור קבוצת מאפייני משך כדי לראות כמה זמן התלמידים בילו בבית הספר, בחישוב של שבועות ושנים:

dimension_group: enrolled {
  type: duration
  intervals: [week, year]
  sql_start: ${TABLE}.enrollment_date ;;
  sql_end: ${TABLE}.graduation_date ;;
}

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

אפשרויות של מרווחי זמן

הפרמטר intervals מציין לקבוצת המאפיינים באילו יחידות של מרווחים להשתמש כדי למדוד את ההפרש בין הזמן sql_start לבין הזמן sql_end. הפרמטר intervals נתמך רק בקבוצות של מאפיינים מסוג type: duration.

אם לא כוללים את intervals, קבוצת המאפיינים תכלול את כל המרווחים האפשריים.

אלה האפשרויות לפרמטר intervals:

מרווח תיאור פלט לדוגמה
day מחשבת את הפרש הזמן בימים. 9 days
hour מחשבת את הפרש הזמן בשעות. 171 hours
minute מחשב את הפרש השעות בדקות. 10305 minutes
month מחשבת את הפרש הזמן בחודשים. 3 months
quarter מחשבת הפרש שעות ברבעונים של השנה. 2 quarters
second מחשבת את הפרש הזמן בשניות. 606770 seconds
week מחשבת את הפרש הזמן בשבועות. 6 weeks
year מחשבת את הפרש הזמן בשנים. 2 years

הגדרת ההתחלה והסיום של משך זמן

בקיבוצי מאפיינים מסוג type: duration, הפרמטרים sql_start ו-sql_end מספקים את נתוני ההתחלה והסיום שמשמשים לחישוב הפרש הזמן. שדות אלה יכולים לקבל כל ביטוי SQL חוקי המכיל נתונים בפורמטים חותמת זמן, תאריך שעה, תאריך, תקופת זמן או שנה/חודש. השדות sql_start ו-sql_end יכולים להכיל כל אחת מהאפשרויות הבאות:

  • הפניה לraw מסגרת זמן מקבוצת מאפיינים קיימת של type: time
  • הפניה למאפיין type: date_raw
  • ביטוי SQL שהוא חותמת זמן, כמו הפניה לעמודת SQL שהיא חותמת זמן
  • ביטוי SQL ששולף שעה ממסד הנתונים, באמצעות הביטוי המתאים לדיאלקט
  • הפניה לשדה LookML באמצעות ::datetime או ::date הפניה לסוג השדה

כדוגמה, נניח שיש לך ממד בשם faa_event_date_raw המכיל מידע על תאריך ושעה:

dimension: faa_event_date_raw {
  type: date_raw
  sql: ${TABLE}.event_date ;;
}

ניתן ליצור קבוצת מאפיינים של type: duration אשר מחשבת את משך הזמן שחלף מאז תאריך האירוע של ה-FAA. כדי לעשות את זה, אפשר להשתמש במאפיין faa_event_date_raw כזמן ההתחלה של החישוב, ואז להשתמש בביטוי SQL של הניב שלכם לזמן הנוכחי כזמן הסיום של החישוב. דוגמה זו היא עבור מסד נתונים MySQL:

dimension_group: since_event {
  type: duration
  intervals: [hour, day]
  sql_start: ${faa_event_date_raw} ;;
  sql_end: CURRENT_TIMESTAMP();;
}

בממשק המשתמש של כלי הניתוחים, ייווצר קיבוץ מאפיינים בשם משך הזמן שעבר מאז האירוע, עם מאפיינים נפרדים בשם שעות שעברו מאז האירוע וימים שעברו מאז האירוע.

הפניה למרווחי זמן משדה אחר ב-LookML

כדי להפנות לערך interval ב-dimension_group של type: duration, משתמשים בתחביר ${interval_fieldname}, עם גרסת הרבים של הערך interval. לדוגמה, בדוגמה הבאה של LookML, המדד average_days_since_event משתמש ב-${days_since_event} כדי להפנות למרווח day בקבוצת המאפיינים since_event:


dimension_group: since_event {
  type: duration
  intervals: [hour, day, week, month, quarter, year]
  sql_start: ${faa_event_date_raw} ;;
  sql_end: CURRENT_TIMESTAMP();;
}

measure: average_days_since_event {
  type: average
  sql: ${days_since_event} ;;
}

שימוש בהפניות לסוגי שדות LookML בשדות משך

כדי ליצור שדה מותאם אישית של משך, אפשר לציין סוג הפניה של ::date או ::datetime למאפיינים שמפנים אליהם בפרמטרים sql_start ו-sql_end של קבוצת מאפיינים מסוג type: duration. התחביר view_name.field_name::type, שמתואר בדף התיעוד שילוב של SQL והפניה לאובייקטים של LookML, מאפשר ליצור גרסה של שדה ::date או ::datetime בלי להמיר את ההפניות למאפיינים האלה למחרוזות.

לדוגמה, נניח שיש לכם קבוצת מאפיינים created של type: time עם מסגרות זמן של time,‏ date,‏ week,‏ month ו-raw, שמוגדרות באופן הבא:


dimension_group: created {
  type: time
  timeframes: [time, date, week, month, raw]
  sql: ${TABLE}.created_at ;;
}

באמצעות המאפיינים created_month ו-created_time, ניתן ליצור קבוצת מאפיינים של type: duration המחשבת את משך הזמן בין תאריך מהשדה created_date לבין היום הראשון של החודש בו חל תאריך זה, הנמדד בשבועות, ימים ושעות:


dimension_group: since_first_of_month {
  type: duration
  intervals: [week, day, hour]
  sql_start: ${created_month::datetime} ;;
  sql_end: ${created_time::datetime} ;;
}

בממשק המשתמש של כלי הניתוחים, נוצרת קבוצת מאפיינים בשם משך הזמן מאז תחילת החודש, עם המאפיינים שבועות מאז תחילת החודש, ימים מאז תחילת החודש ושעות מאז תחילת החודש. הגדרת סוג ההפניה ::datetime לשדות שאליהם יש הפניה בפרמטרים sql_start ו-sql_end מאפשרת להתייחס למאפיינים created_month ו-created_time כחותמות זמן ב-SQL שנוצר.

לדוגמה, נניח שמשתמש בוחר את המאפיינים תאריך היצירה ומספר הימים שעברו מתחילת החודש מתוך בורר השדות. אם אחד מהערכים שמוחזרים עבור Created Date הוא 2019-03-10, אז הערך שמוחזר עבור Days Since First of Month יהיה 9 days.

קבוצות מאפיינים מסוג זמן

הפרמטר type: time משמש בשילוב עם dimension_group והפרמטר timeframes כדי ליצור קבוצה של מאפיינים שמבוססים על זמן. לדוגמה, אפשר ליצור מאפיין של תאריך, שבוע וחודש על סמך עמודה אחת של חותמת זמן.

הפורמט של קבוצת מאפיינים של type: time הוא כדלקמן:

dimension_group: dimension_group_name {
  type: time
  timeframes: [timeframe, timeframe, …] # see following explanation for valid timeframes
  sql: SQL expression ;;  # often this is a single database column
  datatype: epoch| timestamp | datetime | date | yyyymmdd # defaults to datetime
  convert_tz: yes | no   # defaults to yes
}

לקבוצות מאפיינים של type: time:

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

  • הפרמטר sql של קבוצות המאפיינים type: time יכול לקבל כל ביטוי SQL תקין שמכיל נתונים בפורמט של חותמת זמן, תאריך ושעה, תאריך, ראשית זמן יוניקס (Unix epoch) או yyyymmdd.

  • הפרמטר datatype הוא אופציונלי. אם קבוצת המאפיינים לא מבוססת על תאריך ושעה, אפשר לציין במקומה פורמט של תקופה, חותמת זמן, תאריך או yyyymmdd. הסבר מפורט יותר על המאפיין הזה מופיע בקטע הגדרת מסד הנתונים datatype בדף הזה.

  • הפרמטר convert_tz הוא אופציונלי ומאפשר למנוע המרה אוטומטית של אזור הזמן. הסבר מפורט יותר מופיע בקטע המרות של אזורי זמן וconvert_tz בדף הזה.

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

כדוגמה, נניח שהייתה לך עמודה בשם created_at שהכילה מידע על תאריך ושעה. אתה רוצה ליצור מימד של תאריך, שבוע וחודש המבוסס על תאריך ושעה זה. תוכלו להשתמש:

dimension_group: created {
  type: time
  timeframes: [date, week, month]
  sql: ${TABLE}.created_at ;;
}

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

אפשרויות של מסגרת זמן

הפרמטר timeframes נתמך רק בקבוצות של מאפיינים מסוג type: time. לגבי קבוצות מאפיינים מסוג type: duration, צריך להשתמש במקום זאת בפרמטר intervals.

הפרמטר timeframes מציין לקבוצת המאפיינים אילו מאפיינים היא צריכה לייצר וכולל את האפשרויות הבאות:

אם לא משתמשים בפרמטר timeframes לקבוצת מאפיינים של type: time, או אם משאירים את הפרמטר timeframes ריק (timeframes: []), הניתוח יכלול את קבוצת ברירת המחדל של מסגרות הזמן לקבוצת המאפיינים:

מסגרות זמן מיוחדות

מסגרת זמן תיאור פלט לדוגמה
raw הערך הגולמי ממסד הנתונים, ללא המרה או שינוי של אזור הזמן. אפשר לגשת אל raw רק ב-LookML, והוא לא יופיע בדף 'ניתוח'. הפונקציה raw מחזירה חותמת זמן, בניגוד לרוב הפונקציות האחרות שקשורות לפרקי זמן שמחזירות מחרוזת מעוצבת. הוא משמש בעיקר לביצוע פעולות תאריך על שדה. 2014-09-03 17:15:00 +0000
yesno ממד yesno, שמחזיר "כן" אם לתאריך ולשעה יש ערך, אחרת "לא". בשונה מטווחים אחרים, כשמפנים למאפיין של טווח זמן yesno משדה אחר, לא כוללים את טווח הזמן בהפניה. לדוגמה, כדי להתייחס למסגרת זמן של yesno ב-dimension_group: created, השתמש בתחביר ${created}, ולא ב-${created_yesno}. Yes

מסגרות זמן

מסגרת זמן תיאור פלט לדוגמה
time התאריך והשעה של השדה הבסיסי (בניבים מסוימים של SQL מוצגת רמת דיוק גבוהה כמו זו שקיימת במסד הנתונים, ובניבים אחרים מוצגת רמת דיוק של שניות בלבד) 2014-09-03 17:15:00
time_of_day שעה 17:15
hour התאריך והשעה נחתכים לשעה הקרובה ביותר 2014-09-03 17
hour_of_day שעה שלמה ביום של השדה הבסיסי 17
hourX חלוקה של כל יום למרווחים עם מספר השעות שצוין. איך משתמשים ב-hourX
minute התאריך והשעה נחתכים לדקה הקרובה ביותר 2014-09-03 17:15
minuteX מחלק את כל שעה למרווחים עם מספר הדקות שצוין. איך משתמשים ב-minuteX
second התאריך והשעה נחתכים לשנייה הקרובה ביותר 2014-09-03 17:15:00
millisecond התאריך והשעה נחתכים למילי-שנייה הקרובה ביותר (בקטע תמיכה בדיאלקטים למילי-שניות ולמיקרו-שניות בדף הזה יש מידע על תמיכה בדיאלקטים). 2014-09-03 17:15:00.000
millisecondX הפונקציה מפצלת כל שנייה למרווחים עם מספר אלפיות השנייה שצוין (מידע על תמיכה בניבים זמין בקטע תמיכה בניבים באלפיות שנייה ובמיקרו-שנייה בדף הזה). איך משתמשים ב-millisecondX
microsecond התאריך והשעה נחתכים למיקרו-שנייה הקרובה ביותר (בקטע תמיכה בניבים של אלפיות השנייה ומיקרו-שנייה בדף הזה יש מידע על תמיכה בניבים). 2014-09-03 17:15:00.000000

מסגרות זמן של תאריכים

מסגרת זמן תיאור פלט לדוגמה
date התאריך של השדה הבסיסי 2017-09-03

מסגרות זמן שבועיות

מסגרת זמן תיאור פלט לדוגמה
week התאריך של השבוע שמתחיל ביום שני של התאריך והשעה הבסיסיים 2017-09-01
day_of_week יום בשבוע בלבד Wednesday
day_of_week_index אינדקס יום בשבוע (0 = יום שני, 6 = יום ראשון) 2

מסגרות זמן חודשיות

מסגרת זמן תיאור פלט לדוגמה
month השנה והחודש של התאריך והשעה הבסיסיים 2014-09
month_num מספר שלם של החודש של תאריך ושעת הבסיס 9
fiscal_month_num מספר שלם של החודש הפיסקלי של התאריך והשעה הבסיסיים 6
month_name שם החודש September
day_of_month יום בחודש 3

כדי להשתמש בfiscal_month_num מסגרות הזמן, צריך להגדיר את הפרמטר fiscal_month_offset במודל.

מסגרות זמן רבעוניות

מסגרת זמן תיאור פלט לדוגמה
quarter השנה והרבעון של התאריך והשעה הבסיסיים 2017-Q3
fiscal_quarter שנת הכספים והרבעון של התאריך והשעה הבסיסיים 2017-Q3
quarter_of_year הרבעון בשנה, לפניו האות Q Q3
fiscal_quarter_of_year הרבעון הפיסקאלי של השנה, לפניו מופיעה האות Q Q3

כדי להשתמש בפרקי הזמן fiscal_quarter ו-fiscal_quarter_of_year, צריך להגדיר את הפרמטר fiscal_month_offset במודל.

מסגרות זמן שנתיות

מסגרת זמן תיאור פלט לדוגמה
year שנה שלמה של תאריך ושעה הבסיס 2017
fiscal_year שנת הכספים השלמה של התאריך והשעה הבסיסיים FY2017
day_of_year יום בשנה 143
week_of_year השבוע בשנה כמספר 17

כדי להשתמש בפרק הזמן fiscal_year, צריך להגדיר את הפרמטר fiscal_month_offset במודל.

שימוש ב-hourX

ב-hourX, ‏ X מוחלף ב-2, 3, 4, 6, 8 או 12.

כל יום יפוצל למרווחי זמן עם מספר השעות שצוין. לדוגמה, הערך hour6 יפצל כל יום לפלחים של 6 שעות, שיופיעו באופן הבא:

  • 2014-09-01 00:00:00
  • 2014-09-01 06:00:00
  • 2014-09-01 12:00:00
  • 2014-09-01 18:00:00

לדוגמה, אם הערך של time הוא 2014-09-01 08:03:17, הערך של hour6 יהיה 2014-09-01 06:00:00.

שימוש ב-minuteX

ב-minuteX, ‏ X מוחלף ב-2, 3, 4, 5, 6, 10, 12, 15, 20 או 30.

כל שעה תחולק למרווחי זמן עם מספר הדקות שצוין. לדוגמה, הערך minute15 יפצל כל שעה לקטעים של 15 דקות, שיופיעו באופן הבא:

  • 2014-09-01 01:00:00
  • 2014-09-01 01:15:00
  • 2014-09-01 01:30:00
  • 2014-09-01 01:45:00

לדוגמה, אם הערך של time הוא 2014-09-01 01:17:35, הערך של minute15 יהיה 2014-09-01 01:15:00.

שימוש ב-millisecondX

ב-millisecondX, ‏ X מוחלף ב-2, 4, 5, 8, 10, 20, 25, 40, 50, 100, 125, 200, 250 או 500.

כל שנייה תחולק למרווחי זמן עם מספר אלפיות השנייה שצוין. לדוגמה, millisecond250 יפצל כל שנייה לפלחים של 250 אלפיות השנייה, שיופיעו באופן הבא:

  • 2014-09-01 01:00:00.000
  • 2014-09-01 01:00:00.250
  • 2014-09-01 01:00:00.500
  • 2014-09-01 01:00:00.750

לדוגמה, אם הערך של time הוא 2014-09-01 01:00:00.333, הערך של millisecond250 יהיה 2014-09-01 01:00:00.250.

המרות של אזורי זמן וconvert_tz

באופן כללי, חישובים של זמן (הפרשים, משכי זמן וכו') פועלים בצורה תקינה רק כשמבצעים פעולות על ערכי זמן שהומרו לאותו אזור זמן. לכן חשוב לזכור את אזורי הזמן כשכותבים LookML.

ב-Looker יש הגדרות שונות של אזורי זמן שממירות נתונים מבוססי-זמן בין אזורי זמן שונים. כברירת מחדל, Looker מבצע המרה של אזור הזמן. הconvert_tz הפרמטר נתמך עבור קבוצות ממדים שלtype: time. אם אתם לא רוצים ש-Looker יבצע המרה של אזור זמן למאפיין או לקבוצת מאפיינים מסוימים, אתם יכולים להשתמש בפרמטר convert_tz שמתואר בדף התיעוד של הפרמטר convert_tz.

תמיכה בדיאלקטים של שכוללים אלפיות שנייה ומיליוניות שנייה

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

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

דיאלקט נתמך?
Actian Avalanche
Amazon Athena
Amazon Aurora MySQL
Amazon Redshift
Amazon Redshift 2.1+
Amazon Redshift Serverless 2.1+
Apache Druid
Apache Druid 0.13.x - 0.17.x
Apache Druid 0.18+
Apache Hive 2.3+
Apache Hive 3.1.2+
Apache Spark 3+
ClickHouse
Cloudera Impala 3.1+
Cloudera Impala 3.1+ with Native Driver
Cloudera Impala with Native Driver
DataVirtuality
Databricks
Denodo 7
Denodo 8 & 9
Dremio
Dremio 11+
Exasol
Google BigQuery Legacy SQL
Google BigQuery Standard SQL
Google Cloud AlloyDB for PostgreSQL
Google Cloud PostgreSQL
Google Cloud SQL
Google Spanner
Greenplum
HyperSQL
IBM Netezza
MariaDB
Microsoft Azure PostgreSQL
Microsoft Azure SQL Database
Microsoft Azure Synapse Analytics
Microsoft SQL Server 2008+
Microsoft SQL Server 2012+
Microsoft SQL Server 2016
Microsoft SQL Server 2017+
MongoBI
MongoSQL
MySQL
MySQL 8.0.12+
Oracle
Oracle ADWC
PostgreSQL 9.5+
PostgreSQL pre-9.5
PrestoDB
PrestoSQL
SAP HANA
SAP HANA 2+
SingleStore
SingleStore 7+
Snowflake
Teradata
Trino
Vector
Vertica

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

דיאלקט נתמך?
Actian Avalanche
Amazon Athena
Amazon Aurora MySQL
Amazon Redshift
Amazon Redshift 2.1+
Amazon Redshift Serverless 2.1+
Apache Druid
Apache Druid 0.13.x - 0.17.x
Apache Druid 0.18+
Apache Hive 2.3+
Apache Hive 3.1.2+
Apache Spark 3+
ClickHouse
Cloudera Impala 3.1+
Cloudera Impala 3.1+ with Native Driver
Cloudera Impala with Native Driver
DataVirtuality
Databricks
Denodo 7
Denodo 8 & 9
Dremio
Dremio 11+
Exasol
Google BigQuery Legacy SQL
Google BigQuery Standard SQL
Google Cloud AlloyDB for PostgreSQL
Google Cloud PostgreSQL
Google Cloud SQL
Google Spanner
Greenplum
HyperSQL
IBM Netezza
MariaDB
Microsoft Azure PostgreSQL
Microsoft Azure SQL Database
Microsoft Azure Synapse Analytics
Microsoft SQL Server 2008+
Microsoft SQL Server 2012+
Microsoft SQL Server 2016
Microsoft SQL Server 2017+
MongoBI
MongoSQL
MySQL
MySQL 8.0.12+
Oracle
Oracle ADWC
PostgreSQL 9.5+
PostgreSQL pre-9.5
PrestoDB
PrestoSQL
SAP HANA
SAP HANA 2+
SingleStore
SingleStore 7+
Snowflake
Teradata
Trino
Vector
Vertica

ציון מסד הנתונים datatype

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

עבור קבוצות מאפיינים של type: time, הפרמטר datatype חל על הפרמטר sql של קבוצת המאפיינים.

במקרה של קבוצות מאפיינים מסוג type: duration, הפרמטר datatype חל גם על הפרמטרים sql_start וגם על sql_end, ולכן חשוב לוודא שגם sql_start וגם sql_end הם מאותו סוג נתונים שצוין.

הפרמטר datatype מקבל את הערכים הבאים:

  • epoch: שדה של ראשית זמן SQL (כלומר, מספר שלם שמייצג את מספר השניות מראשית זמן יוניקס).
  • date: שדה תאריך ב-SQL (כלומר, שדה שלא מכיל מידע על השעה ביום).
  • datetime: שדה של תאריך ושעה ב-SQL.
  • timestamp: שדה של חותמת זמן ב-SQL.
  • yyyymmdd: שדה SQL שמכיל מספר שלם שמייצג תאריך בפורמט YYYYMMDD.

ערך ברירת המחדל של datatype הוא timestamp.

קבוצות של מאפיינים מסוג לוח שנה מותאם אישית

אם הטמעתם לוחות שנה מותאמים אישית בפרויקט LookML, אתם יכולים להשתמש ב-type: custom_calendar בשילוב עם הפרמטר dimension_group כדי ליצור קבוצה של מאפיינים מבוססי-זמן על סמך טבלת לוח שנה מותאם אישית שהגדרתם במסד הנתונים. במאמר שימוש ביומנים בהתאמה אישית ב-Looker מוסבר איך מגדירים יומנים בהתאמה אישית בפרויקט של LookML.

הצורה של קבוצת מאפיינים של type: custom_calendar היא כדלקמן:

dimension_group: dimension_group_name {
  type: custom_calendar
  custom_timeframes: [custom_timeframe, custom_timeframe, …] # see the following section for valid custom timeframes
  sql: SQL expression ;;  # often this refers to a single database column
  based_on_calendar: custom_calendar_view
}

לקבוצות מאפיינים של type: custom_calendar:

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

  • הפרמטר sql של קבוצות המאפיינים type: custom_calendar יכול לקבל כל ביטוי SQL תקין שמכיל נתונים בפורמט של חותמת זמן, תאריך ושעה, תאריך, ראשית זמן יוניקס (Unix epoch) או yyyymmdd.

  • הפרמטר based_on_calendar מציין את שם התצוגה של היומן המותאם אישית שיצרתם ב-LookML.

  • הפרמטר convert_tz הוא אופציונלי ומאפשר למנוע המרה אוטומטית של אזור הזמן. הסבר מפורט יותר מופיע בקטע המרות של אזורי זמן וconvert_tz בדף הזה.

  • הפרמטר datatype הוא אופציונלי. אם קבוצת המאפיינים לא מבוססת על תאריך ושעה, אפשר לציין במקומה פורמט של תקופה, חותמת זמן, תאריך או yyyymmdd. זה מתואר ביתר פירוט בסעיף ציון סוג הנתונים של מסד הנתונים בדף זה.

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

הנה דוגמה לקבוצת מאפיינים של לוח שנה מותאמת אישית בקובץ LookML של orders.view:

view: orders

include: "/views/retail_custom_calendar.view"

dimension_group: created {
  type: custom_calendar
  sql: ${TABLE}.created_at ;;
  custom_timeframes: [custom_year, custom_quarter]
  based_on_calendar: retail_custom_calendar
}

שימו לב לרכיבים הבאים בקבוצת המאפיינים המותאמים אישית של היומן:

  • type: custom_calendar – קבוצת המאפיינים מוגדרת כסוג לוח שנה מותאם אישית.
  • sql: ${TABLE}.created_at ;; – קבוצת המאפיינים משתמשת במידע על תאריך ושעה מהעמודה orders.created_at במסד הנתונים.
  • custom_timeframes: [custom_year, custom_quarter] – קבוצת המאפיינים תסומן בתווית Created Custom Calendar ותכיל מסגרות זמן עם התוויות Fiscal Year ו-Fiscal Quarter. מידע נוסף זמין במאמר בנושא תוויות לקבוצות של מאפייני לוח שנה מותאמים אישית.
  • based_on_calendar: retail_custom_calendar – קבוצת המאפיינים תצטרף לנתונים מהלוח שנה המותאם אישית שהוגדר בתצוגה retail_custom_calendar של פרויקט LookML, לנתונים בעמודה orders.created_at של מסד הנתונים הזה, כדי לספק תוצאות של שאילתות באמצעות לוח השנה המותאם אישית. במאמר שימוש בלוחות שנה בהתאמה אישית ב-Looker מוסבר איך מגדירים לוח שנה בהתאמה אישית.

custom_timeframes

אם הגדרתם קבוצת מאפיינים כ-type: custom_calendar, ואתם לא רוצים לכלול בקבוצת המאפיינים את כל טווחי התאריכים המותאמים אישית האפשריים, אתם יכולים להשתמש בפרמטר custom_timeframes כדי לציין אילו טווחי תאריכים אתם רוצים לכלול בקבוצת המאפיינים. המערכת תומכת בטווחי הזמן הבאים בהתאמה אישית:

לוח זמנים תיאור הנחות (עבור _num סוגים)

custom_date

התאריך הספציפי מתצוגת היומן.

custom_day_num

היום המספרי מתוך תצוגת היומן. ההנחה היא עד 371 ימים

custom_period

תקופה כללית ביומן (למשל ביומנים של 4-4-5).

custom_period_num

הערך המספרי של התקופה המותאמת אישית. הפונקציה מניחה שיש 12 תקופות בשנה.

custom_quarter

הרבעון מתצוגת לוח שנה.

custom_quarter_num

הרבעון המספרי של השנה. החישוב מבוסס על 4 רבעונים בשנה.

custom_season

תקופה עונתית מותאמת אישית.

custom_season_num

הערך המספרי של העונה המותאמת אישית. החישוב מבוסס על 2 עונות בשנה.

custom_week

השבוע בתצוגת היומן.

custom_week_of_year

השבוע בשנה כמספר. מניח עד 53 שבועות בשנה.

custom_year

השנה מתצוגת היומן.

custom_year_num

הערך המספרי של השנה המותאמת אישית.

based_on_calendar

עבור קבוצות מאפיינים שהוגדרו כ-type: custom_calendar, הפרמטר based_on_calendar מציין את שם התצוגה של היומן המותאם אישית שיצרתם ב-LookML.

תוויות לקבוצות של מאפייני יומן מותאמים אישית

Looker יוצר תוויות שדות ממד ותוויות קבוצות בבורר השדות Explore בהתבסס על האםlabel אוֹgroup_label פרמטרים משמשים ב-type: custom_calendar קבוצת מאפיינים:

  • ברירת מחדל (לא צוינו label ולא group_label):
    • Looker מקבץ את מסגרות הזמן של קבוצת המאפיינים תחת תווית קבוצת המאפיינים המוגדרת כברירת מחדל, שהיא שם קבוצת המאפיינים המשולב עם Custom Calendar (לוח שנה מותאם אישית) (לדוגמה, Created Custom Calendar (נוצר לוח שנה מותאם אישית)).
    • ‫Looker מוסיף את הקידומת Fiscal לכל שם של מסגרת זמן (לדוגמה, Fiscal Date, ‏ Fiscal Week, ‏ Fiscal Year).
  • group_label בלבד:
    • ‫Looker מקבץ את מסגרות הזמן של קבוצת המאפיינים מתחת לערך group_label שצוין.
    • הפונקציה Looker מוסיפה את שם קבוצת הממדים ואת המילה Fiscal לכל שם של מסגרת זמן (לדוגמה, Created Fiscal Date, Created Fiscal Week, Created Fiscal Year).
  • label בלבד:
    • ‫Looker מקבץ את מסגרות הזמן של קבוצת המאפיינים מתחת לערך label שנוסף לו Custom Calendar (לדוגמה, אם קבוצת מאפיינים מוגדרת עם label: "My Label", מסגרות הזמן יקובצו מתחת ל-My Label Custom Calendar).
    • הפונקציה Looker מוסיפה את המילה Fiscal לכל שם של מסגרת זמן (לדוגמה, Fiscal Date, Fiscal Week, Fiscal Year).
  • צוינו גם group_label וגם label:
    • ‫Looker מקבץ את מסגרות הזמן של קבוצת המאפיינים מתחת לערך group_label שצוין.
    • Looker מוסיף את הערך label לכל מסגרת זמן (לדוגמה, עבור קבוצת מימדים שהוגדרה עם label: "My Label", מסגרות הזמן ייקראו My Label Date, My Label Week, My Label Year).

התאמה לשוק המקומי של קבוצות מאפיינים

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

דברים שכדאי לקחת בחשבון

צריך להפנות לקבוצות של מאפיינים באמצעות המאפיינים הנפרדים שלהן

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

לדוגמה, נבחן את קבוצת המאפיינים הזו:

dimension_group: created {
  type: time
  timeframes: [date, week, month]
  sql: ${TABLE}.created_at ;;
}

כדי להפנות לאחד מהמאפיינים האלה בשדה אחר של LookML, משתמשים בהפניה ${created_date}, ${created_week} או ${created_month}. אם תנסה להשתמש רק ב-${created}, Looker לא ידע לאיזו מסגרת זמן אתה מתייחס ותופיע שגיאה.

מאותה סיבה, לא מומלץ להשתמש בפרמטר primary_key בקבוצת מאפיינים אם מציינים יותר מ-timeframe.

טיפ מצוות הצ'אט: אנחנו מקבלים הרבה שאלות לגבי שגיאת האימות שיכולה להתרחש אם משתמשים ב-primary_key ב-dimension_group עם יותר מ-timeframe אחד. מידע נוסף זמין בפוסט לקהילה בנושא מסגרות זמן וקבוצות מאפיינים ב-Looker .

נתוני חותמת זמן שכוללים מידע על אזור זמן

בחלק מהניבים של מסדי הנתונים יש אפשרויות של חותמות זמן שכוללות מידע על אזור הזמן. כך אפשר לאחסן נתונים של חותמות זמן בשדה יחיד שעשוי לכלול כמה אזורי זמן. יכול להיות ששורה אחת של נתונים תאוחסן ב-UTC, ושורה אחרת תאוחסן לפי שעון החוף המזרחי. לדוגמה, במאמרי העזרה חותמת הזמן של Snowflake TIMESTAMP_LTZ, TIMESTAMP_NTZ, TIMESTAMP_TZ יש מידע על האפשרויות של חותמת הזמן של דיאלקט Snowflake.

במקרה כזה, יכולות להתרחש שגיאות כש-Looker מבצע המרות של אזורי זמן. כדי למנוע את זה, בפרמטר sql של המאפיין, צריך להגדיר במפורש את נתוני חותמת הזמן לסוג חותמת זמן שלא מבצע המרה של אזור זמן. לדוגמה, בניב Snowflake, אפשר להשתמש בפונקציה TO_TIMESTAMP כדי להמיר את נתוני חותמת הזמן.

אפשר ליצור מאפיינים נפרדים של זמן או משך

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

אפשר לשנות את היום הראשון בשבוע

כברירת מחדל, השבועות ב-Looker מתחילים ביום שני. אפשר לשנות את ההגדרה הזו באמצעות הפרמטר week_start_day ברמת המודל.

חשוב לזכור שהתאריך week_start_day לא פועל עם טווח הזמן week_of_year כי טווח הזמן הזה מבוסס על תקן ISO, שמשתמש בשבועות שמתחילים ביום שני.

מסננים בהתאמה אישית ושדות בהתאמה אישית לא תומכים בכל מסגרות הזמן

מסגרות הזמן day_of_week,‏ fiscal_quarter_of_year,‏ millisecond,‏ millisecondX,‏ microsecond,‏ month_name,‏ quarter_of_year ו-time_of_day לא נתמכות במסננים בהתאמה אישית או בשדות בהתאמה אישית.

במרווחי זמן של חודש, רבעון ושנה נספרות רק תקופות מלאות

במרווח month בקבוצת מאפיינים duration, חודש נחשב כחודש שעבר רק אם יום הסיום גדול מיום ההתחלה או שווה לו. לדוגמה:

  • ההפרש בחודשים בין 26 בספטמבר ל-25 באוקטובר באותה שנה הוא 0.
  • ההפרש בחודשים בין 26 בספטמבר ל-26 באוקטובר באותה שנה הוא 1.

המרווחים quarter ו-year פועלים לפי אותה לוגיקה.