materialized_view

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".

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

כשמשתמשים בתצוגות חומריות, 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