תצוגת 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.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_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: מזהה הפרויקט ב- 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", "")]                                                                                                                                                                                             |
|                        | );                                                                                                                                                                                                                         |
+------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+