ניהול תצוגות מהותיות
במאמר הזה מוסבר איך לנהל תצוגות חומריות ב-BigQuery.
ניהול תצוגות חומריות ב-BigQuery כולל את הפעולות הבאות:
- שינוי תצוגות מהותיות
- הצגת רשימה של תצוגות חומריות
- קבלת מידע על תצוגות חומריות
- מחיקת תצוגות מהותיות
- רענון של תצוגות מהותיות
מידע נוסף על תצוגות חומריות זמין במקורות הבאים:
לפני שמתחילים
מקצים תפקידים של ניהול זהויות והרשאות גישה (IAM) שמעניקים למשתמשים את ההרשאות הדרושות לביצוע כל משימה שמופיעה במאמר הזה. ההרשאות שנדרשות לביצוע משימה (אם יש כאלה) מפורטות בקטע 'הרשאות נדרשות' של המשימה.
שינוי תצוגות מהותיות
אפשר לשנות תצוגה חומרית באמצעות מסוף Google Cloud או כלי שורת הפקודה של BigQuery, באמצעות שפת הגדרת נתונים (DDL) עם ALTER MATERIALIZED
VIEW ו-SET OPTIONS. רשימת האפשרויות של תצוגות מהותיות זמינה במאמר materialized_view_set_options_list.
בדוגמה הבאה, הערך של enable_refresh מוגדר ל-true. משנים לפי הצורך בהתאם לתרחיש השימוש.
ההרשאות הנדרשות
כדי לשנות תצוגות חומריות, צריך את הרשאות ה-IAM bigquery.tables.get ו-bigquery.tables.update.
כל אחד מהתפקידים המוגדרים מראש הבאים ב-IAM כולל את ההרשאות שנדרשות לשינוי תצוגה חומרית:
bigquery.dataEditorbigquery.dataOwnerbigquery.admin
במאמר תפקידים והרשאות מוגדרים מראש יש מידע נוסף על ניהול זהויות והרשאות גישה (IAM) ב-BigQuery.
SQL
כדי לשנות תצוגה חומרית, משתמשים בהצהרת ALTER MATERIALIZED VIEW SET OPTIONS DDL:
במסוף Google Cloud , עוברים לדף BigQuery.
מזינים את ההצהרה הבאה בעורך השאילתות:
ALTER MATERIALIZED VIEW PROJECT.DATASET.MATERIALIZED_VIEW SET OPTIONS (enable_refresh = true);
מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT: השם של הפרויקט שמכיל את התצוגה החומרית -
DATASET: השם של מערך הנתונים שמכיל את התצוגה החומרית -
MATERIALIZED_VIEW: השם של התצוגה החומרית שרוצים לשנות
-
לוחצים על הפעלה.
מידע נוסף על הרצת שאילתות זמין במאמר הרצת שאילתה אינטראקטיבית.
BQ
מריצים את הפקודה bq update:
bq update \ --enable_refresh=true \ --refresh_interval_ms= \ PROJECT.DATASET.MATERIALIZED_VIEW
Java
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Javaהוראות ההגדרה שבמדריך למתחילים של BigQuery באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של BigQuery Java API.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
הצגת תצוגות מהותיות
אפשר לראות את רשימת התצוגות הממומשות דרך מסוף Google Cloud , כלי שורת הפקודה של BigQuery או BigQuery API.
ההרשאות הנדרשות
כדי להציג רשימה של תצוגות חומריות במערך נתונים, צריך את הרשאת ה-IAM bigquery.tables.list.
כל אחד מהתפקידים הבאים שמוגדרים מראש ב-IAM כולל את ההרשאות שנדרשות כדי להציג רשימה של תצוגות חומריות במערך נתונים:
roles/bigquery.userroles/bigquery.metadataViewerroles/bigquery.dataViewerroles/bigquery.dataOwnerroles/bigquery.dataEditorroles/bigquery.admin
למידע נוסף על תפקידים והרשאות ב-IAM, ראו תפקידים והרשאות מוגדרים מראש.
התהליך להצגת תצוגות חומריות זהה לתהליך להצגת טבלאות. כדי להציג רשימה של תצוגות מהותיות במערך נתונים:
המסוף
בחלונית הימנית, לוחצים על כלי הניתוחים:

אם החלונית הימנית לא מוצגת, לוחצים על הרחבת החלונית הימנית כדי לפתוח אותה.
בחלונית Explorer, מרחיבים את הפרויקט, לוחצים על Datasets (מערכי נתונים) ואז לוחצים על מערך הנתונים.
לוחצים על סקירה כללית > טבלאות. גוללים ברשימה כדי לראות את הטבלאות במערך הנתונים. טבלאות, תצוגות ותצוגות חומריות מזוהות באמצעות ערכים שונים בעמודה Type. לעותקים של תצוגות מהותיות יש את אותו הערך כמו לתצוגות מהותיות.
BQ
מריצים את הפקודה bq ls. אפשר להשתמש בדגל --format כדי לשלוט בפלט. אם אתם מציגים רשימה של תצוגות חומריות בפרויקט שאינו פרויקט ברירת המחדל שלכם, צריך להוסיף את מזהה הפרויקט למערך הנתונים בפורמט הבא: project_id:dataset.
bq ls --format=pretty project_id:dataset
כאשר:
- project_id הוא מזהה הפרויקט.
- dataset הוא שם מערך הנתונים.
כשמריצים את הפקודה, השדה Type מציג את סוג הטבלה.
לדוגמה:
+-------------------------+--------------------+----------------------+-------------------+ | tableId | Type | Labels | Time Partitioning | +-------------------------+--------------------+----------------------+-------------------+ | mytable | TABLE | department:shipping | | | mymatview | MATERIALIZED_VIEW | | | +-------------------------+--------------------+----------------------+-------------------+
דוגמאות:
מזינים את הפקודה הבאה כדי להציג רשימה של תצוגות חומריות במערך הנתונים [mydataset] בפרויקט ברירת המחדל.
bq ls --format=pretty mydataset
מזינים את הפקודה הבאה כדי להציג רשימה של תצוגות חומריות במערך הנתונים [dataset]mydataset במיקום [location]myotherproject.
bq ls --format=pretty myotherproject:mydataset
API
כדי להציג רשימה של תצוגות חומריות באמצעות ה-API, קוראים ל-method tables.list.
Go
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Goהוראות ההגדרה שבמדריך למתחילים של BigQuery באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של BigQuery Go API.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
Python
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Pythonהוראות ההגדרה שבמדריך למתחילים של BigQuery באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של BigQuery Python API.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
קבלת מידע על תצוגות חומריות
אפשר לקבל מידע על תצוגה חומרית באמצעות SQL, כלי שורת הפקודה של BigQuery או BigQuery API.
ההרשאות הנדרשות
כדי לשלוח שאילתה לגבי תצוגה חומרית, אתם צריכים את ההרשאות הבאות לניהול זהויות והרשאות גישה (IAM):
bigquery.tables.getbigquery.tables.listbigquery.routines.getbigquery.routines.list
כל אחד מהתפקידים הבאים שמוגדרים מראש ב-IAM כולל את ההרשאות שצוינו למעלה:
roles/bigquery.metadataViewerroles/bigquery.dataViewerroles/bigquery.admin
מידע נוסף על הרשאות ב-BigQuery זמין במאמר בקרת גישה באמצעות IAM.
כדי לקבל מידע על תצוגה חומרית, כולל העתקים של תצוגות חומריות שתלויים בה:
SQL
כדי לקבל מידע על תצוגות מהותיות, מריצים שאילתה בתצוגה INFORMATION_SCHEMA.TABLES:
במסוף Google Cloud , עוברים לדף BigQuery.
מזינים את ההצהרה הבאה בעורך השאילתות:
SELECT * FROM PROJECT_ID.DATASET_ID.INFORMATION_SCHEMA.TABLES WHERE table_type = 'MATERIALIZED VIEW';
מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: השם של הפרויקט שמכיל את התצוגות החומריות -
DATASET_ID: השם של מערך הנתונים שמכיל את התצוגות המגובות
-
לוחצים על הפעלה.
מידע נוסף על הרצת שאילתות זמין במאמר הרצת שאילתה אינטראקטיבית.
BQ
משתמשים בפקודה bq show:
bq show --project=project_id --format=prettyjson dataset.materialized_view
מחליפים את מה שכתוב בשדות הבאים:
- project_id: מזהה הפרויקט. צריך לכלול את הדגל הזה רק כדי לקבל מידע על תצוגה חומרית בפרויקט שונה מפרויקט ברירת המחדל.
- dataset: השם של מערך הנתונים שמכיל את התצוגה הממומשת.
- materialized_view: השם של התצוגה החומרית שרוצים לקבל מידע לגביה.
דוגמה:
מזינים את הפקודה הבאה כדי להציג מידע על התצוגה החומרית my_mv במערך הנתונים report_views בפרויקט myproject.
bq show --project=myproject --format=prettyjson report_views.my_mv
API
כדי לקבל מידע על תצוגה חומרית באמצעות ה-API, מפעילים את השיטה tables.get.
מחיקת תצוגות מהותיות
אפשר למחוק תצוגה חומרית דרך מסוף Google Cloud , כלי שורת הפקודה של BigQuery או ה-API.
מחיקה של תצוגה חומרית גורמת גם למחיקה של כל ההרשאות שמשויכות לתצוגה החומרית הזו. כשיוצרים מחדש תצוגה חומרית שנמחקה, צריך גם להגדיר מחדש באופן ידני את הרשאות הגישה ששויכו אליה בעבר.
ההרשאות הנדרשות
כדי למחוק תצוגות חומריות, אתם צריכים את ההרשאה bigquery.tables.delete ב-IAM.
כל אחד מתפקידי ה-IAM המוגדרים מראש הבאים כולל את ההרשאות שנדרשות כדי למחוק תצוגה חומרית:
bigquery.dataEditorbigquery.dataOwnerbigquery.admin
במאמר תפקידים והרשאות מוגדרים מראש יש מידע נוסף על ניהול זהויות והרשאות גישה (IAM) ב-BigQuery.
SQL
כדי למחוק תצוגה חומרית, משתמשים בהצהרת DROP MATERIALIZED VIEW DDL:
במסוף Google Cloud , עוברים לדף BigQuery.
מזינים את ההצהרה הבאה בעורך השאילתות:
DROP MATERIALIZED VIEW PROJECT.DATASET.MATERIALIZED_VIEW;
מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT: השם של הפרויקט שמכיל את התצוגה החומרית -
DATASET: השם של מערך הנתונים שמכיל את התצוגה החומרית -
MATERIALIZED_VIEW: השם של התצוגה החומרית שרוצים למחוק
-
לוחצים על הפעלה.
מידע נוסף על הרצת שאילתות זמין במאמר הרצת שאילתה אינטראקטיבית.
BQ
משתמשים בפקודה bq rm כדי למחוק את התצוגה המהותית.
API
קוראים לשיטה tables.delete ומציינים ערכים לprojectId, לdatasetId ולtableId
פרמטרים:
- מקצים את הפרמטר
projectIdלמזהה הפרויקט. - מקצים את הפרמטר
datasetIdלמזהה של מערך הנתונים. - מקצים את הפרמטר
tableIdלמזהה הטבלה של התצוגה החומרית שרוצים למחוק.
Java
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Javaהוראות ההגדרה שבמדריך למתחילים של BigQuery באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של BigQuery Java API.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
רענון תצוגות מהותיות
רענון של תצוגה מהותית מעדכן את הנתונים שנשמרו במטמון של התצוגה כדי לשקף את המצב הנוכחי של טבלאות הבסיס שלה.
כשמריצים שאילתה על תצוגה חומרית, BigQuery מחזיר תוצאות גם מנתונים של תצוגה חומרית שנשמרו במטמון וגם מנתונים שנשלפו מטבלת הבסיס. במקרים שבהם זה אפשרי, BigQuery קורא רק את השינויים שבוצעו מאז הרענון האחרון של התצוגה. יכול להיות שנתונים שנוספו לאחרונה לסטרימינג לא ייכללו במהלך רענון של התצוגה המהותית, אבל השאילתות תמיד קוראות נתונים שנוספו לסטרימינג, בלי קשר לשאלה אם נעשה שימוש בתצוגה מהותית.
החזרת תוצאות של שאילתה ישירות מטבלת הבסיס כרוכה בעלות חישוב גבוהה יותר מאשר החזרת תוצאות מנתונים של תצוגה חומרית שמאוחסנים במטמון. רענון קבוע של נתונים שנשמרו במטמון של תצוגה מהותית מצמצם את כמות הנתונים שמוחזרים ישירות מטבלת הבסיס, וכך מצמצם את עלות החישוב.
בקטע הזה מוסבר איך:
רענון אוטומטי
אפשר להפעיל או להשבית את הרענון האוטומטי בכל שלב. עבודת הרענון האוטומטי מתבצעת על ידי חשבון השירות bigquery-adminbot@system.gserviceaccount.com ומופיעה בהיסטוריית העבודות של פרויקט התצוגה החומרית.
כברירת מחדל, הנתונים שנשמרו במטמון בתצוגה חומרית מתעדכנים אוטומטית מהטבלה הבסיסית תוך 5 עד 30 דקות משינוי בטבלה הבסיסית, למשל הוספה או מחיקה של שורות.
אפשר להגדיר מכסת תדירות לרענון כדי לנהל את התדירות של רענונים אוטומטיים של נתונים שנשמרו במטמון, וכך לנהל את העלויות ואת ביצועי השאילתות של תצוגות חומריות.
הפעלה והשבתה של רענון אוטומטי
כדי להשבית את הרענון האוטומטי כשיוצרים תצוגה חומרית, מגדירים את enable_refresh ל-false.
CREATE MATERIALIZED VIEW PROJECT.DATASET.MATERIALIZED_VIEW PARTITION BY RANGE_BUCKET(column_name, buckets) OPTIONS (enable_refresh = false) AS SELECT ...
בתצוגה חומרית קיימת, אפשר לשנות את הערך של enable_refresh באמצעות ALTER MATERIALIZED VIEW.
ALTER MATERIALIZED VIEW PROJECT.DATASET.MATERIALIZED_VIEW SET OPTIONS (enable_refresh = true);
הגדרת מכסת תדירות
אתם יכולים להגדיר מכסת תדירות שתקבע באיזו תדירות יתבצע רענון אוטומטי. כברירת מחדל, תצוגות חומריות מתעדכנות בתדירות של עד פעם אחת בכל 30 דקות.
אפשר לשנות את מכסת התדירות של הרענון בכל שלב.
כדי להגדיר מכסה לתדירות הרענון כשיוצרים תצוגה חומרית, מגדירים את refresh_interval_minutes ב-DDL (או את refresh_interval_ms ב-API ובכלי שורת הפקודה של BigQuery) לערך הרצוי.
CREATE MATERIALIZED VIEW PROJECT.DATASET.MATERIALIZED_VIEW OPTIONS (enable_refresh = true, refresh_interval_minutes = 60) AS SELECT ...
באופן דומה, אפשר להגדיר את מכסת התדירות כשמשנים תצוגה חומרית. בדוגמה הזו מניחים שכבר הפעלתם רענון אוטומטי, וכל מה שאתם רוצים לעשות זה לשנות את מכסת התדירות:
ALTER MATERIALIZED VIEW PROJECT.DATASET.MATERIALIZED_VIEW SET OPTIONS (refresh_interval_minutes = 60);
מכסת התדירות המינימלית של רענון היא דקה אחת. מכסת התדירות המקסימלית של הרענון היא 7 ימים.
אפשר לבצע רענון ידני של תצוגה חומרית בכל שלב, והתזמון שלה לא כפוף למכסת התדירות.
ללא התחייבות
הרענון האוטומטי מתבצע על בסיס האפשרות הטובה ביותר. מערכת BigQuery מנסה להתחיל רענון תוך 5 דקות משינוי בטבלת הבסיס (אם הרענון הקודם בוצע לפני יותר מ-30 דקות), אבל היא לא מבטיחה שהרענון יתחיל בזמן הזה, וגם לא מתי הוא יסתיים.
רענון אוטומטי מטופל באופן דומה לשאילתה עם עדיפות batch. אם לפרויקט של התצוגה החומרית אין קיבולת כרגע, הרענון מתעכב. אם הפרויקט מכיל הרבה תצוגות שהרענון שלהן יקר, יכול להיות שכל תצוגה בנפרד תפגר באופן משמעותי ביחס לטבלאות הבסיס שלה.
רענון ידני
בכל שלב אפשר לרענן ידנית תצוגה חומרית.
ההרשאות הנדרשות
כדי לרענן ידנית תצוגות חומריות, אתם צריכים את הרשאות ה-IAM bigquery.tables.getData, bigquery.tables.update ו-bigquery.tables.updateData.
כל אחד מהתפקידים הבאים שמוגדרים מראש ב-IAM כולל את ההרשאות שדרושות כדי לרענן תצוגה חומרית באופן ידני:
bigquery.dataEditorbigquery.dataOwnerbigquery.admin
במאמר תפקידים והרשאות מוגדרים מראש יש מידע נוסף על ניהול זהויות והרשאות גישה (IAM) ב-BigQuery.
כדי לעדכן את הנתונים בתצוגה החומרית, קוראים לפרוצדורה של המערכת BQ.REFRESH_MATERIALIZED_VIEW. כשמפעילים את ההליך הזה, BigQuery מזהה את השינויים שבוצעו בטבלאות הבסיס ומחיל את השינויים האלה על התצוגה המהותית. השאילתה להפעלה
BQ.REFRESH_MATERIALIZED_VIEW מסתיימת כשהרענון מסתיים.
CALL BQ.REFRESH_MATERIALIZED_VIEW('PROJECT.DATASET.MATERIALIZED_VIEW');
מעקב אחרי תצוגות מהותיות
אפשר לקבל מידע על תצוגות חומריות ועל עבודות רענון של תצוגות חומריות באמצעות BigQuery API. מידע נוסף זמין במאמר בנושא מעקב אחרי תצוגות חומריות.