יצירת תצוגות לוגיות
במאמר הזה מוסבר איך ליצור תצוגות לוגיות ב-BigQuery.
אפשר ליצור תצוגה לוגית בדרכים הבאות:
- באמצעות מסוף Google Cloud .
- שימוש בפקודה
bq mkשל כלי שורת הפקודה של bq. - קריאה לשיטה
tables.insertשל API. - שימוש בספריות הלקוח.
- שליחת הצהרה של שפת הגדרת נתונים (DDL)
CREATE VIEW.
הצגת ההגבלות
תצוגות מפורטות של BigQuery כפופות למגבלות הבאות:
- התצוגות הן לקריאה בלבד. לדוגמה, אי אפשר להריץ שאילתות שמוסיפות, מעדכנות או מוחקות נתונים.
- אם התצוגה המפורטת מפנה לטבלאות ממיקומים מרוחקים, צריך להפעיל שאילתות גלובליות לפני שיוצרים את התצוגה המפורטת.
- הפניה בתוך תצוגה חייבת להיות מוגדרת עם מערך נתונים. ערכת הנתונים שמוגדרת כברירת מחדל לא משפיעה על גוף התצוגה.
- אי אפשר להשתמש ב-method
TableDataListAPI בפורמט JSON כדי לאחזר נתונים מתצוגה מפורטת. מידע נוסף זמין במאמר בנושא Tabledata: list. - כשמשתמשים בתצוגות מפורטות, אי אפשר לשלב בין שאילתות GoogleSQL לבין שאילתות SQL מדור קודם. שאילתת GoogleSQL לא יכולה להפנות לתצוגה שהוגדרה באמצעות תחביר SQL מדור קודם.
- אי אפשר להפנות אל פרמטרים של שאילתות בתצוגות מפורטות.
- הסכימות של הטבלאות הבסיסיות מאוחסנות עם התצוגה כשיוצרים את התצוגה. אם מוסיפים, מוחקים או משנים עמודות אחרי יצירת התצוגה, התצוגה לא מתעדכנת באופן אוטומטי והסכימה המדווחת תישאר לא מדויקת עד שיבוצע שינוי בהגדרת ה-SQL של התצוגה או עד שהתצוגה תיווצר מחדש. גם אם הסכימה שדווחה לא מדויקת, כל השאילתות שנשלחו מניבות תוצאות מדויקות.
- אי אפשר לעדכן אוטומטית תצוגת SQL מדור קודם לתחביר של GoogleSQL. כדי לשנות את השאילתה שמשמשת להגדרת תצוגה, אפשר להשתמש באפשרויות הבאות:
- האפשרות עריכת השאילתה במסוף Google Cloud
- הפקודה
bq update --viewבכלי שורת הפקודה של BigQuery - ספריות הלקוח של BigQuery
- השיטות update או patch של ה-API.
- אי אפשר לכלול פונקציה זמנית בהגדרת המשתמש או טבלה זמנית בשאילתת ה-SQL שמגדירה תצוגה.
- אי אפשר להפנות לתצוגה בשאילתה של טבלת תו כללי לחיפוש.
- תצוגות לוגיות לא יכולות לקבל בירושה או להגדיר באופן מפורש סוגי נתונים עם פרמטרים, כמו
STRING(n), כי סוגי נתונים עם פרמטרים נתמכים רק בעמודות של טבלאות בסיס ובמשתני סקריפט.
מידע על מכסות ומגבלות שחלות על תצוגות מופיע במאמר מגבלות על תצוגות.
לפני שמתחילים
להקצות תפקידים של ניהול זהויות והרשאות גישה (IAM) שנותנים למשתמשים את ההרשאות הנדרשות לביצוע כל משימה שמופיעה במאמר הזה.
ההרשאות הנדרשות
תצוגות נחשבות למשאבי טבלה ב-BigQuery, ולכן כדי ליצור תצוגה צריך את אותן הרשאות שנדרשות ליצירת טבלה. צריכות להיות לכם גם הרשאות להריץ שאילתות על כל הטבלאות שהשאילתת SQL של התצוגה מפנה אליהן.
- כדי ליצור מערך נתונים, צריך הרשאת
bigquery.datasets.createIAM בפרויקט. - כדי ליצור תצוגה, אתם צריכים הרשאת
bigquery.tables.createIAM במערך הנתונים. תפקיד ה-IAM המוגדר מראשroles/bigquery.dataEditorכולל את ההרשאות שנדרשות ליצירת תצוגה. - כדי ליצור תצוגה שמבצעת שאילתה בטבלה שאין לכם גישה אליה, אתם צריכים לקבל את ההרשאה
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
משתנה המערכת.
כדי ליצור תצוגה מפורטת:
המסוף
במסוף Google Cloud , עוברים לדף BigQuery.
לוחצים על שאילתת SQL.
מזינים שאילתת SQL תקינה בעורך השאילתות.
אפשר גם לפתוח שאילתה שנשמרה.
לוחצים על
Save > Save view.
בתיבת הדו-שיח שמירת התצוגה:
- בתפריט Project, בוחרים פרויקט לאחסון התצוגה.
- בתפריט Dataset (מערך נתונים), בוחרים מערך נתונים או יוצרים מערך נתונים חדש כדי לאחסן את התצוגה. מערך נתוני היעד של תצוגה שמורה חייב להיות באותו אזור כמו המקור.
- בשדה Table, מזינים את שם התצוגה.
- לוחצים על Save.
SQL
משתמשים בהצהרה CREATE VIEW.
בדוגמה הבאה נוצרת תצוגה בשם usa_male_names ממערך הנתונים הציבורי של שמות בארה"ב:
במסוף Google Cloud , עוברים לדף BigQuery.
מזינים את ההצהרה הבאה בעורך השאילתות:
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.
-
מגדירים את פרויקט ברירת המחדל שבו רוצים להחיל את ההגדרות של Terraform. Google Cloud
תצטרכו להריץ את הפקודה הזו רק פעם אחת לכל פרויקט, ותוכלו לעשות זאת בכל ספרייה.
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
מבצעים קריאה לשיטה 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, אפשר לעיין במאמר בנושא תצוגות מורשות.
המאמרים הבאים
- מידע על יצירת תצוגה מורשית זמין במאמר יצירת תצוגות מורשות.
- במאמר קבלת מידע על תצוגות מוסבר איך מקבלים מטא-נתונים של תצוגות.
- מידע נוסף על ניהול תצוגות מפורטות זמין במאמר בנושא ניהול תצוגות מפורטות.