ROUTINES 视图
INFORMATION_SCHEMA.ROUTINES
视图中的每一行对应数据集中的每个例程。
所需权限
如需查询 INFORMATION_SCHEMA.ROUTINES
视图,您需要拥有以下 Identity and Access Management (IAM) 权限:
bigquery.routines.get
bigquery.routines.list
以下每个预定义的 IAM 角色都包含获取例程元数据所需的权限:
roles/bigquery.admin
roles/bigquery.metadataViewer
roles/bigquery.dataViewer
如需详细了解 BigQuery 权限,请参阅使用 IAM 进行访问权限控制。
架构
当您查询 INFORMATION_SCHEMA.ROUTINES
视图时,查询结果为数据集中的每个例程返回一行。
INFORMATION_SCHEMA.ROUTINES
视图具有如下架构:
列名 | 数据类型 | 值 |
---|---|---|
SPECIFIC_CATALOG |
STRING |
包含数据集(该数据集中定义了例程)的项目的名称 |
SPECIFIC_SCHEMA |
STRING |
包含例程的数据集的名称 |
SPECIFIC_NAME |
STRING |
例程的名称 |
ROUTINE_CATALOG |
STRING |
包含数据集(该数据集中定义了例程)的项目的名称 |
ROUTINE_SCHEMA |
STRING |
包含例程的数据集的名称 |
ROUTINE_NAME |
STRING |
例程的名称 |
ROUTINE_TYPE |
STRING |
例程类型:
|
DATA_TYPE |
STRING |
例程返回的数据类型。如果例程为存储过程,则值为 NULL |
ROUTINE_BODY |
STRING |
例程正文的定义方式;如果例程为 JavaScript 用户定义函数,则值为 SQL 或 EXTERNAL |
ROUTINE_DEFINITION |
STRING |
例程的定义 |
EXTERNAL_LANGUAGE |
STRING |
如果例程为 JavaScript 用户定义函数,则值为 JAVASCRIPT ;如果例程是通过 SQL 定义的,则值为 NULL |
IS_DETERMINISTIC |
STRING |
如果例程已知具有确定性,则值为 YES ;如果例程已知不具确定性,则值为 NO ;如果例程是未知的,则值为 NULL |
SECURITY_TYPE |
STRING |
例程的安全类型;值始终为 NULL |
CREATED |
TIMESTAMP |
例程的创建时间 |
LAST_ALTERED |
TIMESTAMP |
例程的上次修改时间 |
DDL |
STRING |
可用于创建例程的 DDL 语句,例如 CREATE FUNCTION 或 CREATE PROCEDURE |
范围和语法
针对此视图的查询必须包含数据集或区域限定符。如需了解详情,请参阅语法。下表说明了此视图的区域和资源范围:
视图名称 | 资源范围 | 区域范围 |
---|---|---|
[PROJECT_ID.]`region-REGION`.INFORMATION_SCHEMA.ROUTINES |
项目级 | REGION |
[PROJECT_ID.]DATASET_ID.INFORMATION_SCHEMA.ROUTINE |
数据集级 | 数据集位置 |
- 可选:
PROJECT_ID
:您的 Google Cloud 项目的 ID。如果未指定,则使用默认项目。 REGION
:任何数据集区域名称。例如region-us
。DATASET_ID
:您的数据集的 ID。如需了解详情,请参阅数据集限定符。
示例
-- Returns metadata for routines in a single dataset.
SELECT * FROM myDataset.INFORMATION_SCHEMA.ROUTINES;
-- Returns metadata for routines in a region.
SELECT * FROM region-us.INFORMATION_SCHEMA.ROUTINES;
示例
示例
如需对非默认项目运行查询,请按以下格式将相应的项目 ID 添加到数据集:
`PROJECT_ID`.INFORMATION_SCHEMA.ROUTINES
`myproject`.INFORMATION_SCHEMA.ROUTINES
。
以下示例从 INFORMATION_SCHEMA.ROUTINES
视图中检索所有列。返回的元数据是默认项目 myproject
中 mydataset
的所有例程的元数据。数据集 mydataset
包含一个名为 myroutine1
的例程。
SELECT * FROM mydataset.INFORMATION_SCHEMA.ROUTINES;
结果类似于以下内容:
+------------------+-----------------+---------------+-----------------+----------------+--------------+--------------+-----------+--------------+--------------------+-------------------+------------------+---------------+-----------------------------+-----------------------------+-----------------------------------------------------------+ | specific_catalog | specific_schema | specific_name | routine_catalog | routine_schema | routine_name | routine_type | data_type | routine_body | routine_definition | external_language | is_deterministic | security_type | created | last_altered | ddl | +------------------+-----------------+---------------+-----------------+----------------+--------------+--------------+-----------+--------------+--------------------+-------------------+------------------+---------------+-----------------------------+-----------------------------+-----------------------------------------------------------+ | myproject | mydataset | myroutine1 | myproject | mydataset | myroutine1 | FUNCTION | NULL | SQL | x + 3 | NULL | NULL | NULL | 2019-10-03 17:29:00.235 UTC | 2019-10-03 17:29:00.235 UTC | CREATE FUNCTION myproject.mydataset.myroutine1(x FLOAT64) | | | | | | | | | | | | | | | | | AS ( | | | | | | | | | | | | | | | | | x + 3 | | | | | | | | | | | | | | | | | ); | +------------------+-----------------+---------------+-----------------+----------------+--------------+--------------+-----------+--------------+--------------------+-------------------+------------------+---------------+-----------------------------+-----------------------------+-----------------------------------------------------------+