התצוגה MATERIALIZED_VIEWS
התצוגה INFORMATION_SCHEMA.MATERIALIZED_VIEWS מכילה סטטוס לגבי תצוגות מהותיות.
ההרשאות הנדרשות
כדי לקבל את ההרשאות שנדרשות לשליחת שאילתות לתצוגה INFORMATION_SCHEMA.MATERIALIZED_VIEWS, צריך לבקש מהאדמין להקצות לכם את תפקיד ה-IAM BigQuery Metadata Viewer (צפייה במטא-נתונים של BigQuery) (roles/bigquery.metadataViewer) בפרויקט או במערך הנתונים.
להסבר על מתן תפקידים, קראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
זהו תפקיד שמוגדר מראש וכולל את ההרשאות שנדרשות לשליחת שאילתות לתצוגה INFORMATION_SCHEMA.MATERIALIZED_VIEWS. כדי לראות בדיוק אילו הרשאות נדרשות, אפשר להרחיב את הקטע ההרשאות הנדרשות:
ההרשאות הנדרשות
כדי להריץ שאילתות בתצוגה INFORMATION_SCHEMA.MATERIALIZED_VIEWS, נדרשות ההרשאות הבאות:
-
bigquery.tables.get -
bigquery.tables.list
יכול להיות שתקבלו את ההרשאות האלה באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש אחרים.
מידע נוסף על הרשאות ב-BigQuery זמין במאמר בקרת גישה באמצעות IAM.סכימה
כששולחים שאילתה לתצוגה INFORMATION_SCHEMA.MATERIALIZED_VIEWS, תוצאות השאילתה מכילות שורה אחת לכל תצוגה חומרית במערך נתונים.
לתצוגה INFORMATION_SCHEMA.MATERIALIZED_VIEWS יש את הסכימה הבאה:
| שם העמודה | סוג נתונים | ערך |
|---|---|---|
table_catalog |
STRING |
שם הפרויקט שמכיל את מערך הנתונים. נקרא גם projectId. |
table_schema |
STRING |
השם של מערך הנתונים שמכיל את התצוגה החומרית. נקרא גם datasetId. |
table_name |
STRING |
השם של התצוגה המהותית. נקרא גם tableId. |
last_refresh_time |
TIMESTAMP |
השעה שבה התצוגה החומרית הזו רעננה לאחרונה. |
refresh_watermark |
TIMESTAMP |
סימן המים של הרענון של התצוגה המהותית. הנתונים שכלולים בטבלאות הבסיס של התצוגה החומרית עד לנקודת הזמן הזו נכללים במטמון של התצוגה החומרית. |
last_refresh_status |
RECORD |
תוצאת השגיאה של משימת הרענון האוטומטי האחרונה כאובייקט ErrorProto. אם השדה הזה מופיע, המשמעות היא שהרענון האוטומטי האחרון נכשל. |
כדי לשמור על יציבות, מומלץ לציין במפורש את העמודות בשאילתות של סכימת המידע, במקום להשתמש בתו כל כללי (SELECT *). ציון מפורש של העמודות מונע את השבירה של השאילתות אם הסכימה הבסיסית משתנה.
היקף ותחביר
שאילתות שמופעלות על התצוגה הזו חייבות לכלול מערך נתונים או מסווג אזור. לשאילתות עם מזהה מערך נתונים, צריכות להיות לכם הרשאות למערך הנתונים. כדי להריץ שאילתות עם מסנן אזור, צריך הרשאות בפרויקט. מידע נוסף זמין במאמר בנושא תחביר. בטבלה הבאה מוסברות רמות הפירוט של האזור והמשאבים בתצוגה הזו:
| שם התצוגה | היקף המשאבים | היקף האזור |
|---|---|---|
[PROJECT_ID.]`region-REGION`.INFORMATION_SCHEMA.MATERIALIZED_VIEWS |
ברמת הפרויקט | REGION |
[PROJECT_ID.]DATASET_ID.INFORMATION_SCHEMA.MATERIALIZED_VIEWS |
רמת מערך הנתונים | מיקום מערך הנתונים |
-
אופציונלי:
PROJECT_ID: מזהה הפרויקט ב- Google Cloud . אם לא מציינים פרויקט, המערכת משתמשת בפרויקט שמוגדר כברירת מחדל. -
REGION: כל שם של אזור במערך נתונים. לדוגמה,`region-us`. -
DATASET_ID: המזהה של מערך הנתונים. מידע נוסף מופיע במאמר בנושא מאפיין מסנן של מערך נתונים.
לדוגמה:
-- Returns metadata for views in a single dataset.
SELECT * FROM myDataset.INFORMATION_SCHEMA.MATERIALIZED_VIEWS;
-- Returns metadata for all views in a region.
SELECT * FROM region-us.INFORMATION_SCHEMA.MATERIALIZED_VIEWS;
דוגמאות
דוגמה 1:
בדוגמה הבאה מאחזרים את כל התצוגות החומריות הלא תקינות מהתצוגה INFORMATION_SCHEMA.MATERIALIZED_VIEWS. הפונקציה מחזירה את התצוגות החומריות עם ערכים שאינם NULL last_refresh_status בעמודה mydataset בפרויקט ברירת המחדל שלכם – myproject.
כדי להריץ את השאילתה על פרויקט שאינו פרויקט ברירת המחדל, מוסיפים את מזהה הפרויקט למערך הנתונים בפורמט הבא: `project_id`.dataset.INFORMATION_SCHEMA.MATERIALIZED_VIEWS. לדוגמה: `myproject`.mydataset.INFORMATION_SCHEMA.MATERIALIZED_VIEWS.
SELECT table_name, last_refresh_status FROM mydataset.INFORMATION_SCHEMA.MATERIALIZED_VIEWS WHERE last_refresh_status IS NOT NULL;
INFORMATION_SCHEMA
התוצאה אמורה להיראות כך:
+---------------+---------------------------------------------------------------------+
| table_name | last_refresh_status |
+---------------------------------------------------------------------+---------------+
| myview | {"reason":"invalidQuery","location":"query","message":"..."} |
+---------------------------------------------------------------------+---------------+
דוגמה 2:
בדוגמה הבאה מאחזרים את last_refresh_time ואת refresh_watermark של תצוגה חומרית myview ב-mydataset בפרויקט ברירת המחדל – myproject. בתוצאה מוצג מתי בוצע הרענון האחרון של התצוגה החומרית, ועד מתי נאספו נתונים מטבלאות הבסיס במטמון של התצוגה החומרית.
כדי להריץ את השאילתה על פרויקט שאינו פרויקט ברירת המחדל, מוסיפים את מזהה הפרויקט למערך הנתונים בפורמט הבא: `project_id`.dataset.INFORMATION_SCHEMA.MATERIALIZED_VIEWS. לדוגמה: `myproject`.mydataset.INFORMATION_SCHEMA.MATERIALIZED_VIEWS.
SELECT table_name, last_refresh_time, refresh_watermark FROM mydataset.INFORMATION_SCHEMA.MATERIALIZED_VIEWS WHERE table_name = 'myview';
INFORMATION_SCHEMA
התוצאה אמורה להיראות כך:
+---------------+------------------------------------------------+ | table_name | last_refresh_time | refresh_watermark | +---------------+------------------------------------------------+ | myview | 2023-02-22 19:37:17 | 2023-03-08 16:52:57 | +---------------+------------------------------------------------+