התצוגה TABLES

התצוגה INFORMATION_SCHEMA.TABLES מכילה שורה אחת לכל טבלה או תצוגה בקבוצת נתונים. התצוגות TABLES ו-TABLE_OPTIONS מכילות גם מידע כללי על הצפיות. מידע מפורט זמין בתצוגה המפורטת INFORMATION_SCHEMA.VIEWS.

ההרשאות הנדרשות

כדי לשלוח שאילתה לתצוגה INFORMATION_SCHEMA.TABLES, צריך את ההרשאות הבאות בממשק לניהול זהויות והרשאות גישה (IAM):

  • bigquery.tables.get
  • bigquery.tables.list
  • bigquery.routines.get
  • bigquery.routines.list

כל אחד מהתפקידים הבאים שמוגדרים מראש ב-IAM כולל את ההרשאות שצוינו למעלה:

  • roles/bigquery.admin
  • roles/bigquery.dataViewer
  • roles/bigquery.metadataViewer

מידע נוסף על הרשאות ב-BigQuery זמין במאמר בקרת גישה באמצעות IAM.

סכימה

כששולחים שאילתה לתצוגה 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_STATUS_UNSPECIFIED
  • ACTIVE: השכפול פעיל ללא שגיאות
  • SOURCE_DELETED: התצוגה המהותית של המקור נמחקה
  • PERMISSION_DENIED: לא בוצעה הרשאה לתצוגה הממומשת של המקור במערך הנתונים שמכיל את טבלאות Amazon S3 BigLake של המקור שנעשה בהן שימוש בשאילתה שיצרה את התצוגה הממומשת.
  • UNSUPPORTED_CONFIGURATION: יש בעיה בדרישות המוקדמות של העותק, מלבד ההרשאה של התצוגה החומרית של המקור.
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: מזהה הפרויקט ב- Cloud de Confiance . אם לא מציינים פרויקט, המערכת משתמשת בפרויקט שמוגדר כברירת מחדל.
  • 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", "")]                                                                                                                                                                                             |
|                        | );                                                                                                                                                                                                                         |
+------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+