תצוגת TABLES
התצוגה INFORMATION_SCHEMA.TABLES מכילה שורה אחת לכל טבלה או תצוגה בקבוצת נתונים. התצוגות TABLES ו-TABLE_OPTIONS מכילות גם מידע כללי על הצפיות.
מידע מפורט זמין בתצוגה INFORMATION_SCHEMA.VIEWS.
ההרשאות הנדרשות
כדי לשלוח שאילתה לתצוגה INFORMATION_SCHEMA.TABLES, צריך את ההרשאות הבאות בממשק לניהול זהויות והרשאות גישה (IAM):
bigquery.tables.getbigquery.tables.listbigquery.routines.getbigquery.routines.list
כל אחד מהתפקידים הבאים שמוגדרים מראש ב-IAM כולל את ההרשאות שצוינו למעלה:
roles/bigquery.adminroles/bigquery.dataViewerroles/bigquery.metadataViewer
מידע נוסף על הרשאות ב-BigQuery זמין במאמר בקרת גישה באמצעות IAM.
סכימה
כששולחים שאילתה לתצוגה INFORMATION_SCHEMA.TABLES, תוצאות השאילתה מכילות שורה אחת לכל טבלה או תצוגה במערך נתונים. לקבלת מידע מפורט על תצוגות, אפשר להריץ שאילתה על INFORMATION_SCHEMA.VIEWSview.
לתצוגה 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 בטבלה. |
כדי לשמור על יציבות, מומלץ לציין במפורש את העמודות בשאילתות של סכימת המידע, במקום להשתמש בתו כל כללי (SELECT *). ציון מפורש של העמודות מונע את השבירה של השאילתות אם הסכימה הבסיסית משתנה.
היקף ותחביר
שאילתות שמופעלות על התצוגה הזו חייבות לכלול מערך נתונים או מסווג אזור. לשאילתות עם מזהה מערך נתונים, צריכות להיות לכם הרשאות למערך הנתונים. כדי להריץ שאילתות עם מסנן אזור, צריך הרשאות בפרויקט. מידע נוסף מופיע במאמר בנושא תחביר. בטבלה הבאה מוסברות רמות הפירוט של האזור והמשאבים בתצוגה הזו:
| שם התצוגה | היקף המשאבים | היקף האזור |
|---|---|---|
[PROJECT_ID.]`region-REGION`.INFORMATION_SCHEMA.TABLES |
ברמת הפרויקט | REGION |
[PROJECT_ID.]DATASET_ID.INFORMATION_SCHEMA.TABLES |
רמת מערך הנתונים | מיקום מערך הנתונים |
-
אופציונלי:
PROJECT_ID: מזהה הפרויקט ב- Google Cloud . אם לא מציינים פרויקט, המערכת משתמשת בפרויקט שמוגדר כברירת מחדל. -
REGION: כל שם של אזור במערך נתונים. לדוגמה,`region-us`. -
DATASET_ID: המזהה של מערך הנתונים. מידע נוסף מופיע במאמר בנושא מאפיין מסנן של מערך נתונים.
דוגמה
-- Returns metadata for tables in a single dataset.
SELECT * FROM myDataset.INFORMATION_SCHEMA.TABLES;
דוגמאות
דוגמה 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", "")] |
| | ); |
+------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+