materialized_view

Usage

view: my_view {
  derived_table: {
    materialized_view: yes
    ...
  }
}
היררכיה
materialized_view
ערך ברירת המחדל
no

מקבל
ערך בוליאני (yes או no)

כללים מיוחדים
השפה materialized_view נתמכת רק בדיאלקטים ספציפיים

הגדרה

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

תצוגות חומריות מאפשרות לכם להשתמש בפונקציונליות של מסד הנתונים כדי לשמור טבלאות נגזרות בפרויקט Looker. אם הדיאלקט של מסד הנתונים תומך בתצוגות מהותיות והחיבור ל-Looker מוגדר עם האפשרות טבלאות נגזרות מתמידות מופעלת, אפשר ליצור תצוגה מהותית על ידי ציון materialized_view: yes לטבלה נגזרת. התמיכה בתצוגות חומריות זמינה גם לטבלאות נגזרות מבוססות LookML ‏(NDT) וגם לטבלאות נגזרות שמבוססות על SQL.

בדומה לטבלה נגזרת מתמידה (PDT), תצוגה חומרית היא תוצאה של שאילתה שמאוחסנת כטבלה בסכימת הגירוד של מסד הנתונים. ההבדל העיקרי בין 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 שמוגדר עם האפשרות טבלאות נגזרות מתמידות. בדרך כלל מגדירים את זה כשמגדירים את החיבור ל-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".

שיקולים חשובים לגבי תצוגות מהותיות

כשמשתמשים בתצוגות חומריות, 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, ולכן אין ערובה שהן יהיו במסד הנתונים.
    • מערכת PDTs נבנית מחדש עם שם ייחודי, כך שאם תצוגה חומרית משתמשת ב-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
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