使用 INFORMATION_SCHEMA 获取视图元数据

INFORMATION_SCHEMA.VIEWS 包含有关视图的元数据。

所需权限

对于 VIEWS,您必须获得 bigquery.tables.getbigquery.tables.list 权限。

语法

针对此视图的查询必须具有数据集或地区限定符

-- Returns metadata for views in a single dataset.
SELECT * FROM myDataset.INFORMATION_SCHEMA.VIEWS;

-- Returns metadata for all views in a region.
SELECT * FROM region-us.INFORMATION_SCHEMA.VIEWS;

VIEWS 视图

当您查询 INFORMATION_SCHEMA.VIEWS 视图时,查询结果会针对数据集中的每个视图返回一行。

INFORMATION_SCHEMA.VIEWS 视图具有如下架构:

列名 数据类型
TABLE_CATALOG STRING 包含数据集的项目的名称
TABLE_SCHEMA STRING 包含视图的数据集的名称(也称为数据集 id
TABLE_NAME STRING 视图的名称(也称为表 id
VIEW_DEFINITION STRING 定义视图的 SQL 查询
CHECK_OPTION STRING 返回的值始终为 NULL
USE_STANDARD_SQL STRING 如果视图是使用标准 SQL 查询创建的,则为 YES;如果 useLegacySql 设置为 true,则为 NO

示例

示例 1:

以下示例从 INFORMATION_SCHEMA.VIEWS 视图中检索 check_option(该列留待将来使用)以外的所有列。系统会返回默认项目 myprojectmydataset 的所有视图的元数据。

如需对非默认项目运行查询,请按 `project_id`.dataset.INFORMATION_SCHEMA.view 格式将相应的项目 ID 添加到数据集,例如 `myproject`.mydataset.INFORMATION_SCHEMA.VIEWS

要运行查询,请执行以下操作:

控制台

  1. 在 Cloud Console 中打开 BigQuery 页面。

    转到 BigQuery 页面

  2. 查询编辑器框中输入以下标准 SQL 查询。 INFORMATION_SCHEMA 要求使用标准 SQL 语法。标准 SQL 是 Cloud Console 中的默认语法。

    SELECT
     * EXCEPT(check_option)
    FROM
     mydataset.INFORMATION_SCHEMA.VIEWS
    
  3. 点击运行

bq

使用 query 命令并通过 --nouse_legacy_sql--use_legacy_sql=false 标志指定标准 SQL 语法。INFORMATION_SCHEMA 查询要求使用标准 SQL 语法。

如需运行查询,请输入以下命令:

bq query --nouse_legacy_sql \
'SELECT
   * EXCEPT(check_option)
 FROM
   mydataset.INFORMATION_SCHEMA.VIEWS'

结果应如下所示:

  +----------------+---------------+---------------+---------------------------------------------------------------------+------------------+
  | table_catalog  | table_schema  |  table_name   |                        view_definition                              | use_standard_sql |
  +----------------+---------------+---------------+---------------------------------------------------------------------+------------------+
  | myproject      | mydataset     | myview        | SELECT column1, column2 FROM [myproject:mydataset.mytable] LIMIT 10 | NO               |
  +----------------+---------------+---------------+---------------------------------------------------------------------+------------------+
  

请注意,结果显示此视图是使用旧版 SQL 查询创建的。

示例 2:

以下示例检索用于在默认项目 myprojectmydataset 数据集中定义 myview 视图的 SQL 查询和查询语法。

如需对非默认项目运行查询,请按 `project_id`.dataset.INFORMATION_SCHEMA.view 格式将相应的项目 ID 添加到数据集,例如 `myproject`.mydataset.INFORMATION_SCHEMA.VIEWS

要运行查询,请执行以下操作:

控制台

  1. 在 Cloud Console 中打开 BigQuery 页面。

    转到 BigQuery 页面

  2. 查询编辑器框中输入以下标准 SQL 查询。 INFORMATION_SCHEMA 要求使用标准 SQL 语法。标准 SQL 是 Cloud Console 中的默认语法。

    SELECT
     table_name, view_definition, use_standard_sql
    FROM
     mydataset.INFORMATION_SCHEMA.VIEWS
    WHERE
     table_name="myview"
    
  3. 点击运行

bq

使用 query 命令并通过 --nouse_legacy_sql--use_legacy_sql=false 标志指定标准 SQL 语法。INFORMATION_SCHEMA 查询要求使用标准 SQL 语法。

如需运行查询,请输入以下命令:

bq query --nouse_legacy_sql \
'SELECT
   table_name, view_definition, use_standard_sql
 FROM
   mydataset.INFORMATION_SCHEMA.VIEWS
 WHERE
   table_name="myview"'

结果应如下所示:

  +---------------+---------------------------------------------------------------+------------------+
  |  table_name   |                        view_definition                        | use_standard_sql |
  +---------------+---------------------------------------------------------------+------------------+
  | myview        | SELECT column1, column2, column3 FROM mydataset.mytable       | YES              |
  +---------------+---------------------------------------------------------------+------------------+
  

请注意,结果显示此视图是使用标准 SQL 查询创建的。