שימוש
view: my_view {
derived_table: {
materialized_view: yes
...
}
}
|
היררכיה
materialized_view |
ערך ברירת המחדל
no
אמצעי תשלום מקובלים
ערך בוליאני (yes או no)
כללים מיוחדים
materialized_view נתמכת רק בדיאלקטים ספציפיים
|
הגדרה
הפונקציונליות של תצוגה מהותית היא תכונה מתקדמת. בהתאם לניב, תצוגה מהותית יכולה לצרוך משאבים רבים, ולכן חשוב להבין את ההטמעה של תצוגות מהותיות בניב שלכם. כדי לקבל מידע על ההתנהגות של הניב ועל התדירות שבה הניב מרענן את הנתונים של תצוגות מהותיות, עיינו במסמכי התיעוד של הניב.
תצוגות מהותיות מאפשרות לכם להשתמש בפונקציונליות של מסד הנתונים כדי לשמור טבלאות נגזרות בפרויקט Looker. אם הדיאלקט של מסד הנתונים תומך בתצוגות מהותיות והחיבור ל-Looker מוגדר עם האפשרות טבלאות נגזרות מתמידות (PDT), אתם יכולים ליצור תצוגה מהותית על ידי ציון materialized_view: yes לטבלה נגזרת. יש תמיכה בתצוגות מהותיות גם בטבלאות נגזרות מבוססות LookML וגם בטבלאות נגזרות שמבוססות על SQL.
בדומה לטבלה נגזרת מתמידה (PDT), תצוגה מהותית היא תוצאת שאילתה שמאוחסנת כטבלה בסכימת הבסיס של מסד הנתונים. ההבדל העיקרי בין PDT לתצוגה מהותית הוא באופן שבו הטבלאות מתרעננות:
- בטבלאות PDT, אסטרטגיית השמירה מוגדרת ב-Looker, והשמירה מנוהלת על ידי Looker.
- בתצוגות מהותיות, מסד הנתונים אחראי לתחזוקה ולרענון של הנתונים בטבלה.
לכן, כדי להשתמש בפונקציונליות של תצוגה מהותית, צריך ידע מתקדם בניב ובמאפיינים שלו. ברוב המקרים, מסד הנתונים ירענן את התצוגה המהותית בכל פעם שהוא יזהה נתונים חדשים בטבלאות שהתצוגה המהותית שולחת אליהן שאילתות. תצוגות מהותיות מתאימות במיוחד לתרחישים שבהם נדרשים נתונים בזמן אמת.
אם לטבלה נגזרת עם הצהרת materialized_view: yes יש גם פרמטר datagroup, sql_trigger_value או persist_for, ההצהרה materialized_view: yes תקבל עדיפות.
דוגמה
הטבלה הנגזרת e_flights_pdt כוללת את ההצהרה materialized_view: yes, ולכן נוצרת תצוגה מהותית בסכימת הבסיס של מסד הנתונים:
view: e_flights_pdt {
derived_table: {
materialized_view: yes
explore_source: ontime {
column: flight_num {}
column: carrier {}
column: arr_date {}
}
}
dimension: flight_num {}
dimension: carrier {}
dimension: arr_date {
type: date
}
}
כש-Looker יוצר את התצוגה המהותית
Looker יוצר תצוגות מהותיות באותו אופן כמו טבלאות PDT אחרות. אם יוצרים את התצוגה המהותית ומריצים עליה שאילתה ב-Development Mode, Looker ייצור גרסת פיתוח של התצוגה המהותית, שאפשר להשתמש בה גם בסביבת הייצור. פרטים נוספים זמינים בקטע טבלאות קבועות במצב פיתוח בדף התיעוד טבלאות נגזרות ב-Looker.
אחרת, התצוגה המהותית נוצרת במהלך המחזור הבא של Looker regenerator, אחרי ש-LookML של הטבלה הנגזרת המשויכת נפרס בסביבת הייצור באמצעות materialized_view: yes.
תצוגות יציבות של מסד נתונים לתצוגות מהותיות
מערכת Looker יוצרת באופן אוטומטי תצוגת מסד נתונים יציבה לכל תצוגה מהותית. תצוגת מסד הנתונים היציבה נוצרת במסד הנתונים עצמו, כך שאפשר להריץ עליה שאילתות מחוץ ל-Looker. זו אותה פונקציונליות של תצוגה יציבה שמשמשת עם הפרמטר publish_as_db_view.
Looker יוצר את התצוגה היציבה במהלך המחזור הבא של מחולל Looker, אחרי שקוד LookML של התצוגה המהותית נפרס בסביבת הייצור. אחרי שתצוגת מסד הנתונים היציבה תפורסם, תוכלו להריץ עליה שאילתות ישירות.
אדמינים או משתמשים עם ההרשאה see_pdts יכולים לקבל את השם של תצוגת מסד הנתונים היציבה מהמודל PDT Details בדף Persistent Derived Tables בקטע Admin ב-Looker.
כדי לשלוח שאילתה ישירות לתצוגה מהותית, פשוט מוסיפים את שם סכימת הבסיס לפני שם הטבלה. לדוגמה, אם השם של תצוגת מסד הנתונים היציבה הוא NN_e_redflight_e_redflight_publish_as_db והשם של סכימת הבסיס הוא tmp, אפשר לשלוח שאילתה לתצוגת מסד הנתונים היציבה באמצעות פקודה כזו:
SELECT * from tmp.NN_e_redflight_e_redflight_publish_as_db
הדרישות לגבי תצוגות מהותיות
כדי להשתמש בתצוגות מהותיות בפרויקט Looker, צריך:
- דיאלקט של מסד נתונים שתומך בתצוגות מהותיות. רשימת הניבים שתומכים בתצוגות מהותיות מופיעה בקטע תמיכה בניבים בתצוגות מהותיות בדף הזה.
- סכימת בסיס במסד הנתונים. זו יכולה להיות כל סכימה במסד הנתונים, אבל מומלץ ליצור סכימה חדשה שתשמש רק למטרה הזו. מנהל מסד הנתונים צריך להגדיר את הסכימה עם הרשאת כתיבה למשתמש של מסד הנתונים של Looker.
- חיבור Looker שמוגדר עם האפשרות טבלאות נגזרות מתמידות (PDT). בדרך כלל מגדירים את זה כשמגדירים את החיבור ל-Looker בפעם הראשונה (הוראות לניב של מסד הנתונים שלכם מפורטות בדף התיעוד Looker dialects), אבל אפשר גם להפעיל טבלאות PDT בחיבור אחרי ההגדרה הראשונית.
- חיבור ל-Looker עם הרשאת
CREATE TABLEלסכימה הזמנית במסד הנתונים. זו אותה הרשאה שנדרשת ליצירת טבלאות PDT. בנוסף, כדי ליצור את תצוגת מסד הנתונים היציבה של התצוגה המהותית, לחיבור צריכות להיות הרשאותCREATE VIEWלסכימה הזמנית במסד הנתונים. אתם יכולים לבדוק את החיבור כדי לוודא שיש לו את ההרשאות הבאות:- אם טבלאות PDT מופעלות בחיבור, ולחיבור יש את ההרשאה
CREATE TABLE, בדיקת החיבור תחזיר תוצאה כמוCan use persistent derived tables in temp schema "docsexamples_scratch" in database "demo_db". - אם החיבור מאפשר תצוגות יציבות ויש לו את ההרשאה
CREATE VIEW, בדיקת החיבור תחזיר תוצאה כמוCan use stable views in temp schema "docsexamples_scratch" in database "flightstats".
- אם טבלאות PDT מופעלות בחיבור, ולחיבור יש את ההרשאה
שיקולים חשובים לגבי תצוגות מהותיות
כשמשתמשים בתצוגות מהותיות, Looker לא מתחזק ומרענן את הנתונים בטבלה. לכן, כדי להשתמש בפונקציונליות של תצוגה מהותית, צריך ידע מתקדם בניב ובמאפיינים שלו. כמה דברים שכדאי להביא בחשבון כשיוצרים תצוגה מהותית:
- בחלק מהניבים יש מגבלות על תצוגות מהותיות, כמו מרווחי זמן מקסימליים שמוגדרים כברירת מחדל לרענון ותמיכה בצירופים. Looker לא יוצר שגיאות LookML לגבי פונקציונליות ספציפית לניב של תצוגות מהותיות. במקום זאת, Looker ייצור שגיאה אם התצוגה המהותית לא תיווצר, כאירוע ביומן האירועים של ה-PDT או כשגיאת זמן ריצה אם תנסו לשלוח שאילתה לתצוגה המהותית. כדאי לעיין במסמכי התיעוד של הניב שלכם לגבי המגבלות של תצוגות מהותיות.
- בניבים מסוימים, כששולחים שאילתות לתצוגות מהותיות, המערכת בודקת אם השאילתה עדכנית. הבדיקה הזו עלולה לגרום לעיכוב קל בקבלת תוצאות השאילתה. כדי לבדוק אם זה המצב בניב שלכם, עיינו במסמכי התיעוד של הניב.
- בחלק מהניבים, המערכת תנסה לרענן את התצוגה המהותית באופן מצטבר במקום לבנות אותה מחדש באופן מלא. למידע נוסף, עיינו במסמכי התיעוד של הניב.
- אם התצוגה המהותית שלכם משתמשת במסד נתונים טבלאי שהוסר ממסד הנתונים, יכול להיות שלא תוכלו לשלוח שאילתות לתצוגה המהותית, והמערכת לא תצליח ליצור גרסאות חדשות.
- אם לטבלה נגזרת עם הצהרת
materialized_view: yesיש גם פרמטר datagroup,sql_trigger_valueאוpersist_for, ההצהרהmaterialized_view: yesתקבל עדיפות. - תצוגות מהותיות תומכות באותם פרמטרים ספציפיים לניב שנתמכים בטבלאות נגזרות באופן כללי, כמו חלוקה למחיצות, sortkeys ואינדקסים.
- במקרה של טבלאות נגזרות מדורגות, תצוגות מהותיות יכולות להיות תלויות ב-PDT של Looker, בכפוף לאזהרות הבאות:
- אי אפשר להשתמש בטבלה נגזרת עם אסטרטגיית השמירה
persist_forבהגדרה של טבלה נגזרת עםmaterialized_view: yes. בתצוגות מהותיות, טבלת המקור של התצוגה המהותית חייבת תמיד להיות נוכחת במסד הנתונים. טבלאות נגזרות שלpersist_forנמחקות ממסד הנתונים אחרי פרק הזמן שצוין בפרמטרpersist_for, כך שלא מובטח שהן יהיו קיימות במסד הנתונים. - טבלאות PDT נבנות מחדש עם שם ייחודי, כך שאם תצוגה מהותית משתמשת ב-PDT בהגדרה שלה, התצוגה המהותית תתעדכן כדי להצביע על הגרסה החדשה של ה-PDT בכל פעם שה-PDT נבנה מחדש. המשמעות היא שהתצוגה המהותית תיבנה מחדש מאפס אם התלות תיבנה מחדש, וזה עלול להשפיע על הביצועים. במקרה כזה, עדיף להפנות למסד נתונים טבלאי שמוגדר להוספה בלבד, או להפנות ל-PDT מצטבר שמוגדר באמצעות Looker.
- אי אפשר להשתמש בטבלה נגזרת עם אסטרטגיית השמירה
תמיכה בניבים בתצוגות מהותיות
היכולת להפוך טבלה נגזרת לתצוגה מהותית תלויה בניב של מסד הנתונים שבו משתמש החיבור שלכם ל-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 |