dimension_group

Usage

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

כללים מיוחדים
  • הערך של type יכול להיות time,‏ duration או custom_calendar
  • בדרך כלל משתמשים בו עם הפרמטר timeframes או intervals
  • אם קבוצת המאפיינים לא מבוססת על שדה datetime, צריך להשתמש בפרמטר 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 הוא אופציונלי. אם קבוצת המאפיינים לא מבוססת על תאריך ושעה, אפשר לציין במקום זאת תקופה, חותמת זמן, תאריך או פורמט yyyymmdd. במקרה של קבוצות מאפיינים של 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 תקין שמכיל נתונים בפורמט של חותמת זמן, תאריך ושעה, תאריך, ראשית זמן יוניקס (Unix epoch) או yyyymmdd. השדות 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, שמתואר בדף התיעוד Incorporating SQL and referring to LookML objects, מאפשר ליצור גרסה ::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} ;;
}

בממשק המשתמש של Explore, הפעולה הזו יוצרת קבוצת מאפיינים בשם Duration Since First of Month, עם המאפיינים הנפרדים Weeks Since First of Month,‏ Days Since First of Month ו-Hours Since First of Month. אם מציינים את סוג ההפניה ::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 ;;
}

בממשק המשתמש של Explore, הפעולה הזו תיצור שלושה מאפיינים עם השמות Created Date,‏ Created Week ו-Created Month. שימו לב איך השם dimension_group משולב עם טווחי התאריכים כדי ליצור את שמות המאפיינים.

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

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

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

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

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

מסגרת זמן תיאור פלט לדוגמה
raw הערך הגולמי ממסד הנתונים, ללא המרה או שינוי של אזור הזמן. ‫raw נגיש רק ב-LookML ולא יופיע בדף Explore. מסגרת הזמן raw מחזירה חותמת זמן, בניגוד לרוב מסגרות הזמן האחרות שמחזירות מחרוזת מעוצבת. היא משמשת בעיקר לביצוע פעולות של תאריכים בשדה. 2014-09-03 17:15:00 +0000
yesno מאפיין yesno שמחזיר 'Yes' אם יש ערך לתאריך ולשעה, אחרת מחזיר 'No'. בניגוד למסגרות זמן אחרות, כשמפנים למאפיין מסגרת זמן של 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 timeframes, צריך להגדיר את הפרמטר 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
ClickHouse 26+
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+
Dremio 26+ with Arrow Flight SQL
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
ClickHouse 26+
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+
Dremio 26+ with Arrow Flight SQL
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: שדה 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 יוצר תוויות של שדות מאפיינים ותוויות של קבוצות בכלי לבחירת שדות ב'ניתוח נתונים' בהתאם לפרמטרים 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, שבו השבועות מתחילים ביום שני.

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

המסגרות הזמניות timeframes‏ 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 פועלים לפי אותו היגיון.