管理例程

在 BigQuery 中,例程是一种资源类型,包含以下内容:

本文档介绍了 BigQuery 中所有例程的常见任务。

权限

如需执行例程,您必须对包含例程的数据集具有 bigquery.routines.get 权限。

默认情况下,您还需要有权访问例程引用的任何资源(例如表或视图)。对于 UDF 和表函数,您可以授权函数代表调用者访问这些资源。如需了解详情,请参阅授权函数

创建例程

您必须拥有 bigquery.routines.create 权限才能创建例程。

SQL

根据例程类型,运行以下 DDL 语句之一:

API

使用已定义的 Routine 资源调用 routines.insert 方法

列出例程

如需列出数据集中的例程,您必须具有 bigquery.routines.getbigquery.routines.list 权限。

控制台

  1. 在 Google Cloud 控制台中,打开 BigQuery 页面。

    转到 BigQuery

  2. 浏览器面板中,展开您的项目并选择数据集。

  3. 展开例程列表。

SQL

查询 INFORMATION_SCHEMA.ROUTINES 视图

  1. 在 Google Cloud 控制台中,转到 BigQuery 页面。

    转到 BigQuery

  2. 在查询编辑器中,输入以下语句:

    SELECT
      COLUMN_LIST
    FROM
       { DATASET | REGION }.INFORMATION_SCHEMA.ROUTINES;
    

  3. 点击 运行

如需详细了解如何运行查询,请参阅运行交互式查询

替换以下内容:

例如:

SELECT
  routine_name, routine_type, routine_body
FROM
  mydataset.INFORMATION_SCHEMA.ROUTINES;
+------------------+----------------+--------------+
|   routine_name   |  routine_type  | routine_body |
+------------------+----------------+--------------+
| AddFourAndDivide | FUNCTION       | SQL          |
| create_customer  | PROCEDURE      | SQL          |
| names_by_year    | TABLE FUNCTION | SQL          |
+------------------+----------------+--------------+

bq

使用带有 --routines 标志的 bq ls 命令

bq ls --routines DATASET

替换以下内容:

  • DATASET:项目中的数据集的名称。

例如:

bq ls --routines mydataset
         Id              Routine Type        Language    Creation Time    Last Modified Time
------------------ ----------------------- ---------- ----------------- --------------------
 AddFourAndDivide   SCALAR_FUNCTION         SQL        05 May 01:12:03   05 May 01:12:03
 create_customer    PROCEDURE               SQL        21 Apr 19:55:51   21 Apr 19:55:51
 names_by_year      TABLE_VALUED_FUNCTION   SQL        01 Sep 22:59:17   01 Sep 22:59:17

API

使用数据集 ID 调用 routines.list 方法

查看例程的正文

如需查看例程的正文,您必须具有 bigquery.routines.get 权限。

控制台

  1. 在 Google Cloud 控制台中,打开 BigQuery 页面。

    转到 BigQuery

  2. 浏览器面板中,展开您的项目并选择数据集。

  3. 展开例程列表。

  4. 选择例程。例程的正文列在例程查询下。

SQL

选择 INFORMATION_SCHEMA.ROUTINES 视图routine_definition 列。

  1. 在 Google Cloud 控制台中,转到 BigQuery 页面。

    转到 BigQuery

  2. 在查询编辑器中,输入以下语句:

    SELECT
      routine_definition
    FROM
      { DATASET | REGION }.INFORMATION_SCHEMA.ROUTINES
    WHERE
      routine_name = ROUTINE_NAME;
    

  3. 点击 运行

如需详细了解如何运行查询,请参阅运行交互式查询

替换以下内容:

  • DATASET:项目中的数据集的名称。
  • REGION区域限定符
  • ROUTINE_NAME:例程的名称。

例如:

SELECT
  routine_definition
FROM
  mydataset.INFORMATION_SCHEMA.ROUTINES
WHERE
  routine_name = 'AddFourAndDivide';
+--------------------+
| routine_definition |
+--------------------+
| (x + 4) / y        |
+--------------------+

bq

使用带有 --routine 标志的 bq show 命令

bq show --routine DATASET.ROUTINE_NAME

替换以下内容:

  • DATASET:项目中的数据集的名称。
  • ROUTINE_NAME:例程的名称。

例如:

bq show --routine mydataset.AddFourAndDivide
         Id           Routine Type     Language             Signature             Definition     Creation Time    Last Modified Time
 ------------------ ----------------- ---------- ------------------------------- ------------- ----------------- --------------------
  AddFourAndDivide   SCALAR_FUNCTION   SQL        (x INT64, y INT64) -> FLOAT64   (x + 4) / y   05 May 01:12:03   05 May 01:12:03

API

使用数据集 ID 和例程名称调用 routines.get 方法。例程的正文在 Routine 对象中返回。

删除例程

如需删除例程,您必须拥有 bigquery.routines.delete 权限。

控制台

  1. 在 Google Cloud 控制台中,打开 BigQuery 页面。

    转到 BigQuery

  2. 浏览器面板中,展开您的项目并选择数据集。

  3. 展开例程列表。

  4. 选择例程。

  5. 展开 操作选项,然后点击删除

  6. 在对话框中输入 "delete",然后点击删除进行确认。

SQL

根据例程类型,运行以下 DDL 语句之一:

例如:

DROP FUNCTION IF EXISTS mydataset.AddFourAndDivide

bq

使用带有 --routine 标志的 bq rm 命令

bq rm --routine DATASET.ROUTINE_NAME

替换以下内容:

  • DATASET:项目中的数据集的名称。
  • ROUTINE_NAME:例程的名称。

例如:

bq rm --routine mydataset.AddFourAndDivide

API

使用数据集 ID 和例程名称调用 routines.delete 方法