יצירה של טבלאות ושימוש בהן
במאמר הזה מוסבר איך ליצור ולהשתמש בטבלאות רגילות (מוכללות) ב-BigQuery. מידע על יצירת סוגים אחרים של טבלאות
אחרי שיוצרים טבלה, אפשר:
- שליטה בגישה לנתוני הטבלה.
- קבלת מידע על הטבלאות.
- הצגת רשימה של הטבלאות במערך נתונים.
- אחזור מטא-נתונים של טבלה.
במאמר ניהול טבלאות אפשר לקרוא מידע נוסף על ניהול טבלאות, כולל עדכון מאפייני טבלה, העתקת טבלה ומחיקת טבלה.
לפני שמתחילים
להקצות תפקידים של ניהול זהויות והרשאות גישה (IAM) שנותנים למשתמשים את ההרשאות הדרושות לביצוע כל משימה שמופיעה במאמר הזה.
התפקידים הנדרשים
כדי לקבל את ההרשאות שדרושות ליצירת טבלה, צריך לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים:
- משתמש במשימות BigQuery (
roles/bigquery.jobUser) בפרויקט אם יוצרים טבלה על ידי טעינת נתונים או שמירת תוצאות של שאילתה בטבלה. - BigQuery Data Editor (
roles/bigquery.dataEditor) במערך הנתונים שבו יוצרים את הטבלה.
להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
התפקידים המוגדרים מראש האלה מכילים את ההרשאות שנדרשות ליצירת טבלה. כדי לראות בדיוק אילו הרשאות נדרשות, אפשר להרחיב את הקטע ההרשאות הנדרשות:
ההרשאות הנדרשות
כדי ליצור טבלה, צריך את ההרשאות הבאות:
-
bigquery.tables.createבמערך הנתונים שבו אתם יוצרים את הטבלה. -
bigquery.tables.getDataבכל הטבלאות והתצוגות שהשאילתה מפנה אליהן, אם שומרים את תוצאות השאילתה כטבלה. -
bigquery.jobs.createבפרויקט אם יוצרים את הטבלה על ידי טעינת נתונים או על ידי שמירת תוצאות של שאילתה בטבלה. -
bigquery.tables.updateDataבטבלה אם מוסיפים לטבלה או מחליפים אותה בתוצאות של שאילתה.
יכול להיות שתקבלו את ההרשאות האלה באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש אחרים.
מתן שמות לטבלאות
כשיוצרים טבלה ב-BigQuery, שם הטבלה צריך להיות ייחודי לכל מערך נתונים. שם הטבלה יכול:
- להכיל תווים באורך של עד 1,024 בייטים בקידוד UTF-8.
- להכיל תווים ב-Unicode בקטגוריות L (אות), M (סימן), N (מספר), Pc (מחבר, כולל קו תחתון), Pd (מקף), Zs (רווח). מידע נוסף זמין במאמר בנושא קטגוריה כללית.
השמות הבאים הם דוגמאות לשמות תקינים של טבלאות:
table 01, ग्राहक, 00_お客様, étudiant-01.
הערות:
- כברירת מחדל, שמות של טבלאות הם תלויי אותיות רישיות.
mytableו-MyTableיכולים להתקיים יחד באותו מערך נתונים, אלא אם הם חלק ממערך נתונים שבו ההבחנה בין אותיות רישיות לאותיות קטנות מושבתת. - חלק משמות הטבלאות והתחיליות של שמות הטבלאות שמורים. אם מוצגת לכם הודעת שגיאה שאומרת ששם הטבלה או התחילית שמורים, צריך לבחור שם אחר ולנסות שוב.
אם כוללים כמה אופרטורים של נקודה (
.) ברצף, המערכת מסירה באופן משתמע את האופרטורים הכפולים.לדוגמה, הקוד הבא:
project_name....dataset_name..table_nameהופך ל:
project_name.dataset_name.table_name
יצירת טבלאות
אפשר ליצור טבלה ב-BigQuery בדרכים הבאות:
- באופן ידני באמצעות מסוף Google Cloud או כלי שורת הפקודה של BigQuery
bq mk. - באופן פרוגרמטי, על ידי קריאה ל-method של
tables.insertAPI. - באמצעות ספריות לקוח.
- מתוצאות השאילתה.
- על ידי הגדרת טבלה שמפנה למקור נתונים חיצוני.
- כשאתם טוענים נתונים.
- באמצעות הצהרה של
CREATE TABLEשפת הגדרת נתונים (DDL).
יצירת טבלה ריקה עם הגדרת סכימה
אפשר ליצור טבלה ריקה עם הגדרת סכימה בדרכים הבאות:
- מזינים את הסכימה באמצעות המסוף Google Cloud .
- מספקים את הסכימה בשורה באמצעות כלי שורת הפקודה של BigQuery.
- שליחה של קובץ סכימת JSON באמצעות כלי שורת הפקודה של BigQuery.
- כשמפעילים את ה-method
tables.insertשל ממשקי ה-API, צריך לספק את הסכימה במשאב טבלה.
מידע נוסף על הגדרת סכימת טבלה זמין במאמר בנושא הגדרת סכימה.
אחרי שיוצרים את הטבלה, אפשר לטעון לתוכה נתונים או לאכלס אותה על ידי כתיבת תוצאות של שאילתה.
כדי ליצור טבלה ריקה עם הגדרת סכימה:
המסוף
במסוף Google Cloud , עוברים לדף BigQuery.
- בחלונית הימנית, לוחצים על כלי הניתוחים.
- בחלונית Explorer, מרחיבים את הפרויקט, לוחצים על Datasets ובוחרים מערך נתונים.
- בקטע פרטי מערך הנתונים, לוחצים על יצירת טבלה.
- בחלונית Create table, מציינים את הפרטים הבאים:
- בקטע מקור, בוחרים באפשרות טבלה ריקה ברשימה יצירת טבלה מ.
- בקטע יעד, מציינים את הפרטים הבאים:
- בקטע Dataset (מערך נתונים), בוחרים את מערך הנתונים שבו רוצים ליצור את הטבלה.
- בשדה Table, מזינים את השם של הטבלה שרוצים ליצור.
- מוודאים שהשדה Table type (סוג הטבלה) מוגדר ל-Native table (טבלה מקורית).
- בקטע Schema (סכימה), מזינים את הגדרת הסכימה.
אפשר להזין את פרטי הסכימה באופן ידני באחת מהשיטות הבאות:
- אפשרות 1: לוחצים על Edit as text (עריכה כטקסט) ומדביקים את הסכימה כ-JSON array. כשמשתמשים במערך JSON, יוצרים את הסכימה באותו תהליך שבו יוצרים קובץ סכימת JSON.
כדי לראות את הסכימה של טבלה קיימת בפורמט JSON, מזינים את הפקודה הבאה:
bq show --format=prettyjson dataset.table
- אפשרות 2: לוחצים על הוספת שדה ומזינים את סכימת הטבלה. מציינים את השם, הסוג, והמצב של כל שדה.
- אפשרות 1: לוחצים על Edit as text (עריכה כטקסט) ומדביקים את הסכימה כ-JSON array. כשמשתמשים במערך JSON, יוצרים את הסכימה באותו תהליך שבו יוצרים קובץ סכימת JSON.
כדי לראות את הסכימה של טבלה קיימת בפורמט JSON, מזינים את הפקודה הבאה:
- אופציונלי: מציינים הגדרות של מחיצה ושל אשכול. מידע נוסף זמין במאמרים בנושא יצירה של טבלאות עם חלוקה למחיצות ויצירה של טבלאות מקובצות ושימוש בהן.
- אופציונלי: בקטע Advanced options, אם רוצים להשתמש במפתח הצפנה בניהול הלקוח, בוחרים באפשרות Use a customer-managed encryption key (CMEK). כברירת מחדל, BigQuery מצפין את תוכן הלקוחות שמאוחסן במצב מנוחה באמצעות Google-owned and Google-managed encryption key.
- לוחצים על יצירת טבלה.
SQL
בדוגמה הבאה נוצרת טבלה בשם newtable שתוקף שלה יפוג ב-1 בינואר 2023:
במסוף Google Cloud , עוברים לדף BigQuery.
מזינים את ההצהרה הבאה בעורך השאילתות:
CREATE TABLE mydataset.newtable ( x INT64 OPTIONS (description = 'An optional INTEGER field'), y STRUCT < a ARRAY <STRING> OPTIONS (description = 'A repeated STRING field'), b BOOL > ) OPTIONS ( expiration_timestamp = TIMESTAMP '2023-01-01 00:00:00 UTC', description = 'a table that expires in 2023', labels = [('org_unit', 'development')]);
לוחצים על הפעלה.
מידע נוסף על הרצת שאילתות זמין במאמר הרצת שאילתה אינטראקטיבית.
BQ
-
במסוף Google Cloud , מפעילים את Cloud Shell.
בחלק התחתון של Google Cloud המסוף יתחיל סשן של Cloud Shell ותופיע הודעה של שורת הפקודה. Cloud Shell היא סביבת מעטפת שבה ה-CLI של Google Cloud מותקן ומוגדרים ערכים לפרויקט הקיים. הסשן יופעל תוך כמה שניות.
משתמשים בפקודה
bq mkעם הדגל--tableאו-t. אפשר לספק את פרטי סכימת הטבלה בשורה או באמצעות קובץ סכימת JSON. רשימה מלאה של הפרמטרים זמינה בחומר העזר בנושאbq mk --table. פרמטרים אופציונליים לדוגמה:--expiration--description--time_partitioning_field--time_partitioning_type--range_partitioning--clustering_fields--destination_kms_key--label
התכונות
--time_partitioning_field,--time_partitioning_type,--range_partitioning,--clustering_fieldsוגם--destination_kms_keyלא מוצגות כאן. מידע נוסף על הפרמטרים האופציונליים האלה זמין בקישורים הבאים:- מידע נוסף על
--time_partitioning_field,--time_partitioning_typeו---range_partitioningזמין במאמר בנושא טבלאות עם חלוקה למחיצות. - מידע נוסף על
--clustering_fieldsזמין במאמר בנושא טבלאות מקובצות. - מידע נוסף על
--destination_kms_key
אם אתם יוצרים טבלה בפרויקט שאינו פרויקט ברירת המחדל, צריך להוסיף את מזהה הפרויקט למערך הנתונים בפורמט הבא:
project_id:dataset.כדי ליצור טבלה ריקה במערך נתונים קיים עם הגדרת סכימה, מזינים את הפקודה הבאה:
bq mk \ --table \ --expiration=integer \ --description=description \ --label=key_1:value_1 \ --label=key_2:value_2 \ --add_tags=key_3:value_3[,...] \ project_id:dataset.table \ schema
מחליפים את מה שכתוב בשדות הבאים:
- integer הוא משך החיים שמוגדר כברירת מחדל (בשניות) לטבלה. הערך המינימלי הוא 3,600 שניות (שעה אחת). מועד התפוגה הוא השעה הנוכחית בשעון UTC בתוספת הערך השלם. אם מגדירים את זמן התפוגה כשיוצרים טבלה, הגדרת ברירת המחדל של זמן התפוגה של הטבלה במערך הנתונים מתעלמת מההגדרה הזו.
- description: תיאור של הטבלה במירכאות.
- key_1:value_1 ו-key_2:value_2 הם זוגות של מפתח וערך שמציינים תוויות.
- key_3:value_3 הם זוגות של מפתח וערך שמציינים תגים. מוסיפים כמה תגים לאותו דגל, ומפרידים בין צמדי מפתח:ערך באמצעות פסיקים.
- project_id הוא מזהה הפרויקט.
- dataset הוא מערך נתונים בפרויקט.
- table הוא שם הטבלה שאתם יוצרים.
- schema היא הגדרה של סכימה מוטבעת בפורמט field:data_type,field:data_type או הנתיב לקובץ סכימת JSON במחשב המקומי.
כשמציינים את הסכימה בשורת הפקודה, אי אפשר לכלול סוג
RECORD(STRUCT), אי אפשר לכלול תיאור של עמודה ואי אפשר לציין את מצב העמודה. ברירת המחדל של כל אמצעי התחבורה היאNULLABLE. כדי לכלול תיאורים, מצבים וסוגיRECORD, צריך לספק קובץ סכימת JSON במקום זאת.דוגמאות:
מזינים את הפקודה הבאה כדי ליצור טבלה באמצעות הגדרה של סכימה מוטבעת. הפקודה הזו יוצרת טבלה בשם
mytableב-mydatasetבפרויקט ברירת המחדל. תפוגת הטבלה מוגדרת ל-3,600 שניות (שעה אחת), התיאור מוגדר ל-This is my tableוהתווית מוגדרת ל-organization:development. בפקודה נעשה שימוש בקיצור הדרך-tבמקום ב---table. הסכימה מצוינת בשורה כ:qtr:STRING,sales:FLOAT,year:STRING.bq mk \ -t \ --expiration 3600 \ --description "This is my table" \ --label organization:development \ mydataset.mytable \ qtr:STRING,sales:FLOAT,year:STRING
מזינים את הפקודה הבאה כדי ליצור טבלה באמצעות קובץ סכימת JSON. הפקודה הזו יוצרת טבלה בשם
mytableב-mydatasetבפרויקט שמוגדר כברירת מחדל. תפוגת הטבלה מוגדרת ל-3,600 שניות (שעה אחת), התיאור מוגדר ל-This is my tableוהתווית מוגדרת ל-organization:development. הנתיב לקובץ הסכימה הוא/tmp/myschema.json.bq mk \ --table \ --expiration 3600 \ --description "This is my table" \ --label organization:development \ mydataset.mytable \ /tmp/myschema.json
מזינים את הפקודה הבאה כדי ליצור טבלה באמצעות קובץ סכימת JSON. הפקודה הזו יוצרת טבלה בשם
mytableב-mydatasetב-myotherproject. תפוגת הטבלה מוגדרת ל-3,600 שניות (שעה אחת), התיאור מוגדר ל-This is my tableוהתווית מוגדרת ל-organization:development. הנתיב לקובץ הסכימה הוא/tmp/myschema.json.bq mk \ --table \ --expiration 3600 \ --description "This is my table" \ --label organization:development \ myotherproject:mydataset.mytable \ /tmp/myschema.json
אחרי שיוצרים את הטבלה, אפשר לעדכן את תאריך התפוגה, התיאור והתוויות שלה. אפשר גם לשנות את הגדרת הסכימה.
Terraform
משתמשים במשאב google_bigquery_table.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
יצירת טבלה
בדוגמה הבאה נוצרת טבלה בשם mytable:
יצירת טבלה והענקת גישה אליה
בדוגמה הבאה נוצרת טבלה בשם mytable, ואז נעשה שימוש במשאב google_bigquery_table_iam_policy כדי להעניק גישה לטבלה. מבצעים את השלב הזה רק אם רוצים להעניק גישה לטבלה לגורמים שאין להם גישה למערך הנתונים שבו הטבלה נמצאת.
יצירת טבלה עם מפתח הצפנה בניהול הלקוח
בדוגמה הבאה נוצר טבלה בשם mytable, וגם נעשה שימוש במשאבים google_kms_crypto_key ו-google_kms_key_ring כדי לציין מפתח של Cloud Key Management Service לטבלה. לפני שמריצים את הדוגמה הזו, צריך להפעיל את Cloud Key Management Service API.
כדי להחיל את הגדרות 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 עם משאב טבלה מוגדר.
C#
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי C#הוראות ההגדרה שבמדריך למתחילים של BigQuery באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של BigQuery C# API.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
המשך
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי 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. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
PHP
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי PHPהוראות ההגדרה שבמדריך למתחילים של BigQuery באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של BigQuery PHP API.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
Python
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Pythonהוראות ההגדרה שבמדריך למתחילים של BigQuery באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של BigQuery Python API.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
Ruby
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Rubyהוראות ההגדרה שבמדריך למתחילים של BigQuery באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של BigQuery Ruby API.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
יצירת טבלה ריקה בלי הגדרת סכימה
Java
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Javaהוראות ההגדרה שבמדריך למתחילים של BigQuery באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של BigQuery Java API.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
יצירת טבלה מתוצאת שאילתה
כדי ליצור טבלה מתוצאת שאילתה, כותבים את התוצאות לטבלת יעד.
המסוף
פותחים את הדף BigQuery במסוף Google Cloud .
בחלונית הימנית, לוחצים על כלי הניתוחים:

אם החלונית הימנית לא מוצגת, לוחצים על הרחבת החלונית הימנית כדי לפתוח אותה.
בחלונית Explorer, מרחיבים את הפרויקט, לוחצים על Datasets ובוחרים מערך נתונים.
מזינים שאילתת SQL תקינה בעורך השאילתות.
לוחצים על עריכה > הגדרות שאילתה.
בוחרים באפשרות הגדרת טבלת יעד לתוצאות השאילתה.
בקטע יעד, בוחרים את מערך הנתונים שבו רוצים ליצור את הטבלה, ואז בוחרים מזהה טבלה.
בקטע העדפת כתיבה לטבלת היעד, בוחרים באחת מהאפשרויות הבאות:
- Write if empty (כתיבה אם ריק) – כתיבת תוצאות השאילתה לטבלה רק אם הטבלה ריקה.
- הוספה לטבלה – הוספת תוצאות השאילתה לטבלה קיימת.
- Overwrite table (החלפת טבלה) – מחליף טבלה קיימת עם אותו שם בתוצאות השאילתה.
אופציונלי: בשדה Data location (מיקום הנתונים), בוחרים את המיקום הרצוי.
כדי לעדכן את הגדרות השאילתה, לוחצים על שמירה.
לוחצים על Run. הפעולה הזו יוצרת עבודת שאילתה שכותבת את תוצאות השאילתה לטבלה שצוינה.
לחלופין, אם שכחתם לציין טבלת יעד לפני הפעלת השאילתה, תוכלו להעתיק את טבלת התוצאות שנשמרה במטמון לטבלה קבועה באמצעות לחיצה על הלחצן שמירת התוצאות מעל העורך.
SQL
בדוגמה הבאה נעשה שימוש בהצהרה CREATE TABLE כדי ליצור את הטבלה trips מנתונים בטבלה הציבורית bikeshare_trips:
במסוף Google Cloud , עוברים לדף BigQuery.
מזינים את ההצהרה הבאה בעורך השאילתות:
CREATE TABLE mydataset.trips AS ( SELECT bike_id, start_time, duration_minutes FROM bigquery-public-data.austin_bikeshare.bikeshare_trips );
לוחצים על הפעלה.
מידע נוסף על הרצת שאילתות זמין במאמר הרצת שאילתה אינטראקטיבית.
מידע נוסף זמין במאמר בנושא יצירת טבלה חדשה מטבלה קיימת.
BQ
-
במסוף Google Cloud , מפעילים את Cloud Shell.
בחלק התחתון של Google Cloud המסוף יתחיל סשן של Cloud Shell ותופיע הודעה של שורת הפקודה. Cloud Shell היא סביבת מעטפת שבה ה-CLI של Google Cloud מותקן ומוגדרים ערכים לפרויקט הקיים. הסשן יופעל תוך כמה שניות.
מזינים את הפקודה
bq queryומציינים את הדגל--destination_tableכדי ליצור טבלה קבועה על סמך תוצאות השאילתה. מציינים את הדגלuse_legacy_sql=falseכדי להשתמש בתחביר GoogleSQL. כדי לכתוב את תוצאות השאילתה לטבלה שלא נמצאת בפרויקט ברירת המחדל, מוסיפים את מזהה הפרויקט לשם מערך הנתונים בפורמט הבא:project_id:dataset.אופציונלי: מציינים את הדגל
--locationומגדירים את הערך למיקום.כדי לשלוט בהגדרת הכתיבה של טבלת יעד קיימת, מציינים אחד מהדגלים האופציונליים הבאים:
-
--append_table: אם טבלת היעד קיימת, תוצאות השאילתה מצורפות אליה.
--replace: אם טבלת היעד קיימת, היא מוחלפת בתוצאות השאילתה.bq --location=location query \ --destination_table project_id:dataset.table \ --use_legacy_sql=false 'query'
מחליפים את מה שכתוב בשדות הבאים:
locationהוא שם המיקום שמשמש לעיבוד השאילתה. הדגל--locationהוא אופציונלי. לדוגמה, אם אתם משתמשים ב-BigQuery באזור טוקיו, אתם יכולים להגדיר את הערך של הדגל ל-asia-northeast1. כדי להגדיר ערך ברירת מחדל למיקום, משתמשים בקובץ.bigqueryrc.
project_idהוא מזהה הפרויקט.
datasetהוא השם של מערך הנתונים שמכיל את הטבלה שאליה נכתבות תוצאות השאילתה.
tableהוא שם הטבלה שאליה נכתבות תוצאות השאילתה.
queryהיא שאילתה בתחביר GoogleSQL.אם לא מצוין דגל של פעולת כתיבה, התנהגות ברירת המחדל היא כתיבת התוצאות לטבלה רק אם היא ריקה. אם הטבלה קיימת והיא לא ריקה, השגיאה הבאה מוחזרת:
BigQuery error in query operation: Error processing job project_id:bqjob_123abc456789_00000e1234f_1: Already Exists: Table project_id:dataset.table.דוגמאות:
מזינים את הפקודה הבאה כדי לכתוב את תוצאות השאילתה לטבלת יעד בשם
mytableב-mydataset. מערך הנתונים נמצא בפרויקט ברירת המחדל. מכיוון שלא צוין דגל של פעולת כתיבה בפקודה, הטבלה צריכה להיות חדשה או ריקה. אחרת, מוחזרת שגיאתAlready exists. השאילתה מאחזרת נתונים ממערך הנתונים הציבורי USA Name Data.bq query \ --destination_table mydataset.mytable \ --use_legacy_sql=false \ 'SELECT name, number FROM `bigquery-public-data`.usa_names.usa_1910_current WHERE gender = "M" ORDER BY number DESC'
מזינים את הפקודה הבאה כדי להשתמש בתוצאות של שאילתה כדי להחליף טבלת יעד בשם
mytableב-mydataset. מערך הנתונים נמצא בפרויקט ברירת המחדל. הפקודה משתמשת בדגל--replaceכדי להחליף את טבלת היעד.bq query \ --destination_table mydataset.mytable \ --replace \ --use_legacy_sql=false \ 'SELECT name, number FROM `bigquery-public-data`.usa_names.usa_1910_current WHERE gender = "M" ORDER BY number DESC'
מזינים את הפקודה הבאה כדי לצרף את תוצאות השאילתה לטבלת יעד בשם
mytableב-mydataset. מערך הנתונים נמצא ב-my-other-project, ולא בפרויקט ברירת המחדל שלכם. הפקודה משתמשת בדגל--append_tableכדי לצרף את תוצאות השאילתה לטבלת היעד.bq query \ --append_table \ --use_legacy_sql=false \ --destination_table my-other-project:mydataset.mytable \ 'SELECT name, number FROM `bigquery-public-data`.usa_names.usa_1910_current WHERE gender = "M" ORDER BY number DESC'
הפלט של כל אחת מהדוגמאות האלה נראה כך. כדי לשפר את הקריאות, חלק מהפלט נחתך.
Waiting on bqjob_r123abc456_000001234567_1 ... (2s) Current status: DONE +---------+--------+ | name | number | +---------+--------+ | Robert | 10021 | | John | 9636 | | Robert | 9297 | | ... | +---------+--------+
-
API
כדי לשמור את תוצאות השאילתה בטבלה קבועה, מפעילים את השיטה jobs.insert, מגדירים משימת query וכוללים ערך למאפיין destinationTable. כדי לשלוט בהגדרת הכתיבה של טבלת יעד קיימת, מגדירים את המאפיין writeDisposition.
כדי לשלוט במיקום העיבוד של שאילתת העבודה, מציינים את המאפיין location בקטע jobReference של משאב העבודה.
המשך
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Goהוראות ההגדרה שבמדריך למתחילים של BigQuery באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של BigQuery Go API.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
Java
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Javaהוראות ההגדרה שבמדריך למתחילים של BigQuery באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של BigQuery Java API.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
כדי לשמור את תוצאות השאילתה בטבלה קבועה, מגדירים את טבלת היעד לערך TableId הרצוי ב-QueryJobConfiguration.
Node.js
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Node.jsהוראות ההגדרה שבמדריך למתחילים של BigQuery באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של BigQuery Node.js API.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
Python
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Pythonהוראות ההגדרה שבמדריך למתחילים של BigQuery באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של BigQuery Python API.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
כדי לשמור את תוצאות השאילתה בטבלה קבועה, יוצרים QueryJobConfig ומגדירים את היעד ל-TableReference הרצוי. מעבירים את הגדרות המשימה אל השיטה query.יצירת טבלה שמפנה למקור נתונים חיצוני
מקור נתונים חיצוני הוא מקור נתונים שאפשר להריץ עליו שאילתות ישירות מ-BigQuery, גם אם הנתונים לא מאוחסנים ב-BigQuery. לדוגמה, יכול להיות שיש לכם נתונים במסד נתונים Google Cloud אחר, בקבצים ב-Cloud Storage או במוצר ענן אחר לגמרי שאתם רוצים לנתח ב-BigQuery, אבל אתם לא מוכנים להעביר אותם.
מידע נוסף זמין במאמר מבוא למקורות נתונים חיצוניים.
יצירת טבלה כשמטעינים נתונים
כשאתם טוענים נתונים ל-BigQuery, אתם יכולים לטעון אותם לטבלה או למחיצה חדשות, לצרף אותם לטבלה או למחיצה קיימות, או להחליף טבלה או מחיצה. לא צריך ליצור טבלה ריקה לפני שמעלים אליה נתונים. אתם יכולים ליצור את הטבלה החדשה ולטעון את הנתונים בו-זמנית.
כשאתם טוענים נתונים ל-BigQuery, אתם יכולים לספק את הסכימה של הטבלה או של המחיצה, או להשתמש בזיהוי אוטומטי של הסכימה עבור פורמטים נתמכים של נתונים.
מידע נוסף על טעינת נתונים זמין במאמר מבוא לטעינת נתונים ל-BigQuery.
יצירת טבלה מולטימודאלית
אתם יכולים ליצור טבלה עם עמודה אחת או יותר של ObjectRef כדי לאחסן מטא-נתונים על נתונים לא מובְנים שקשורים לנתונים המובְנים האחרים בטבלה. לדוגמה, בטבלת מוצרים, אפשר ליצור ObjectRef עמודה
לאחסון פרטי תמונות של מוצרים לצד נתוני המוצרים האחרים. הנתונים הלא מובנים עצמם מאוחסנים ב-Cloud Storage, וזמינים ב-BigQuery באמצעות טבלת אובייקטים.
במאמר ניתוח נתונים מרובי-אופנים באמצעות SQL ו-BigQuery DataFrames מוסבר איך ליצור טבלה מרובת-אופנים.
שליטה בגישה לטבלאות
כדי להגדיר גישה לטבלאות ולתצוגות, אפשר להעניק תפקיד IAM לישות ברמות הבאות, שמפורטות לפי סדר טווח המשאבים המותר (מהגדול לקטן):
- רמה גבוהה בGoogle Cloud היררכיית המשאבים, כמו רמת הפרויקט, התיקייה או הארגון
- ברמת מערך הנתונים
- ברמת הטבלה או התצוגה
אפשר גם להגביל את הגישה לנתונים בטבלאות באמצעות השיטות הבאות:
הגישה לכל משאב שמוגן על ידי IAM היא מצטברת. לדוגמה, אם לישות אין גישה ברמה גבוהה כמו פרויקט, אפשר להעניק לישות גישה ברמת מערך הנתונים, ואז לישות תהיה גישה לטבלאות ולתצוגות במערך הנתונים. באופן דומה, אם לישות אין גישה ברמה הגבוהה או ברמת מערך הנתונים, אפשר להעניק לישות גישה ברמת הטבלה או התצוגה.
הענקת תפקידי IAM ברמה גבוהה יותר בGoogle Cloudהיררכיית המשאבים, כמו ברמת הפרויקט, התיקייה או הארגון, מעניקה לישות גישה למגוון רחב של משאבים. לדוגמה, אם נותנים לישות תפקיד ברמת הפרויקט, הישות מקבלת הרשאות שחלות על כל מערכי הנתונים בפרויקט.
הקצאת תפקיד ברמת מערך הנתונים מציינת את הפעולות שישות יכולה לבצע בטבלאות ובתצוגות במערך הנתונים הספציפי הזה, גם אם לישות אין גישה ברמה גבוהה יותר. במאמר שליטה בגישה למערכי נתונים מוסבר איך להגדיר בקרת גישה ברמת מערך הנתונים.
הקצאת תפקיד ברמת הטבלה או התצוגה מציינת את הפעולות שישות יכולה לבצע בטבלאות ובתצוגות ספציפיות, גם אם לישות אין גישה ברמה גבוהה יותר. מידע על הגדרת אמצעי בקרה לגישה ברמת הטבלה זמין במאמר שליטה בגישה לטבלאות ולתצוגות.
אפשר גם ליצור תפקידים בהתאמה אישית ב-IAM. אם יוצרים תפקיד בהתאמה אישית, ההרשאות שמעניקים תלויות בפעולות הספציפיות שרוצים שהישות תוכל לבצע.
אי אפשר להגדיר הרשאת 'דחייה' למשאב כלשהו שמוגן על ידי IAM.
מידע נוסף על תפקידים והרשאות זמין במאמר הסבר על תפקידים במסמכי ה-IAM ובמאמר תפקידים והרשאות של IAM ב-BigQuery.
קבלת מידע על טבלאות
אפשר לקבל מידע או מטא-נתונים על טבלאות בדרכים הבאות:
- באמצעות מסוף Google Cloud .
- שימוש בכלי שורת הפקודה של BigQuery
bq showcommand. - קריאה לשיטה
tables.getשל API. - שימוש בספריות הלקוח.
- שליחת שאילתה לתצוגה
INFORMATION_SCHEMA.VIEWS.
ההרשאות הנדרשות
כדי לקבל מידע על טבלאות, אתם צריכים לקבל לפחות הרשאות bigquery.tables.get. תפקידי ה-IAM המוגדרים מראש הבאים כוללים את ההרשאות bigquery.tables.get:
bigquery.metadataViewerbigquery.dataViewerbigquery.dataOwnerbigquery.dataEditorbigquery.admin
בנוסף, אם למשתמש יש הרשאות bigquery.datasets.create, כשהוא יוצר מערך נתונים, הוא מקבל גישת bigquery.dataOwner אליו.
גישת bigquery.dataOwner מאפשרת למשתמש לאחזר מטא-נתונים של טבלה.
במאמר בקרת גישה מוסבר בהרחבה איך מנהלים את התפקידים וההרשאות ב-IAM ב-BigQuery.
קבלת מידע על טבלה
כדי לקבל מידע על טבלאות:
המסוף
בחלונית הניווט, בקטע Resources, מרחיבים את הפרויקט ובוחרים מערך נתונים.
לוחצים על השם של מערך הנתונים כדי להרחיב אותו. הטבלאות והתצוגות במערך הנתונים מופיעות.
לוחצים על שם הטבלה.
בחלונית Details, לוחצים על Details כדי להציג את תיאור הטבלה ופרטי הטבלה.
אפשר גם לעבור לכרטיסייה סכימה כדי לראות את הגדרת הסכימה של הטבלה.
BQ
-
במסוף Google Cloud , מפעילים את Cloud Shell.
בחלק התחתון של Google Cloud המסוף יתחיל סשן של Cloud Shell ותופיע הודעה של שורת הפקודה. Cloud Shell היא סביבת מעטפת שבה ה-CLI של Google Cloud מותקן ומוגדרים ערכים לפרויקט הקיים. הסשן יופעל תוך כמה שניות.
מריצים את הפקודה
bq showכדי להציג את כל המידע בטבלה. משתמשים בדגל--schemaכדי להציג רק מידע על סכימת הטבלה. אפשר להשתמש בדגל--formatכדי לשלוט בפלט.אם אתם מקבלים מידע על טבלה בפרויקט שאינו פרויקט ברירת המחדל שלכם, צריך להוסיף את מזהה הפרויקט למערך הנתונים בפורמט הבא:
project_id:dataset.bq show \ --schema \ --format=prettyjson \ project_id:dataset.table
כאשר:
- project_id הוא מזהה הפרויקט.
- dataset הוא שם מערך הנתונים.
- table הוא שם הטבלה.
דוגמאות:
מזינים את הפקודה הבאה כדי להציג את כל המידע על
mytableבmydataset. mydatasetנמצא בפרויקט ברירת המחדל שלכם.bq show --format=prettyjson mydataset.mytable
מזינים את הפקודה הבאה כדי להציג את כל המידע על
mytableבmydataset. mydatasetנמצא ב-myotherproject, ולא בפרויקט ברירת המחדל שלכם.bq show --format=prettyjson myotherproject:mydataset.mytable
מזינים את הפקודה הבאה כדי להציג רק מידע על הסכימה של
mytableב-mydataset. mydatasetנמצא בmyotherproject, ולא בפרויקט ברירת המחדל.bq show --schema --format=prettyjson myotherproject:mydataset.mytable
API
מבצעים קריאה ל-tables.get
ומספקים את כל הפרמטרים הרלוונטיים.
המשך
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי 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. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
PHP
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי PHPהוראות ההגדרה שבמדריך למתחילים של BigQuery באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של BigQuery PHP API.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
Python
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Pythonהוראות ההגדרה שבמדריך למתחילים של BigQuery באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של BigQuery Python API.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
קבלת מידע על טבלה באמצעות INFORMATION_SCHEMA
INFORMATION_SCHEMA היא סדרה של תצוגות שמאפשרות גישה למטא-נתונים על מערכי נתונים, שגרות, טבלאות, תצוגות, משימות, הזמנות ונתונים של סטרימינג.
אפשר להריץ שאילתות בתצוגות הבאות כדי לקבל מידע על הטבלה:
- אפשר להשתמש בתצוגות
INFORMATION_SCHEMA.TABLESו-INFORMATION_SCHEMA.TABLE_OPTIONSכדי לאחזר מטא-נתונים על טבלאות ותצוגות בפרויקט. - משתמשים בתצוגות
INFORMATION_SCHEMA.COLUMNSו-INFORMATION_SCHEMA.COLUMN_FIELD_PATHSכדי לאחזר מטא-נתונים על העמודות (השדות) בטבלה. - אפשר להשתמש בתצוגות
INFORMATION_SCHEMA.TABLE_STORAGEכדי לאחזר מטא-נתונים על השימוש הנוכחי וההיסטורי בנפח האחסון לפי טבלה.
התצוגות TABLES ו-TABLE_OPTIONS מכילות גם מידע כללי על הצפיות. למידע מפורט, אפשר להריץ שאילתה בתצוגה המפורטת INFORMATION_SCHEMA.VIEWS.
צפייה TABLES
כששולחים שאילתה לתצוגה INFORMATION_SCHEMA.TABLES, תוצאות השאילתה מכילות שורה אחת לכל טבלה או תצוגה במערך נתונים. למידע מפורט על תצוגות, אפשר להריץ שאילתה על INFORMATION_SCHEMA.VIEWS
view.
לתצוגה INFORMATION_SCHEMA.TABLES יש את הסכימה הבאה:
| שם עמודה | סוג נתונים | ערך |
|---|---|---|
table_catalog |
STRING |
מזהה הפרויקט שמכיל את מערך הנתונים. |
table_schema |
STRING |
השם של מערך הנתונים שמכיל את הטבלה או התצוגה. נקרא גם datasetId. |
table_name |
STRING |
השם של הטבלה או התצוגה. נקרא גם tableId. |
table_type |
STRING |
סוג הטבלה, אחת מהאפשרויות הבאות:
|
managed_table_type |
STRING |
העמודה הזו נמצאת בגרסת טרום-השקה (Preview). סוג הטבלה המנוהלת, אחת מהאפשרויות הבאות:
|
is_insertable_into |
STRING |
YES או NO, בהתאם לשאלה אם הטבלה תומכת בפקודות DML INSERT |
is_fine_grained_mutations_enabled |
STRING |
YES או NO, בהתאם להגדרה של שינויים מפורטים ב-DML בטבלה
|
is_typed |
STRING |
הערך הוא תמיד NO |
is_change_history_enabled |
STRING |
YES או NO, בהתאם למצב ההפעלה של היסטוריית השינויים |
creation_time |
TIMESTAMP |
מועד היצירה של הטבלה |
base_table_catalog |
STRING |
עבור שיבוטים של טבלאות
ותמונות מצב של טבלאות,
הפרויקט של טבלת הבסיס. רלוונטי רק לטבלאות שבהן הערך של table_type הוא CLONE או SNAPSHOT.
|
base_table_schema |
STRING |
עבור שיבוטים של טבלאות ותמונות מצב של טבלאות, מערך הנתונים של טבלת הבסיס. רלוונטי רק לטבלאות שבהן הערך של table_type הוא CLONE או SNAPSHOT. |
base_table_name |
STRING |
שיבוטים של טבלאות
ותמונות מצב של טבלאות,
השם של טבלת הבסיס. רלוונטי רק לטבלאות שבהן הערך של table_type הוא CLONE או SNAPSHOT. |
snapshot_time_ms |
TIMESTAMP |
במקרה של שיבוטים של טבלאות
ותמונות מצב של טבלאות,
השעה שבה בוצעה פעולת השיבוט
או תמונת המצב
בטבלת הבסיס כדי ליצור את הטבלה הזו. אם נעשה שימוש במסע בזמן, השדה הזה יכיל את חותמת הזמן של המסע בזמן. אחרת, הערך בשדה snapshot_time_ms יהיה זהה לערך בשדה creation_time. רלוונטי רק לטבלאות שבהן הערך של table_type הוא CLONE או SNAPSHOT.
|
replica_source_catalog |
STRING |
במקרה של עותקים של תצוגות מהותיות, הפרויקט של התצוגה המהותית הבסיסית. |
replica_source_schema |
STRING |
במקרה של עותקים של תצוגות מהותיות, מערך הנתונים של התצוגה המהותית הבסיסית. |
replica_source_name |
STRING |
עבור עותקים של תצוגות מהותיות, שם התצוגה המהותית הבסיסית. |
replication_status |
STRING |
לגבי
עותקים של תצוגות מהותיות,
הסטטוס של השכפול מתצוגת הבסיס המהותית אל
העותק של התצוגה המהותית. אחת מהאפשרויות הבאות:
|
replication_error |
STRING |
אם replication_status מציין בעיה בשכפול של עותק של תצוגה חומרית, replication_error מספק פרטים נוספים על הבעיה. |
ddl |
STRING |
הצהרת DDL שאפשר להשתמש בה כדי ליצור מחדש את הטבלה, כמו CREATE TABLE או CREATE VIEW |
default_collation_name |
STRING |
השם של הגדרת ברירת המחדל של השוואה, אם היא קיימת. אחרת, NULL.
|
sync_status |
JSON |
הסטטוס של הסנכרון בין הרפליקות הראשיות והמשניות עבור רפליקציה בין אזורים ומערכי נתונים של תוכנית התאוששות מאסון (DR). הפונקציה מחזירה NULL אם העותק הוא עותק ראשי או אם מערך הנתונים לא משתמש בשכפול. |
upsert_stream_apply_watermark |
TIMESTAMP |
בטבלאות שמשתמשות בסימון נתונים שהשתנו (CDC), השעה שבה השינויים בשורה הוחלו לאחרונה. מידע נוסף זמין במאמר בנושא מעקב אחרי התקדמות של פעולת upsert בטבלה. |
דוגמאות
דוגמה 1:
בדוגמה הבאה מאחזרים מטא-נתונים של טבלה לכל הטבלאות במערך הנתונים שנקרא mydataset. המטא-נתונים שמוחזרים הם של כל סוגי הטבלאות ב-mydataset בפרויקט שמוגדר כברירת מחדל.
mydataset מכיל את הטבלאות הבאות:
-
mytable1: טבלה רגילה ב-BigQuery -
myview1: תצוגה ב-BigQuery
כדי להריץ את השאילתה בפרויקט שאינו פרויקט ברירת המחדל, מוסיפים את מזהה הפרויקט למערך הנתונים בפורמט הבא:
`project_id`.dataset.INFORMATION_SCHEMA.view;
לדוגמה, `myproject`.mydataset.INFORMATION_SCHEMA.TABLES.
SELECT table_catalog, table_schema, table_name, table_type, is_insertable_into, creation_time, ddl FROM mydataset.INFORMATION_SCHEMA.TABLES;
התוצאה תהיה דומה לזו שמופיעה בהמשך. כדי שהתוצאה תהיה קלה לקריאה, חלק מהעמודות לא נכללות בה.
+----------------+---------------+----------------+------------+--------------------+---------------------+---------------------------------------------+ | table_catalog | table_schema | table_name | table_type | is_insertable_into | creation_time | ddl | +----------------+---------------+----------------+------------+--------------------+---------------------+---------------------------------------------+ | myproject | mydataset | mytable1 | BASE TABLE | YES | 2018-10-29 20:34:44 | CREATE TABLE `myproject.mydataset.mytable1` | | | | | | | | ( | | | | | | | | id INT64 | | | | | | | | ); | | myproject | mydataset | myview1 | VIEW | NO | 2018-12-29 00:19:20 | CREATE VIEW `myproject.mydataset.myview1` | | | | | | | | AS SELECT 100 as id; | +----------------+---------------+----------------+------------+--------------------+---------------------+---------------------------------------------+
דוגמה 2:
בדוגמה הבאה מתבצע אחזור של מטא-נתונים של טבלה לכל הטבלאות מסוג CLONE או SNAPSHOT מהתצוגה INFORMATION_SCHEMA.TABLES. המטא-נתונים שמוחזרים הם של טבלאות ב-mydataset בפרויקט שמוגדר כברירת מחדל.
כדי להריץ את השאילתה בפרויקט שאינו פרויקט ברירת המחדל, מוסיפים את מזהה הפרויקט למערך הנתונים בפורמט הבא:
`project_id`.dataset.INFORMATION_SCHEMA.view;
לדוגמה, `myproject`.mydataset.INFORMATION_SCHEMA.TABLES.
SELECT table_name, table_type, base_table_catalog, base_table_schema, base_table_name, snapshot_time_ms FROM mydataset.INFORMATION_SCHEMA.TABLES WHERE table_type = 'CLONE' OR table_type = 'SNAPSHOT';
התוצאה תהיה דומה לזו שמופיעה בהמשך. כדי שהתוצאה תהיה קלה לקריאה, חלק מהעמודות לא נכללות בה.
+--------------+------------+--------------------+-------------------+-----------------+---------------------+ | table_name | table_type | base_table_catalog | base_table_schema | base_table_name | snapshot_time_ms | +--------------+------------+--------------------+-------------------+-----------------+---------------------+ | items_clone | CLONE | myproject | mydataset | items | 2018-10-31 22:40:05 | | orders_bk | SNAPSHOT | myproject | mydataset | orders | 2018-11-01 08:22:39 | +--------------+------------+--------------------+-------------------+-----------------+---------------------+
דוגמה 3:
בדוגמה הבאה מאחזרים את העמודות table_name ו-ddl מהתצוגה INFORMATION_SCHEMA.TABLES של הטבלה population_by_zip_2010 במערך הנתונים census_bureau_usa. מערך הנתונים הזה הוא חלק מתוכנית מערכי הנתונים הציבוריים של BigQuery.
מכיוון שהטבלה שאתם שולחים אליה שאילתה נמצאת בפרויקט אחר, אתם מוסיפים את מזהה הפרויקט למערך הנתונים בפורמט הבא:
`project_id`.dataset.INFORMATION_SCHEMA.view.
בדוגמה הזו, הערך הוא `bigquery-public-data`.census_bureau_usa.INFORMATION_SCHEMA.TABLES.
SELECT table_name, ddl FROM `bigquery-public-data`.census_bureau_usa.INFORMATION_SCHEMA.TABLES WHERE table_name = 'population_by_zip_2010';
התוצאה אמורה להיראות כך:
+------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| table_name | ddl |
+------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| population_by_zip_2010 | CREATE TABLE `bigquery-public-data.census_bureau_usa.population_by_zip_2010` |
| | ( |
| | geo_id STRING OPTIONS(description="Geo code"), |
| | zipcode STRING NOT NULL OPTIONS(description="Five digit ZIP Code Tabulation Area Census Code"), |
| | population INT64 OPTIONS(description="The total count of the population for this segment."), |
| | minimum_age INT64 OPTIONS(description="The minimum age in the age range. If null, this indicates the row as a total for male, female, or overall population."), |
| | maximum_age INT64 OPTIONS(description="The maximum age in the age range. If null, this indicates the row as having no maximum (such as 85 and over) or the row is a total of the male, female, or overall population."), |
| | gender STRING OPTIONS(description="male or female. If empty, the row is a total population summary.") |
| | ) |
| | OPTIONS( |
| | labels=[("freebqcovid", "")] |
| | ); |
+------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
צפייה TABLE_OPTIONS
כשמריצים שאילתה בתצוגה INFORMATION_SCHEMA.TABLE_OPTIONS, תוצאות השאילתה כוללות שורה אחת לכל אפשרות, לכל טבלה או תצוגה במערך נתונים. למידע מפורט על תצוגות מפורטות, אפשר להריץ שאילתה על התצוגה INFORMATION_SCHEMA.VIEWS.
לתצוגה INFORMATION_SCHEMA.TABLE_OPTIONS יש את הסכימה הבאה:
| שם עמודה | סוג נתונים | ערך |
|---|---|---|
table_catalog |
STRING |
מזהה הפרויקט שמכיל את מערך הנתונים |
table_schema |
STRING |
השם של מערך הנתונים שמכיל את הטבלה או התצוגה, שנקרא גם datasetId |
table_name |
STRING |
השם של הטבלה או התצוגה, שנקרא גם tableId |
option_name |
STRING |
אחד מערכי השם בטבלת האפשרויות |
option_type |
STRING |
אחד מערכי סוג הנתונים בטבלת האפשרויות |
option_value |
STRING |
אחת מאפשרויות הערכים בטבלת האפשרויות |
טבלת אפשרויות
|
|
|
|---|---|---|
|
|
תיאור של הטבלה |
|
|
אם הרענון האוטומטי מופעל בתצוגה חומרית |
|
|
השעה שבה יפוג התוקף של הטבלה הזו |
|
|
השם התיאורי של הטבלה |
|
|
השם של מפתח Cloud KMS שמשמש להצפנת הטבלה |
|
|
מערך של STRUCT שמייצג את התוויות בטבלה |
|
|
הערך המקסימלי של נתוני הטבלה שהוגדרה שאינם עדכניים עבור עדכוני נתונים (upserts) ב-BigQuery לתיעוד שינויים בנתונים (CDC) |
|
|
משך החיים שמוגדר כברירת מחדל, בימים, של כל המחיצות בטבלה מחולקת למחיצות |
|
|
התדירות שבה תצוגה חומרית מתרעננת |
|
|
האם שאילתות בטבלה דורשות מסנן מחיצה |
|
|
תגים שמצורפים לטבלה בתחביר <key, value> במרחב שמות. מידע נוסף זמין במאמר בנושא תגים וגישה מותנית. |
בטבלאות חיצוניות, האפשרויות הן:
| אפשרויות | |
|---|---|
allow_jagged_rows |
אם הערך הוא ההגדרה חלה על נתוני CSV. |
allow_quoted_newlines |
אם ההגדרה חלה על נתוני CSV. |
bigtable_options |
נדרש רק כשיוצרים טבלה חיצונית של Bigtable. מציין את הסכימה של הטבלה החיצונית ב-Bigtable בפורמט JSON. רשימה של אפשרויות להגדרת טבלאות ב-Bigtable מופיעה במאמר בנושא |
column_name_character_map |
מגדיר את היקף התווים הנתמכים בשם העמודה ואת אופן הטיפול בתווים לא נתמכים. ההגדרה שמוגדרת כברירת מחדל היא הערכים הנתמכים כוללים:
האפשרות הזו חלה על נתוני CSV ו-Parquet. |
compression |
סוג הדחיסה של מקור הנתונים. הערכים הנתמכים כוללים:
ההגדרה חלה על נתוני CSV ו-JSON. |
decimal_target_types |
ההגדרה קובעת איך להמיר סוג דוגמה: |
description |
תיאור של הטבלה. |
enable_list_inference |
אם ההגדרה חלה על נתונים בפורמט Parquet. |
enable_logical_types |
אם ההגדרה רלוונטית לנתוני Avro. |
encoding |
קידוד התווים של הנתונים. הערכים הנתמכים כוללים:
ההגדרה חלה על נתוני CSV. |
enum_as_string |
אם ההגדרה חלה על נתונים בפורמט Parquet. |
expiration_timestamp |
הזמן שבו תוקף הטבלה יפוג. אם לא מציינים תאריך תפוגה, הטבלה לא תפוג. דוגמה: |
field_delimiter |
התו שמפריד בין השדות בקובץ CSV. ההגדרה חלה על נתוני CSV. |
format |
הפורמט של הנתונים החיצוניים.
הערכים הנתמכים של
הערכים הנתמכים של
הערך |
hive_partition_uri_prefix |
קידומת משותפת לכל מזהי ה-URI של המקור לפני שמתחיל קידוד מפתח החלוקה. ההגדרה חלה רק על טבלאות חיצוניות עם חלוקה למחיצות ב-Hive. ההגדרה רלוונטית לנתוני Avro, CSV, JSON, Parquet ו-ORC. דוגמה: |
file_set_spec_type |
מציין איך לפרש כתובות URI של מקורות למשימות טעינה ולטבלאות חיצוניות. הערכים הנתמכים כוללים:
לדוגמה, אם יש לכם URI של מקור |
ignore_unknown_values |
אם ההגדרה חלה על נתוני CSV ו-JSON. |
json_extension |
לנתוני JSON, מציין פורמט מסוים של חילופי JSON. אם לא מציינים את הפורמט, BigQuery קורא את הנתונים כרשומות JSON כלליות. הערכים הנתמכים כוללים: |
max_bad_records |
המספר המקסימלי של רשומות פגומות להתעלמות בזמן קריאת הנתונים. רלוונטי לנתוני CSV, JSON ו-Google Sheets. |
max_staleness |
מתאים לטבלאות BigLake ולטבלאות אובייקטים. המדיניות הזו מציינת אם פעולות שמתבצעות בטבלה משתמשות במטא-נתונים ששמורים במטמון, ומה רמת העדכניות של המטא-נתונים ששמורים במטמון שנדרשת כדי שהפעולה תוכל להשתמש בהם. כדי להשבית את השמירה במטמון של המטא-נתונים, מציינים את הערך 0. (זוהי ברירת המחדל) כדי להפעיל שמירת מטא-נתונים במטמון, צריך לציין ערך של מילול של מרווח בין 30 דקות ל-7 ימים. לדוגמה, כדי להגדיר את מרווח הזמן של הנתונים הלא עדכניים ל-4 שעות, מציינים |
null_marker |
המחרוזת שמייצגת ערכים של ההגדרה חלה על נתוני CSV. |
null_markers |
רשימת המחרוזות שמייצגות ערכים של אי אפשר להשתמש באפשרות הזו עם האפשרות ההגדרה חלה על נתוני CSV. |
object_metadata |
נדרש רק כשיוצרים טבלת אובייקטים. מגדירים את הערך של האפשרות הזו כ- |
preserve_ascii_control_characters |
אם ההגדרה חלה על נתוני CSV. |
projection_fields |
רשימה של מאפייני ישות לטעינה. ההגדרה חלה על נתונים ב-Datastore. |
quote |
המחרוזת שמשמשת לציטוט של קטעי נתונים בקובץ CSV. אם הנתונים שלכם מכילים תווי שורה חדשה שמוקפים במירכאות, צריך להגדיר את המאפיין ההגדרה חלה על נתוני CSV. |
reference_file_schema_uri |
קובץ עזר שסופק על ידי המשתמש עם סכימת הטבלה. רלוונטי לנתונים בפורמט Parquet/ORC/AVRO. דוגמה: |
require_hive_partition_filter |
אם ההגדרה רלוונטית לנתוני Avro, CSV, JSON, Parquet ו-ORC. |
sheet_range |
הטווח של גיליון אלקטרוני ב-Google Sheets שממנו רוצים לשלוף נתונים. המידע רלוונטי לנתונים ב-Google Sheets. דוגמה: |
skip_leading_rows |
מספר השורות בראש הקובץ שצריך לדלג עליהן כשקוראים את הנתונים. ההגדרה הזו חלה על נתונים ב-CSV וב-Google Sheets. |
source_column_match |
ההגדרה הזו קובעת את השיטה להתאמת העמודות שנטענו לסכימה. אם לא מציינים ערך, ברירת המחדל מבוססת על האופן שבו הסכימה מסופקת. אם ההגדרה 'זיהוי אוטומטי' מופעלת, התנהגות ברירת המחדל היא התאמת עמודות לפי שם. אחרת, ברירת המחדל היא התאמה בין העמודות לפי המיקום. הפעולה הזו מתבצעת כדי לשמור על תאימות לאחור. הערכים הנתמכים כוללים:
|
tags |
<ARRAY<STRUCT<STRING, STRING>>>
מערך של תגי IAM לטבלה, שמוצגים כצמדי מפתח/ערך. המפתח צריך להיות השם של המפתח במרחב השמות, והערך צריך להיות השם המקוצר. |
time_zone |
אזור הזמן שמוגדר כברירת מחדל ויחול על ניתוח של ערכי חותמות זמן שלא הוגדר להם אזור זמן ספציפי. בודקים את השמות התקינים של אזורי הזמן. אם הערך הזה לא מופיע, המערכת מנתחת את ערכי חותמת הזמן בלי אזור זמן ספציפי באמצעות אזור הזמן שמוגדר כברירת מחדל, UTC. ההגדרה חלה על נתוני CSV ו-JSON. |
date_format |
רכיבי פורמט
שמגדירים את הפורמט של ערכי התאריך בקובצי הקלט (לדוגמה, אם הערך הזה קיים, זהו הפורמט היחיד התואם של DATE. זיהוי אוטומטי של סכימה יקבע גם את סוג העמודה DATE על סמך הפורמט הזה במקום הפורמט הקיים. אם הערך הזה לא מופיע, המערכת מנתחת את שדה התאריך באמצעות פורמטים שמוגדרים כברירת מחדל. ההגדרה חלה על נתוני CSV ו-JSON. |
datetime_format |
רכיבי פורמט
שמגדירים את הפורמט של ערכי DATETIME בקובצי הקלט
(לדוגמה, אם הערך הזה קיים, זה הפורמט היחיד של DATETIME שתואם. זיהוי אוטומטי של סכימה יקבע גם את סוג העמודה DATETIME על סמך הפורמט הזה במקום הפורמט הקיים. אם הערך הזה לא מופיע, השדה DATETIME מנותח באמצעות פורמטים שמוגדרים כברירת מחדל. ההגדרה חלה על נתוני CSV ו-JSON. |
time_format |
רכיבי פורמט
שמגדירים את הפורמט של ערכי השעה בקובצי הקלט (לדוגמה, אם הערך הזה קיים, הפורמט הזה הוא פורמט הזמן היחיד שתואם. זיהוי אוטומטי של סכימה יקבע גם את סוג העמודה TIME על סמך הפורמט הזה במקום הפורמט הקיים. אם הערך הזה לא מופיע, השדה TIME מנותח באמצעות פורמטי ברירת המחדל. ההגדרה חלה על נתוני CSV ו-JSON. |
timestamp_format |
רכיבי פורמט
שמגדירים איך ערכי חותמות הזמן מעוצבים בקובצי הקלט
(לדוגמה, אם הערך הזה קיים, הפורמט הזה הוא פורמט חותמת הזמן התואם היחיד. זיהוי אוטומטי של סכימה יקבע גם את סוג העמודה TIMESTAMP על סמך הפורמט הזה במקום הפורמט הקיים. אם הערך הזה לא מופיע, השדה TIMESTAMP מנותח באמצעות פורמטים שמוגדרים כברירת מחדל. ההגדרה חלה על נתוני CSV ו-JSON. |
uris |
בטבלאות חיצוניות, כולל טבלאות אובייקטים, שלא מבוססות על Bigtable:
מערך של כתובות URI מוגדרות במלואן למיקומי הנתונים החיצוניים.
כל URI יכול להכיל כוכבית אחת ( בדוגמאות הבאות מוצגים ערכים תקינים של
לטבלאות Bigtable:
כתובת ה-URI שמזהה את טבלת Bigtable שבה רוצים להשתמש כמקור נתונים. אפשר לציין רק URI אחד של Bigtable. דוגמה:
מידע נוסף על יצירת URI של Bigtable זמין במאמר אחזור ה-URI של Bigtable. |
דוגמאות
דוגמה 1:
בדוגמה הבאה מאחזרים את זמני התפוגה של טבלאות ברירת המחדל לכל הטבלאות ב-mydataset בפרויקט ברירת המחדל (myproject) על ידי שליחת שאילתה לתצוגה INFORMATION_SCHEMA.TABLE_OPTIONS.
כדי להריץ את השאילתה בפרויקט שאינו פרויקט ברירת המחדל, מוסיפים את מזהה הפרויקט למערך הנתונים בפורמט הבא:
`project_id`.dataset.INFORMATION_SCHEMA.view;
לדוגמה, `myproject`.mydataset.INFORMATION_SCHEMA.TABLE_OPTIONS.
SELECT * FROM mydataset.INFORMATION_SCHEMA.TABLE_OPTIONS WHERE option_name = 'expiration_timestamp';
התוצאה אמורה להיראות כך:
+----------------+---------------+------------+----------------------+-------------+--------------------------------------+ | table_catalog | table_schema | table_name | option_name | option_type | option_value | +----------------+---------------+------------+----------------------+-------------+--------------------------------------+ | myproject | mydataset | mytable1 | expiration_timestamp | TIMESTAMP | TIMESTAMP "2020-01-16T21:12:28.000Z" | | myproject | mydataset | mytable2 | expiration_timestamp | TIMESTAMP | TIMESTAMP "2021-01-01T21:12:28.000Z" | +----------------+---------------+------------+----------------------+-------------+--------------------------------------+
דוגמה 2:
בדוגמה הבאה מאוחזרים מטא-נתונים לגבי כל הטבלאות ב-mydataset שמכילות נתוני בדיקה. השאילתה משתמשת בערכים באפשרות description כדי למצוא טבלאות שמכילות את המחרוזת 'test' בכל מקום בתיאור. mydataset נמצא בפרויקט ברירת המחדל שלכם – mydataset.myproject
כדי להריץ את השאילתה בפרויקט שאינו פרויקט ברירת המחדל, מוסיפים את מזהה הפרויקט למערך הנתונים בפורמט הבא:
`project_id`.dataset.INFORMATION_SCHEMA.view;
לדוגמה:
`myproject`.mydataset.INFORMATION_SCHEMA.TABLE_OPTIONS.
SELECT * FROM mydataset.INFORMATION_SCHEMA.TABLE_OPTIONS WHERE option_name = 'description' AND option_value LIKE '%test%';
התוצאה אמורה להיראות כך:
+----------------+---------------+------------+-------------+-------------+--------------+ | table_catalog | table_schema | table_name | option_name | option_type | option_value | +----------------+---------------+------------+-------------+-------------+--------------+ | myproject | mydataset | mytable1 | description | STRING | "test data" | | myproject | mydataset | mytable2 | description | STRING | "test data" | +----------------+---------------+------------+-------------+-------------+--------------+
צפייה COLUMNS
כשמריצים שאילתה בתצוגה INFORMATION_SCHEMA.COLUMNS, תוצאות השאילתה מכילות שורה אחת לכל עמודה (שדה) בטבלה.
לתצוגה INFORMATION_SCHEMA.COLUMNS יש את הסכימה הבאה:
| שם עמודה | סוג נתונים | ערך |
|---|---|---|
table_catalog |
STRING |
מזהה הפרויקט שמכיל את מערך הנתונים. |
table_schema |
STRING |
שם מערך הנתונים שמכיל את הטבלה, שנקרא גם datasetId. |
table_name |
STRING |
השם של הטבלה או התצוגה, שנקרא גם tableId. |
column_name |
STRING |
שם העמודה. |
ordinal_position |
INT64 |
ההיסט של העמודה בטבלה, מבוסס על אינדקס שמתחיל מ-1. אם זו עמודה וירטואלית כמו _PARTITIONTIME או _PARTITIONDATE, הערך הוא NULL. |
is_nullable |
STRING |
YES או NO, בהתאם למצב של העמודה שמאפשר ערכי NULL. |
data_type |
STRING |
סוג הנתונים ב-GoogleSQL של העמודה. |
is_generated |
STRING |
הערך הוא ALWAYS אם העמודה היא עמודת הטמעה שנוצרה באופן אוטומטי, אחרת הערך הוא NEVER. |
generation_expression |
STRING |
הערך הוא ביטוי הדור שמשמש להגדרת העמודה אם העמודה היא עמודת הטמעה שנוצרה באופן אוטומטי. אחרת, הערך הוא NULL. |
is_stored |
STRING |
הערך הוא YES אם העמודה היא עמודת הטמעה שנוצרה באופן אוטומטי, אחרת הערך הוא NULL. |
async_generation_status |
STRUCT |
מכילה שגיאות שמונעות את ההפעלה של משימות ליצירת הטמעה ברקע אם העמודה היא עמודת הטמעה שנוצרה באופן אוטומטי. אחרת, הערך הוא NULL. מידע על שגיאות שחוסמות את ההעלאה מופיע בשדה async_generation_status.blocking_error.message.
דוגמאות לשגיאות חסימה:
async_generation_status תתרוקן.
|
is_hidden |
STRING |
YES או NO, בהתאם לשאלה אם העמודה היא עמודה וירטואלית כמו _PARTITIONTIME או _PARTITIONDATE. |
is_updatable |
STRING |
הערך הוא תמיד NULL. |
is_system_defined |
STRING |
YES או NO, בהתאם לשאלה אם העמודה היא עמודה וירטואלית כמו _PARTITIONTIME או _PARTITIONDATE. |
is_partitioning_column |
STRING |
YES או NO, בהתאם לשאלה אם העמודה היא עמודת חלוקה. |
clustering_ordinal_position |
INT64 |
ההיסט של העמודה בטבלה, מבוסס-1, בתוך עמודות האשכולות של הטבלה. הערך הוא NULL אם הטבלה היא לא טבלת אשכולות. |
collation_name |
STRING |
השם של הגדרת ה-collation
אם היא קיימת, אחרת NULL.אם מועבר STRING או ARRAY<STRING>, מוחזרת הגדרת ה-collation אם היא קיימת. אחרת, מוחזר NULL.
|
column_default |
STRING |
ערך ברירת המחדל של העמודה אם היא קיימת, אחרת הערך הוא NULL.
|
rounding_mode |
STRING |
אופן העיגול שמשמש לעיגול ערכים שנכתבים בשדה אם הסוג שלו הוא NUMERIC או BIGNUMERIC עם פרמטרים. אחרת, הערך הוא NULL.
|
data_policies.name |
STRING |
רשימת מדיניות הנתונים שמצורפת לעמודה כדי לשלוט בגישה ולהחיל מיסוך. השדה הזה נמצא בגרסת טרום-השקה (Preview). |
policy_tags |
ARRAY<STRING> |
רשימת תגי המדיניות שמצורפים לעמודה. |
דוגמאות
בדוגמה הבאה מאחזרים מטא-נתונים מהתצוגה INFORMATION_SCHEMA.COLUMNS של הטבלה population_by_zip_2010 במערך הנתונים census_bureau_usa. מערך הנתונים הזה הוא חלק מתוכנית מערכי הנתונים הציבוריים של BigQuery.
מכיוון שהטבלה שאתם שולחים לה שאילתה נמצאת בפרויקט אחר, פרויקט bigquery-public-data, אתם מוסיפים את מזהה הפרויקט למערך הנתונים בפורמט הבא:
`project_id`.dataset.INFORMATION_SCHEMA.view;
לדוגמה,
`bigquery-public-data`.census_bureau_usa.INFORMATION_SCHEMA.TABLES.
העמודה הבאה לא נכללת בתוצאות השאילתה:
IS_UPDATABLE
SELECT * EXCEPT(is_updatable) FROM `bigquery-public-data`.census_bureau_usa.INFORMATION_SCHEMA.COLUMNS WHERE table_name = 'population_by_zip_2010';
התוצאה תהיה דומה לזו שמופיעה בהמשך. כדי שהתוצאה תהיה קלה לקריאה, חלק מהעמודות לא נכללות בה.
+------------------------+-------------+------------------+-------------+-----------+-----------+-------------------+------------------------+-----------------------------+-------------+ | table_name | column_name | ordinal_position | is_nullable | data_type | is_hidden | is_system_defined | is_partitioning_column | clustering_ordinal_position | policy_tags | +------------------------+-------------+------------------+-------------+-----------+-----------+-------------------+------------------------+-----------------------------+-------------+ | population_by_zip_2010 | zipcode | 1 | NO | STRING | NO | NO | NO | NULL | 0 rows | | population_by_zip_2010 | geo_id | 2 | YES | STRING | NO | NO | NO | NULL | 0 rows | | population_by_zip_2010 | minimum_age | 3 | YES | INT64 | NO | NO | NO | NULL | 0 rows | | population_by_zip_2010 | maximum_age | 4 | YES | INT64 | NO | NO | NO | NULL | 0 rows | | population_by_zip_2010 | gender | 5 | YES | STRING | NO | NO | NO | NULL | 0 rows | | population_by_zip_2010 | population | 6 | YES | INT64 | NO | NO | NO | NULL | 0 rows | +------------------------+-------------+------------------+-------------+-----------+-----------+-------------------+------------------------+-----------------------------+-------------+
צפייה COLUMN_FIELD_PATHS
כשמבצעים שאילתה בתצוגה INFORMATION_SCHEMA.COLUMN_FIELD_PATHS, תוצאות השאילתה מכילות שורה אחת לכל עמודה מוטמעת בעמודה RECORD (או STRUCT).
לתצוגה INFORMATION_SCHEMA.COLUMN_FIELD_PATHS יש את הסכימה הבאה:
| שם עמודה | סוג נתונים | ערך |
|---|---|---|
table_catalog |
STRING |
מזהה הפרויקט שמכיל את מערך הנתונים. |
table_schema |
STRING |
שם מערך הנתונים שמכיל את הטבלה, שנקרא גם datasetId. |
table_name |
STRING |
השם של הטבלה או התצוגה, שנקרא גם tableId. |
column_name |
STRING |
השם של העמודה ברמה העליונה. |
field_path |
STRING |
השם של העמודה ברמה העליונה או הנתיב לעמודה nested בתוך עמודה RECORD או STRUCT. |
data_type |
STRING |
סוג הנתונים של העמודה ב-GoogleSQL. |
description |
STRING |
התיאור של העמודה. |
collation_name |
STRING |
השם של הגדרת ה-collation
אם היא קיימת, אחרת NULL.אם מועבר שדה STRING, ARRAY<STRING> או STRING ב-STRUCT, מוחזר מפרט האיסוף אם הוא קיים. אחרת, מוחזר NULL.
|
rounding_mode |
STRING |
אופן העיגול שבו משתמשים כשמחילים דיוק וקנה מידה על ערכים של פרמטרים NUMERIC או BIGNUMERIC. אחרת, הערך הוא NULL.
|
data_policies.name |
STRING |
רשימת מדיניות הנתונים שמצורפת לעמודה כדי לשלוט בגישה ולהחיל מיסוך. השדה הזה נמצא בגרסת טרום-השקה (Preview). |
policy_tags |
ARRAY<STRING> |
רשימת תגי המדיניות שמצורפים לעמודה. |
דוגמאות
בדוגמה הבאה מאחזרים מטא-נתונים מהתצוגה INFORMATION_SCHEMA.COLUMN_FIELD_PATHS של הטבלה commits במערך הנתונים github_repos.
מערך הנתונים הזה הוא חלק מתוכנית מערכי הנתונים הציבוריים של BigQuery.
מכיוון שהטבלה שאתם שולחים לה שאילתה נמצאת בפרויקט אחר, פרויקט bigquery-public-data, אתם מוסיפים את מזהה הפרויקט למערך הנתונים בפורמט הבא:
`project_id`.dataset.INFORMATION_SCHEMA.view;
לדוגמה,
`bigquery-public-data`.github_repos.INFORMATION_SCHEMA.COLUMN_FIELD_PATHS.
הטבלה commits מכילה את העמודות המקוננות והחוזרות הבאות:
-
author: עמודהRECORDמוצבת בתוך עמודה אחרת -
committer: עמודהRECORDמוצבת בתוך עמודה אחרת -
trailer: עמודהRECORDעם נתונים בתוך נתונים ונתונים חוזרים -
difference: עמודהRECORDעם נתונים בתוך נתונים ונתונים חוזרים
כדי לראות את המטא-נתונים של העמודות author ו-difference, מריצים את השאילתה הבאה.
SELECT * FROM `bigquery-public-data`.github_repos.INFORMATION_SCHEMA.COLUMN_FIELD_PATHS WHERE table_name = 'commits' AND (column_name = 'author' OR column_name = 'difference');
התוצאה תהיה דומה לזו שמופיעה בהמשך. כדי שהתוצאה תהיה קלה לקריאה, חלק מהעמודות לא נכללות בה.
+------------+-------------+---------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------+-------------+-------------+ | table_name | column_name | field_path | data_type | description | policy_tags | +------------+-------------+---------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------+-------------+-------------+ | commits | author | author | STRUCT<name STRING, email STRING, time_sec INT64, tz_offset INT64, date TIMESTAMP> | NULL | 0 rows | | commits | author | author.name | STRING | NULL | 0 rows | | commits | author | author.email | STRING | NULL | 0 rows | | commits | author | author.time_sec | INT64 | NULL | 0 rows | | commits | author | author.tz_offset | INT64 | NULL | 0 rows | | commits | author | author.date | TIMESTAMP | NULL | 0 rows | | commits | difference | difference | ARRAY<STRUCT<old_mode INT64, new_mode INT64, old_path STRING, new_path STRING, old_sha1 STRING, new_sha1 STRING, old_repo STRING, new_repo STRING>> | NULL | 0 rows | | commits | difference | difference.old_mode | INT64 | NULL | 0 rows | | commits | difference | difference.new_mode | INT64 | NULL | 0 rows | | commits | difference | difference.old_path | STRING | NULL | 0 rows | | commits | difference | difference.new_path | STRING | NULL | 0 rows | | commits | difference | difference.old_sha1 | STRING | NULL | 0 rows | | commits | difference | difference.new_sha1 | STRING | NULL | 0 rows | | commits | difference | difference.old_repo | STRING | NULL | 0 rows | | commits | difference | difference.new_repo | STRING | NULL | 0 rows | +------------+-------------+---------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------+-------------+-------------+
צפייה TABLE_STORAGE
לתצוגות TABLE_STORAGE ו-TABLE_STORAGE_BY_ORGANIZATION יש את הסכימה הבאה:
| שם עמודה | סוג נתונים | ערך |
|---|---|---|
project_id |
STRING |
מזהה הפרויקט שמכיל את מערך הנתונים. |
project_number |
INT64 |
מספר הפרויקט שמכיל את מערך הנתונים. |
table_catalog |
STRING |
מזהה הפרויקט שמכיל את מערך הנתונים. |
table_schema |
STRING |
השם של מערך הנתונים שמכיל את הטבלה או את התצוגה החומרית, שנקרא גם datasetId. |
table_name |
STRING |
השם של הטבלה או התצוגה החומרית, שנקראת גם tableId. |
creation_time |
TIMESTAMP |
זמן היצירה של הטבלה. |
total_rows |
INT64 |
המספר הכולל של השורות בטבלה או בתצוגה החומרית. |
total_partitions |
INT64 |
מספר המחיצות שקיימות בטבלה או בתצוגה החומרית. בטבלאות לא מחולקות מוחזר הערך 0. |
total_logical_bytes |
INT64 |
המספר הכולל של בייטים לוגיים (לא דחוסים) בטבלה או בתצוגה החומרית. |
active_logical_bytes |
INT64 |
מספר הבייטים הלוגיים (לא דחוסים) שנוצרו לפני פחות מ-90 ימים. |
long_term_logical_bytes |
INT64 |
מספר הבייטים הלוגיים (לא דחוסים) שנוצרו לפני יותר מ-90 ימים. |
current_physical_bytes |
INT64 |
המספר הכולל של בייטים פיזיים לאחסון הנוכחי של הטבלה בכל המחיצות. |
total_physical_bytes |
INT64 |
המספר הכולל של בייטים פיזיים (דחוסים) שמשמשים לאחסון, כולל בייטים של נתונים פעילים, נתונים לטווח ארוך ונתונים שחזרו אחורה בזמן (נתונים שנמחקו או שונו). לא נכללים בחישוב בייטים של נתונים שמוחקים או משנים אותם אחרי חלון הזמן של השחזור. |
active_physical_bytes |
INT64 |
מספר הבייטים הפיזיים (דחוסים) שגילם פחות מ-90 ימים, כולל בייטים של נתונים ששוחזרו (נתונים שנמחקו או שונו). |
long_term_physical_bytes |
INT64 |
מספר הבייטים הפיזיים (דחוסים) שהועלו לפני יותר מ-90 ימים. |
time_travel_physical_bytes |
INT64 |
מספר הבייטים הפיזיים (דחוסים) שנעשה בהם שימוש באחסון של נסיעה בזמן (נתונים שנמחקו או שונו). |
storage_last_modified_time |
TIMESTAMP |
השעה האחרונה שבה נכתבו נתונים בטבלה. הפונקציה מחזירה
NULL אם לא קיימים נתונים. |
deleted |
BOOLEAN |
מציין אם הטבלה נמחקה או לא. |
table_type |
STRING |
סוג הטבלה. לדוגמה, BASE TABLE.
|
managed_table_type |
STRING |
העמודה הזו נמצאת בגרסת טרום-השקה (Preview). הסוג המנוהל של הטבלה. לדוגמה:
NATIVE או BIGLAKE.
|
fail_safe_physical_bytes |
INT64 |
מספר הבייטים הפיזיים (דחוסים) שנעשה בהם שימוש באחסון בטוח מפני כשלים (נתונים שנמחקו או שונו). |
last_metadata_index_refresh_time |
TIMESTAMP |
השעה שבה בוצע רענון אחרון של אינדקס המטא-נתונים של הטבלה. |
table_deletion_reason |
STRING |
הסיבה למחיקת הטבלה אם הערך בשדה deleted הוא true. הערכים האפשריים הם:
|
table_deletion_time |
TIMESTAMP |
זמן המחיקה של הטבלה. |
דוגמאות
דוגמה 1:
בדוגמה הבאה מוצג מספר הבייטים הלוגיים הכולל שחויבו עבור הפרויקט הנוכחי.
SELECT SUM(total_logical_bytes) AS total_logical_bytes FROM `region-REGION`.INFORMATION_SCHEMA.TABLE_STORAGE;
התוצאה אמורה להיראות כך:
+---------------------+ | total_logical_bytes | +---------------------+ | 971329178274633 | +---------------------+
דוגמה 2:
בדוגמה הבאה מוצגים בייטים שונים של אחסון ב-GiB ברמת מערכי הנתונים בפרויקט הנוכחי.
SELECT table_schema AS dataset_name, -- Logical SUM(total_logical_bytes) / power(1024, 3) AS total_logical_gib, SUM(active_logical_bytes) / power(1024, 3) AS active_logical_gib, SUM(long_term_logical_bytes) / power(1024, 3) AS long_term_logical_gib, -- Physical SUM(total_physical_bytes) / power(1024, 3) AS total_physical_gib, SUM(active_physical_bytes) / power(1024, 3) AS active_physical_gib, SUM(active_physical_bytes - time_travel_physical_bytes) / power(1024, 3) AS active_no_tt_physical_gib, SUM(long_term_physical_bytes) / power(1024, 3) AS long_term_physical_gib, SUM(time_travel_physical_bytes) / power(1024, 3) AS time_travel_physical_gib, SUM(fail_safe_physical_bytes) / power(1024, 3) AS fail_safe_physical_gib FROM `region-REGION`.INFORMATION_SCHEMA.TABLE_STORAGE WHERE table_type ='BASE TABLE' GROUP BY table_schema ORDER BY dataset_name
דוגמה 3:
בדוגמה הבאה מוצג איך לחזות את ההפרש במחיר לכל מערך נתונים בין מודלים לוגיים ופיזיים לחיוב ב-30 הימים הבאים. בדוגמה הזו מניחים שנפח האחסון הנדרש העתידי יהיה קבוע במהלך 30 הימים הבאים מרגע הפעלת השאילתה. הערה: התחזית מוגבלת לטבלאות בסיס, והיא לא כוללת סוגים אחרים של טבלאות במערך נתונים.
המחירים שמשמשים במשתני התמחור בשאילתה הזו הם עבור אזור us-central1. אם רוצים להריץ את השאילתה הזו באזור אחר,
צריך לעדכן את משתני התמחור בהתאם. מידע על מחירים מופיע במאמר בנושא תמחור של אחסון.
פותחים את הדף BigQuery במסוף Google Cloud .
מזינים את שאילתת GoogleSQL הבאה בתיבה עורך השאילתות.
INFORMATION_SCHEMAמחייב תחביר GoogleSQL. GoogleSQL היא התחביר שמוגדר כברירת מחדל במסוף Google Cloud .DECLARE active_logical_gib_price FLOAT64 DEFAULT 0.02; DECLARE long_term_logical_gib_price FLOAT64 DEFAULT 0.01; DECLARE active_physical_gib_price FLOAT64 DEFAULT 0.04; DECLARE long_term_physical_gib_price FLOAT64 DEFAULT 0.02; WITH storage_sizes AS ( SELECT table_schema AS dataset_name, -- Logical SUM(IF(deleted=false, active_logical_bytes, 0)) / power(1024, 3) AS active_logical_gib, SUM(IF(deleted=false, long_term_logical_bytes, 0)) / power(1024, 3) AS long_term_logical_gib, -- Physical SUM(active_physical_bytes) / power(1024, 3) AS active_physical_gib, SUM(active_physical_bytes - time_travel_physical_bytes) / power(1024, 3) AS active_no_tt_physical_gib, SUM(long_term_physical_bytes) / power(1024, 3) AS long_term_physical_gib, -- Restorable previously deleted physical SUM(time_travel_physical_bytes) / power(1024, 3) AS time_travel_physical_gib, SUM(fail_safe_physical_bytes) / power(1024, 3) AS fail_safe_physical_gib, FROM `region-REGION`.INFORMATION_SCHEMA.TABLE_STORAGE_BY_PROJECT WHERE total_physical_bytes + fail_safe_physical_bytes > 0 -- Base the forecast on base tables only for highest precision results AND table_type = 'BASE TABLE' GROUP BY 1 ) SELECT dataset_name, -- Logical ROUND(active_logical_gib, 2) AS active_logical_gib, ROUND(long_term_logical_gib, 2) AS long_term_logical_gib, -- Physical ROUND(active_physical_gib, 2) AS active_physical_gib, ROUND(long_term_physical_gib, 2) AS long_term_physical_gib, ROUND(time_travel_physical_gib, 2) AS time_travel_physical_gib, ROUND(fail_safe_physical_gib, 2) AS fail_safe_physical_gib, -- Compression ratio ROUND(SAFE_DIVIDE(active_logical_gib, active_no_tt_physical_gib), 2) AS active_compression_ratio, ROUND(SAFE_DIVIDE(long_term_logical_gib, long_term_physical_gib), 2) AS long_term_compression_ratio, -- Forecast costs logical ROUND(active_logical_gib * active_logical_gib_price, 2) AS forecast_active_logical_cost, ROUND(long_term_logical_gib * long_term_logical_gib_price, 2) AS forecast_long_term_logical_cost, -- Forecast costs physical ROUND((active_no_tt_physical_gib + time_travel_physical_gib + fail_safe_physical_gib) * active_physical_gib_price, 2) AS forecast_active_physical_cost, ROUND(long_term_physical_gib * long_term_physical_gib_price, 2) AS forecast_long_term_physical_cost, -- Forecast costs total ROUND(((active_logical_gib * active_logical_gib_price) + (long_term_logical_gib * long_term_logical_gib_price)) - (((active_no_tt_physical_gib + time_travel_physical_gib + fail_safe_physical_gib) * active_physical_gib_price) + (long_term_physical_gib * long_term_physical_gib_price)), 2) AS forecast_total_cost_difference FROM storage_sizes ORDER BY (forecast_active_logical_cost + forecast_active_physical_cost) DESC;
INFORMATION_SCHEMAלוחצים על Run.
התוצאה אמורה להיראות כך:
+--------------+--------------------+-----------------------+---------------------+------------------------+--------------------------+-----------------------------+------------------------------+----------------------------------+-------------------------------+----------------------------------+--------------------------------+ | dataset_name | active_logical_gib | long_term_logical_gib | active_physical_gib | long_term_physical_gib | active_compression_ratio | long_term_compression_ratio | forecast_active_logical_cost | forecaset_long_term_logical_cost | forecast_active_physical_cost | forecast_long_term_physical_cost | forecast_total_cost_difference | +--------------+--------------------+-----------------------+---------------------+------------------------+--------------------------+-----------------------------+------------------------------+----------------------------------+-------------------------------+----------------------------------+--------------------------------+ | dataset1 | 10.0 | 10.0 | 1.0 | 1.0 | 10.0 | 10.0 | 0.2 | 0.1 | 0.04 | 0.02 | 0.24 |
פתרון בעיות
כדי להפעיל את התצוגה הזו, אפשר להגדיר את הערך של enable_info_schema_storage ל-TRUE בפרויקט או בארגון. מידע נוסף על ניהול ההגדרות זמין במאמר ניהול הגדרות.
אם לא הגדרתם את ההגדרה הזו, תופיע השגיאה הבאה:
INFORMATION_SCHEMA.TABLE_STORAGE hasn't been enabled for project <myproject>. Consider using one of the following SQL statements to enable data collection: ALTER PROJECT `<myproject>` SET OPTIONS (`region-<region>.enable_info_schema_storage` = TRUE) Or to enable for the entire organization: ALTER ORGANIZATION SET OPTIONS (`region-<region>.enable_info_schema_storage` = TRUE) After enabling, please allow around 1 day for the complete historical data to become available.
מריצים את הצהרות ה-SQL שמתוארות בהודעת השגיאה כדי להפעיל את התצוגה.
הצגת רשימה של טבלאות במערך נתונים
אפשר לראות את רשימת הטבלאות במערכי נתונים בדרכים הבאות:
- באמצעות מסוף Google Cloud .
- שימוש בכלי שורת הפקודה של BigQuery
bq lscommand. - קריאה לשיטה
tables.listשל API. - שימוש בספריות הלקוח.
ההרשאות הנדרשות
כדי להציג רשימה של טבלאות במערך נתונים, אתם צריכים לקבל לפחות הרשאות bigquery.tables.list. תפקידי ה-IAM המוגדרים מראש הבאים כוללים את ההרשאות bigquery.tables.list:
bigquery.userbigquery.metadataViewerbigquery.dataViewerbigquery.dataEditorbigquery.dataOwnerbigquery.admin
במאמר בקרת גישה מוסבר בהרחבה איך מנהלים את התפקידים וההרשאות ב-IAM ב-BigQuery.
הצגת רשימת הטבלאות
כדי להציג רשימה של הטבלאות במערך נתונים:
המסוף
במסוף Google Cloud , בחלונית הניווט, לוחצים על מערך הנתונים כדי להרחיב אותו. יוצגו הטבלאות והתצוגות במערך הנתונים.
גוללים ברשימה כדי לראות את הטבלאות במערך הנתונים. טבלאות ותצוגות מזוהות באמצעות סמלים שונים.
BQ
-
במסוף Google Cloud , מפעילים את Cloud Shell.
בחלק התחתון של Google Cloud המסוף יתחיל סשן של Cloud Shell ותופיע הודעה של שורת הפקודה. Cloud Shell היא סביבת מעטפת שבה ה-CLI של Google Cloud מותקן ומוגדרים ערכים לפרויקט הקיים. הסשן יופעל תוך כמה שניות.
מריצים את הפקודה
bq ls. אפשר להשתמש בדגל--formatכדי לשלוט בפלט. אם אתם מציגים רשימה של טבלאות בפרויקט שאינו פרויקט ברירת המחדל שלכם, צריך להוסיף את מזהה הפרויקט למערך הנתונים בפורמט הבא:project_id:dataset.דגלים נוספים:
-
--max_resultsאו-n: מספר שלם שמציין את המספר המקסימלי של תוצאות. ערך ברירת המחדל הוא50.
bq ls \ --format=pretty \ --max_results integer \ project_id:dataset
כאשר:
- integer הוא מספר שלם שמייצג את מספר הטבלאות שיוצגו.
- project_id הוא מזהה הפרויקט.
- dataset הוא שם מערך הנתונים.
כשמריצים את הפקודה, בשדה
Typeמוצג הערךTABLEאוVIEW. לדוגמה:+-------------------------+-------+----------------------+-------------------+ | tableId | Type | Labels | Time Partitioning | +-------------------------+-------+----------------------+-------------------+ | mytable | TABLE | department:shipping | | | myview | VIEW | | | +-------------------------+-------+----------------------+-------------------+
דוגמאות:
מזינים את הפקודה הבאה כדי להציג את רשימת הטבלאות במערך הנתונים
mydatasetבפרויקט שמוגדר כברירת מחדל.bq ls --format=pretty mydataset
מזינים את הפקודה הבאה כדי לקבל יותר מ-50 טבלאות (ברירת המחדל) מהפלט של
mydataset. mydatasetנמצא בפרויקט ברירת המחדל שלכם.bq ls --format=pretty --max_results 60 mydataset
מזינים את הפקודה הבאה כדי להציג את הטבלאות במערך הנתונים
mydatasetב-myotherproject.bq ls --format=pretty myotherproject:mydataset
-
API
כדי להציג רשימה של טבלאות באמצעות ה-API, קוראים ל-method tables.list.
C#
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי C#הוראות ההגדרה שבמדריך למתחילים של BigQuery באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של BigQuery C# API.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
המשך
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי 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. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
PHP
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי PHPהוראות ההגדרה שבמדריך למתחילים של BigQuery באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של BigQuery PHP API.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
Python
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Pythonהוראות ההגדרה שבמדריך למתחילים של BigQuery באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של BigQuery Python API.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
Ruby
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Rubyהוראות ההגדרה שבמדריך למתחילים של BigQuery באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של BigQuery Ruby API.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
היסטוריה של טבלת הביקורת
כדי לבדוק את ההיסטוריה של טבלאות BigQuery, אפשר להריץ שאילתות ביומני הביקורת של Cloud ב-Logs Explorer. היומנים האלה עוזרים לעקוב אחרי מועדי היצירה, העדכון או המחיקה של טבלאות, ולזהות את המשתמש או חשבון השירות שביצעו את השינויים.
ההרשאות הנדרשות
כדי לעיין ביומני הביקורת, צריך את התפקיד roles/logging.privateLogViewer. מידע נוסף על תפקידים והרשאות ב-IAM ב-Cloud Logging זמין במאמר בקרת גישה באמצעות IAM.
קבלת נתוני ביקורת
אפשר לגשת למידע על ביקורת דרך מסוף Google Cloud , שורת הפקודה gcloud, API בארכיטקטורת REST וכל השפות הנתמכות באמצעות ספריות לקוח. אפשר להשתמש במסנן הרישום ביומן שמוצג בדוגמה הבאה, בלי קשר לשיטה שבה משתמשים.
נכנסים לדף Logging במסוף Google Cloud .
כדי לגשת לנתוני הביקורת, משתמשים בשאילתה הבאה:
logName = "projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity" AND resource.type = "bigquery_dataset" AND timestamp >= "STARTING_TIMESTAMP" AND protoPayload.@type = "type.googleapis.com/google.cloud.audit.AuditLog" AND ( protoPayload.metadata.tableCreation :* OR protoPayload.metadata.tableChange :* OR protoPayload.metadata.tableDeletion :* ) AND protoPayload.resourceName : "projects/PROJECT_ID/datasets/DATASET_ID/tables/"
מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: הפרויקט שמכיל את מערכי הנתונים והטבלאות שמעניינים אתכם. -
STARTING_TIMESTAMP: היומנים הכי ישנים שרוצים לראות. צריך להשתמש בפורמט ISO 8601, כמו2025-01-01או2025-02-03T04:05:06Z. -
DATASET_ID: מערך הנתונים שרוצים לסנן לפי.
פירוש התוצאות
בחלונית התוצאות של Logs Explorer, מרחיבים את הרשומה שמעניינת אתכם ואז לוחצים על הרחבת שדות מקוננים כדי להציג את ההודעה כולה.
רשומת הרישום מכילה רק אחד מהאובייקטים הבאים כדי לציין את הפעולה שבוצעה:
-
protoPayload.metadata.tableCreation: נוצרה טבלה. -
protoPayload.metadata.tableChange: מטא-נתונים של הטבלה השתנו, למשל עדכון סכימה, שינוי תיאור או החלפת הטבלה. -
protoPayload.metadata.tableDeletion: טבלה נמחקה.
התוכן של האובייקטים האלה מתאר את הפעולה המבוקשת.
תיאור מפורט זמין במאמר BigQueryAuditMetadata.
הסבר על השאילתה
-
logName = "projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity": השורה הזו מסננת את יומני הביקורת של פעילות האדמין בפרויקט Google Cloud. ביומנים האלה מתועדות קריאות ל-API ופעולות שמשנות את ההגדרות או את המטא-נתונים של המשאבים. -
resource.type = "bigquery_dataset": מצמצם את החיפוש לאירועים שקשורים למערכי נתונים ב-BigQuery, שבהם מתבצע רישום ביומן של פעולות בטבלה. -
timestamp >= "STARTING_TIMESTAMP": מסנן את רשומות היומן כך שיוצגו רק אלה שנוצרו בחותמת הזמן שצוינה או אחריה. protoPayload.@type = "type.googleapis.com/google.cloud.audit.AuditLog": מוודא שהודעת היומן תואמת למבנה הסטנדרטי של יומני הביקורת של Cloud.-
( ... ): הבלוק הזה מקבץ תנאים כדי למצוא סוגים שונים של אירועים בטבלה, כמו שמתואר בקטע הקודם. האופרטור:*מציין שהמפתח חייב להיות קיים. אם אתם מעוניינים רק באירוע אחד, כמו יצירת טבלה, אתם יכולים להסיר מהבלוק הזה את התנאים המיותרים.
protoPayload.resourceName : "projects/PROJECT_ID/datasets/DATASET_ID/tables/": בחירת רשומות ביומן שתואמות לטבלאות שנכללות במערך הנתונים שצוין. האופרטור נקודתיים (:) מבצע חיפוש של מחרוזת משנה.- כדי לסנן רשומות בטבלה אחת, מחליפים את התנאי בתנאי הבא:
protoPayload.resourceName = "projects/PROJECT_ID/datasets/DATASET_ID/tables/TABLE_NAME". - כדי לכלול את כל הטבלאות בכל מערכי הנתונים בפרויקט הספציפי, מסירים את התנאי הזה.
- כדי לסנן רשומות בטבלה אחת, מחליפים את התנאי בתנאי הבא:
מידע נוסף על סינון יומנים זמין במאמר בנושא שפת שאילתות לרישום ביומן.
אבטחת טבלאות
כדי לשלוט בגישה לטבלאות ב-BigQuery, אפשר לעיין במאמר בנושא שליטה בגישה למשאבים באמצעות IAM.
המאמרים הבאים
- מידע נוסף על מערכי נתונים זמין במאמר מבוא למערכי נתונים.
- מידע נוסף על טיפול בנתונים בטבלה זמין במאמר ניהול נתונים בטבלה.
- מידע נוסף על הגדרת סכימות של טבלאות זמין במאמר בנושא הגדרת סכימה.
- מידע נוסף על שינוי סכימות של טבלאות זמין במאמר בנושא שינוי סכימות של טבלאות.
- מידע נוסף על ניהול טבלאות זמין במאמר ניהול טבלאות.
- סקירה כללית על
INFORMATION_SCHEMAזמינה במאמר מבוא ל-BigQueryINFORMATION_SCHEMA.
נסו בעצמכם
אנחנו ממליצים למשתמשים חדשים ב-Google Cloud ליצור חשבון כדי שיוכלו להעריך את הביצועים של BigQuery בתרחישים מהעולם האמיתי. לקוחות חדשים מקבלים בחינם גם קרדיט בשווי 300 $להרצה, לבדיקה ולפריסה של עומסי העבודה.
מתנסים ב-BigQuery בחינם