Usage
view: my_view {
derived_table: {
materialized_view: yes
...
}
}
|
היררכיה
materialized_view |
ערך ברירת המחדל
no
אישור
ערך בוליאני (yes או no)
כללים מיוחדים
התמיכה ב-materialized_view מוגבלת לדיאלקטים ספציפיים
|
הגדרה
הפונקציונליות של תצוגה מהותית היא תכונה מתקדמת. בהתאם לדיאלקט, תצוגה מהותית יכולה לצרוך משאבים רבים, ולכן חשוב להבין את ההטמעה של תצוגות מהותיות בדיאלקט שלכם. בדפי העזרה של הדיאלקט שלכם אפשר לקבל מידע על ההתנהגות של הדיאלקט ועל התדירות שבה הדיאלקט מרענן נתונים לתצוגות מהותיות.
תצוגות חומריות מאפשרות לכם להשתמש בפונקציונליות של מסד הנתונים כדי לשמור טבלאות נגזרות בפרויקט Looker. אם הדיאלקט של מסד הנתונים תומך בתצוגות מהותיות והחיבור ל-Looker מוגדר עם האפשרות טבלאות נגזרות מתמידות (PDT) מופעלת, אפשר ליצור תצוגה מהותית על ידי ציון materialized_view: yes לטבלה נגזרת. תצוגות חומריות נתמכות גם בטבלאות נגזרות מבוססות LookML (NDT) וגם בטבלאות נגזרות שמבוססות על SQL.
בדומה לטבלה נגזרת מתמידה (PDT), תצוגה חומרית היא תוצאה של שאילתה שמאוחסנת כטבלה בסכימת ה-scratch של מסד הנתונים. ההבדל העיקרי בין PDT לבין תצוגה חומרית הוא באופן הרענון של הטבלאות:
- ב-PDT, אסטרטגיית ההתמדה מוגדרת ב-Looker, וההתמדה מנוהלת על ידי Looker.
- במקרה של תצוגות חומריות, מסד הנתונים אחראי לתחזוקה ולרענון של הנתונים בטבלה.
לכן, כדי להשתמש בפונקציונליות של תצוגה חומרית, צריך ידע מתקדם בניב ובמאפיינים שלו. ברוב המקרים, מסד הנתונים ירענן את התצוגה החומרית בכל פעם שמסד הנתונים יזהה נתונים חדשים בטבלאות שנשלחות לתצוגה החומרית. תצוגות חומריות הן אופטימליות לתרחישים שבהם נדרשים נתונים בזמן אמת.
אם בטבלה נגזרת עם הצהרת materialized_view: yes יש גם פרמטר datagroup, sql_trigger_value או persist_for, ההצהרה materialized_view: yes תקבל עדיפות.
דוגמה
בטבלת הנגזרת e_flights_pdt יש את ההצהרה materialized_view: yes, ולכן נוצרת תצוגה חומרית בסכימת ה-scratch של מסד הנתונים:
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 אחרים. אם יוצרים את התצוגה המהותית ומריצים עליה שאילתה במצב פיתוח, Looker יוצר גרסת פיתוח של התצוגה המהותית, שאפשר להשתמש בה גם בסביבת הייצור. פרטים נוספים מופיעים בקטע Persisted tables in Development Mode בדף התיעוד Derived tables in Looker.
אחרת, התצוגה החומרית נוצרת במהלך המחזור הבא של הגנרטור מחדש של Looker, אחרי שקוד ה-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 והשם של סכמת ה-scratch הוא tmp, אפשר לשלוח שאילתה לתצוגת מסד הנתונים היציבה באמצעות פקודה כזו:
SELECT * from tmp.NN_e_redflight_e_redflight_publish_as_db
הדרישות לתצוגות מהותיות
כדי להשתמש בתצוגות חומריות בפרויקט Looker, צריך:
- ניב של מסד נתונים שתומך בתצוגות מהותיות. רשימת הדיאלקטים שתומכים בתצוגות מהותיות מופיעה בקטע תמיכה בדיאלקטים בתצוגות מהותיות בדף הזה.
- סכימה זמנית במסד הנתונים. זו יכולה להיות כל סכימה במסד הנתונים, אבל מומלץ ליצור סכימה חדשה שתשמש רק למטרה הזו. אדמין מסד הנתונים צריך להגדיר את הסכימה עם הרשאת כתיבה למשתמש מסד הנתונים של Looker.
- חיבור Looker שמוגדר עם האפשרות Persistent Derived Tables (טבלאות נגזרות קבועות) מופעלת. ההגדרה הזו מתבצעת בדרך כלל כשמגדירים את החיבור ל-Looker (הוראות להגדרת הניב של מסד הנתונים מופיעות בדף התיעוד בנושא ניבים של Looker), אבל אפשר גם להפעיל PDTs לחיבור אחרי ההגדרה הראשונית.
- חיבור 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תקבל עדיפות. - תצוגות חומריות תומכות באותם פרמטרים ספציפיים לניב שבהם תומכות טבלאות נגזרות באופן כללי, כמו חלוקה למחיצות, מפתחות מיון ואינדקסים.
- במקרה של טבלאות נגזרות מדורגות, תצוגות חומריות יכולות להיות תלויות בטבלאות 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+ | |
| 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 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 | |
| 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 |