יצירת תצוגות לוגיות
תצוגות לוגיות מאפשרות לשמור שאילתת SQL כטבלה וירטואלית, וכך להשתמש שוב בלוגיקה של השאילתה ולפשט את הגישה לנתונים. במאמר הזה מוסבר איך ליצור תצוגות לוגיות, כולל כללים ומגבלות למתן שמות לתצוגות.
הצגת ההגבלות
תצוגות ב-BigQuery כפופות למגבלות הבאות:
- התצוגות מוגדרות לקריאה בלבד. לדוגמה, אי אפשר להריץ שאילתות שמוסיפות, מעדכנות או מוחקות נתונים.
- אם התצוגה מפנה לטבלאות ממיקומים מרוחקים, צריך להפעיל שאילתות עם אחזור נתונים גלובלי לפני שיוצרים את התצוגה.
- הפניה בתוך תצוגה חייבת להיות מוגדרת באמצעות מערך נתונים. קבוצת הנתונים שמוגדרת כברירת מחדל לא משפיעה על גוף התצוגה.
- אי אפשר להשתמש ב-method
TableDataListשל ה-API בפורמט JSON כדי לאחזר נתונים מתצוגה. למידע נוסף, קראו את המאמר Tabledata: list. - אי אפשר לשלב שאילתות GoogleSQL ושאילתות SQL מדור קודם כשמשתמשים בתצוגות. שאילתת GoogleSQL לא יכולה להפנות לתצוגה שהוגדרה באמצעות תחביר SQL מדור קודם.
- אי אפשר להפנות לפרמטרים של שאילתות בתצוגות.
- הסכימות של הטבלאות הבסיסיות נשמרות עם התצוגה כשהתצוגה נוצרת. אם מוסיפים, מוחקים או משנים עמודות אחרי שיוצרים את התצוגה, היא לא מתעדכנת באופן אוטומטי והסכימה המדווחת תישאר לא מדויקת עד שמשנים את הגדרת ה-SQL של התצוגה או יוצרים אותה מחדש. למרות שהסכימה המדווחת עשויה להיות לא מדויקת, כל השאילתות שנשלחות מניבות תוצאות מדויקות.
- אי אפשר לעדכן באופן אוטומטי תצוגה של SQL מדור קודם לתחביר של GoogleSQL. כדי לשנות את השאילתה שמשמשת להגדרת תצוגה, אפשר להשתמש באפשרויות הבאות:
- האפשרות Edit query במסוף Google Cloud
- הפקודה
bq update --viewבכלי שורת הפקודה של BigQuery - ספריות הלקוח של BigQuery
- השיטות update או patch ב-API.
- אי אפשר לכלול פונקציה זמנית בהגדרת המשתמש או טבלה זמנית בשאילתת ה-SQL שמגדירה תצוגה.
- אי אפשר להפנות לתצוגה בשאילתה של טבלת תווים כלליים לחיפוש.
- תצוגות לוגיות לא יכולות לרשת או להגדיר באופן מפורש סוגי נתונים עם פרמטרים, כמו
STRING(n), כי סוגי נתונים עם פרמטרים נתמכים רק בעמודות של מסד נתונים טבלאי ובמשתני סקריפטים.
למידע על המכסות והמגבלות שחלות על תצוגות, קראו את המאמר מגבלות על תצוגות.
לפני שמתחילים
להקצות תפקידים של ניהול זהויות והרשאות גישה (IAM) שנותנים למשתמשים את ההרשאות הנדרשות כדי לבצע כל משימה שמופיעה במסמך הזה.
ההרשאות הנדרשות
תצוגות נחשבות למשאבי טבלה ב-BigQuery, ולכן כדי ליצור תצוגה נדרשות אותן הרשאות כמו ליצירת טבלה. בנוסף, צריכות להיות לכם הרשאות לשלוח שאילתות לכל הטבלאות שמוזכרות בשאילתת ה-SQL של התצוגה.
- כדי ליצור קבוצת נתונים, צריך הרשאת IAM מסוג
bigquery.datasets.createבפרויקט. - כדי ליצור תצוגה, צריך הרשאת IAM מסוג
bigquery.tables.createבמערך הנתונים. התפקיד המוגדר מראשroles/bigquery.dataEditorב-IAM כולל את ההרשאות שנדרשות כדי ליצור תצוגה. - כדי ליצור תצוגה ששולחת שאילתה לטבלה שאין לכם גישה אליה, אתם צריכים לקבל את ההרשאה
bigquery.tables.getDataבטבלה שהתצוגה שולחת אליה שאילתה.
למידע נוסף על תפקידים והרשאות של IAM ב-BigQuery, קראו את המאמר תפקידים והרשאות מוגדרים מראש.
מתן שמות לתצוגות
כשיוצרים תצוגה ב-BigQuery, השם של התצוגה צריך להיות ייחודי לכל מערך נתונים. שם התצוגה יכול:
- להכיל תווים באורך כולל של עד 1,024 בייטים בקידוד UTF-8.
- להכיל תווי Unicode בקטגוריות הבאות: L (אות), M (סימון), N (מספר), Pc (סימן חיבור, כולל קו תחתון), Pd (קו מפריד), Zs (רווח). מידע נוסף זמין במאמר קטגוריה כללית.
השמות הבאים הם דוגמאות לשמות תקינים של תצוגות: view 01, ग्राहक, 00_お客様, étudiant-01.
נקודות שצריך לשים לב אליהן:
- כברירת מחדל, שמות של טבלאות הם תלויי אותיות רישיות.
mytableו-MyTableיכולים להתקיים יחד באותה קבוצת נתונים, אלא אם הם חלק מקבוצת נתונים שבה מושבתת האפשרות "תלוי אותיות רישיות". - חלק מהשמות והתחיליות של השמות של התצוגות שמורים לשימוש המערכת. אם מופיעה הודעת שגיאה שלפיה שם התצוגה או הקידומת שמורים, צריך לבחור שם אחר ולנסות שוב.
אם תכללו כמה אופרטורים של נקודה (
.) ברצף, האופרטורים הכפולים יוסרו באופן משתמע.לדוגמה:
project_name....dataset_name..table_nameהופך לזה:
project_name.dataset_name.table_name
יצירת תצוגה
אפשר ליצור תצוגה על ידי כתיבת שאילתת SQL המשמשת להגדרת הנתונים הנגישים לתצוגה. שאילתת ה-SQL חייבת לכלול הצהרת SELECT.
סוגים אחרים של הצהרות (כמו הצהרות DML) ושאילתות עם כמה הצהרות לא מותרים בשאילתות של תצוגות, חוץ ממשתנה המערכת @@session_id.
כדי ליצור תצוגה:
המסוף
נכנסים לדף BigQuery במסוף Google Cloud .
לוחצים על שאילתת SQL.
בעורך השאילתות, מזינים שאילתת SQL תקינה.
אפשר גם לפתוח שאילתה שמורה.
לוחצים על
Save > Save view.
בתיבת הדו-שיח Save view:
- בתפריט Project, בוחרים את הפרויקט שבו רוצים לשמור את התצוגה.
- בתפריט Dataset, בוחרים מערך נתונים או יוצרים מערך נתונים חדש כדי לאחסן את התצוגה. מערך הנתונים של היעד לתצוגה השמורה חייב להיות באותו אזור של המקור.
- בשדה Table, מזינים את שם התצוגה.
- לוחצים על Save.
SQL
משתמשים בהצהרה CREATE VIEW.
בדוגמה הבאה נוצרת תצוגה בשם usa_male_names ממערך הנתונים הציבורי USA names:
נכנסים לדף BigQuery במסוף Google Cloud .
בעורך השאילתות, מזינים את ההצהרה הבאה:
CREATE VIEW mydataset.usa_male_names(name, number) AS ( SELECT name, number FROM `bigquery-public-data.usa_names.usa_1910_current` WHERE gender = 'M' ORDER BY number DESC );
לוחצים על הפעלה.
מידע נוסף על הרצת שאילתות זמין במאמר הרצת שאילתה אינטראקטיבית.
BQ
משתמשים בפקודה bq mk עם הדגל --view. בשאילתות GoogleSQL, מוסיפים את הדגל --use_legacy_sql ומגדירים אותו ל-false. חלק מהפרמטרים האופציונליים כוללים את --add_tags, --expiration, --description ו---label. רשימה מלאה של הפרמטרים מופיעה בחומרי העזר של הפקודה bq mk.
אם השאילתה מפנה למשאבים חיצוניים של פונקציות בהגדרת המשתמש (UDF) שמאוחסנים ב-Cloud Storage או בקבצים מקומיים, צריך להשתמש בדגל --view_udf_resource כדי לציין את המשאבים האלה. הדגל --view_udf_resource לא מודגם כאן. מידע נוסף על השימוש בפונקציות UDF זמין במאמר פונקציות UDF.
אם אתם יוצרים תצוגה בפרויקט שהוא לא פרויקט ברירת המחדל, ציינו את מזהה הפרויקט באמצעות הדגל --project_id.
bq mk \ --use_legacy_sql=false \ --view_udf_resource=PATH_TO_FILE \ --expiration=INTEGER \ --description="DESCRIPTION" \ --label=KEY_1:VALUE_1 \ --add_tags=KEY_2:VALUE_2[,...] \ --view='QUERY' \ --project_id=PROJECT_ID \ DATASET.VIEW
מחליפים את מה שכתוב בשדות הבאים:
-
PATH_TO_FILEהוא ה-URI או הנתיב של מערכת הקבצים המקומית לקובץ קוד שצריך לטעון ולהעריך מיד כמשאב UDF שמשמש את התצוגה. חוזרים על הדגל כדי לציין כמה קבצים. INTEGERמגדיר את משך החיים (בשניות) של התצוגה. אם הערך שלINTEGERהוא0, התצוגה לא תפוג. אם לא כוללים את הדגל--expiration, BigQuery יוצר את התצוגה עם משך החיים שמוגדר כברירת מחדל לטבלה של מערך הנתונים.-
DESCRIPTIONהוא תיאור של התצוגה במירכאות. -
KEY_1:VALUE_1הוא צמד מפתח/ערך שמייצג תווית. חוזרים על הדגל--labelכדי לציין כמה תוויות. -
KEY_2:VALUE_2הוא צמד מפתח/ערך שמייצג תג. אפשר להוסיף כמה תגים באותו דגל, עם פסיקים בין צמדי מפתח:ערך. -
QUERYהיא שאילתה תקינה. -
PROJECT_IDהוא מזהה הפרויקט (אם לא הגדרתם פרויקט כברירת מחדל). -
DATASETהוא מערך נתונים בפרויקט. -
VIEWהוא שם התצוגה שרוצים ליצור.
דוגמאות:
מזינים את הפקודה הבאה כדי ליצור תצוגה בשם myview ב-mydataset בפרויקט שמוגדר כברירת מחדל. זמן התפוגה מוגדר ל-3,600 שניות (שעה), התיאור מוגדר ל-This is my view והתווית מוגדרת ל-organization:development. השאילתה שמשמשת ליצירת התצוגה שולפת נתונים ממערך הנתונים הציבורי USA Name Data.
bq mk \
--use_legacy_sql=false \
--expiration 3600 \
--description "This is my view" \
--label organization:development \
--view \
'SELECT
name,
number
FROM
`bigquery-public-data.usa_names.usa_1910_current`
WHERE
gender = "M"
ORDER BY
number DESC' \
mydataset.myview
מזינים את הפקודה הבאה כדי ליצור תצוגה בשם myview ב-mydataset ב-myotherproject. התיאור מוגדר כ-This is my view, התווית מוגדרת כ-organization:development ותאריך התפוגה של התצוגה מוגדר כתאריך התפוגה של טבלת ברירת המחדל של מערך הנתונים.
השאילתה שמשמשת ליצירת התצוגה שולפת נתונים ממערך הנתונים הציבורי USA Name Data.
bq mk \
--use_legacy_sql=false \
--description "This is my view" \
--label organization:development \
--project_id myotherproject \
--view \
'SELECT
name,
number
FROM
`bigquery-public-data.usa_names.usa_1910_current`
WHERE
gender = "M"
ORDER BY
number DESC' \
mydataset.myview
אחרי שיוצרים את התצוגה, אפשר לעדכן את תאריך התפוגה, התיאור והתוויות שלה. מידע נוסף זמין במאמר עדכון תצוגות.
Terraform
משתמשים במשאב google_bigquery_table.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
בדוגמה הבאה נוצרת תצוגה בשם myview:
כך מחילים את ההגדרות של Terraform בפרויקט ב- Google Cloud :
הכנת Cloud Shell
- מפעילים את Cloud Shell.
-
מגדירים את פרויקט ברירת המחדל ב- Google Cloud שבו רוצים להחיל את ההגדרות של Terraform.
תצטרכו להריץ את הפקודה הזו רק פעם אחת לכל פרויקט, ותוכלו לעשות זאת בכל ספרייה.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
אם תגדירו ערכים ספציפיים בקובץ התצורה של Terraform, הם יבטלו את ערכי ברירת המחדל של משתני הסביבה.
הכנת הספרייה
לכל קובץ תצורה של Terraform צריכה להיות ספרייה משלו (שנקראת גם מודול ברמה הבסיסית).
-
יוצרים ספרייה חדשה ב-Cloud Shell ובה יוצרים קובץ חדש. שם הקובץ חייב לכלול את הסיומת
.tf, למשלmain.tf. במדריך הזה, הקובץ נקראmain.tf.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
אם אתם עוקבים אחרי המדריך, תוכלו להעתיק את הקוד לדוגמה בכל קטע או שלב.
מעתיקים את הקוד לדוגמה בקובץ
main.tfהחדש שיצרתם.לחלופין, אפשר גם להעתיק את הקוד מ-GitHub. כדאי לעשות את זה כשקטע הקוד של Terraform הוא חלק מפתרון מקצה לקצה.
- בודקים את הפרמטרים לדוגמה ומשנים אותם בהתאם לסביבה שלכם.
- שומרים את השינויים.
-
מפעילים את Terraform. צריך לעשות זאת רק פעם אחת לכל ספרייה.
terraform init
אופציונלי: תוכלו לכלול את האפשרות
-upgrade, כדי להשתמש בגרסה העדכנית ביותר של הספק של Google:terraform init -upgrade
החלה של השינויים
-
בודקים את ההגדרות ומוודאים שהמשאבים שמערכת Terraform תיצור או תעדכן תואמים לציפיות שלכם:
terraform plan
מתקנים את ההגדרות לפי הצורך.
-
מריצים את הפקודה הבאה ומזינים
yesבהודעה שמופיעה, כדי להחיל את הגדרות Terraform:terraform apply
ממתינים עד שב-Terraform תוצג ההודעה "Apply complete!".
- פותחים את הפרויקט ב- Google Cloud כדי להציג את התוצאות. במסוף Google Cloud , נכנסים למשאבים בממשק המשתמש כדי לוודא שהם נוצרו או עודכנו ב-Terraform.
API
מפעילים את ה-method tables.insert עם משאב טבלה שמכיל מאפיין view.
המשך
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי הוראות ההגדרה של Go במדריך למתחילים של BigQuery באמצעות ספריות לקוח. למידע נוסף, קראו את מאמרי העזרה של BigQuery Go API.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
Java
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי הוראות ההגדרה של Java במדריך למתחילים של BigQuery באמצעות ספריות לקוח. למידע נוסף, קראו את מאמרי העזרה של BigQuery Java API.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
Node.js
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי הוראות ההגדרה של Node.js במדריך למתחילים של BigQuery באמצעות ספריות לקוח. למידע נוסף, קראו את מאמרי העזרה של BigQuery Node.js API.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
Python
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי הוראות ההגדרה של Python במדריך למתחילים של BigQuery באמצעות ספריות לקוח. למידע נוסף, קראו את מאמרי העזרה של BigQuery Python API.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
אחרי שיוצרים את התצוגה, אפשר לשלוח אליה שאילתות כמו ששולחים שאילתות לטבלה.
הצגת האבטחה
כדי לשלוט בגישה לתצוגות ב-BigQuery, קראו את המאמר תצוגות מורשות.
המאמרים הבאים
- במאמר יצירת תצוגות מורשות מוסבר איך יוצרים תצוגה מורשית.
- במאמר קבלת מידע על תצוגות מוסבר איך מקבלים מטא-נתונים של תצוגות.
- מידע נוסף על ניהול תצוגות מפורטות זמין במאמר ניהול תצוגות מפורטות.