ルーティンを管理する
BigQuery では、ルーティンは以下を含むリソースタイプです。
- ストアド プロシージャ
- ユーザー定義関数(UDF)(リモート関数を含む)。
- テーブル関数
このドキュメントでは、BigQuery のすべてのルーティンタイプに共通するタスクについて説明します。
権限
SQL クエリでルーティンを参照するには、bigquery.routines.get 権限が必要です。ルーチンへのアクセス権を付与するには、データセットまたは個々のルーチンに対する bigquery.routines.get 権限を持つ IAM ロールを付与します。データセット レベルでアクセス権を付与すると、プリンシパルはデータセット内のすべてのルーティンにアクセスできるようになります。詳細については、IAM を使用してリソースへのアクセスを制御するをご覧ください。
デフォルトでは、ルーティンが参照するリソース(テーブルやビューなど)にアクセスするための権限も必要です。UDF とテーブル関数の場合、呼び出し元に代わり、これらのリソースにアクセスするように関数を承認できます。詳細については、承認済み関数をご覧ください。
ルーティンを作成する
プロジェクトを作成するには、bigquery.routines.create 権限が必要です。
SQL
ルーティンのタイプに応じて、次のいずれかの DDL ステートメントを実行します。
API
定義済みの Routine リソースを使用して routines.insert メソッドを呼び出します。
ルーティンの一覧表示
データセット内のルーティンを一覧表示するには、bigquery.routines.get 権限と bigquery.routines.list 権限が必要です。
コンソール
- Google Cloud コンソールで、[BigQuery] ページを開きます。 
- 左側のペインで、 [エクスプローラ] をクリックします。 - 左側のペインが表示されていない場合は、 左側のペインを開くをクリックしてペインを開きます。 
- [エクスプローラ] ペインでプロジェクトを開き、[データセット] をクリックして、データセットを選択します。 
- [ルーティン] タブをクリックします。 
SQL
INFORMATION_SCHEMA.ROUTINES ビューをクエリします。
- Google Cloud コンソールで、[BigQuery] ページに移動します。 
- クエリエディタで次のステートメントを入力します。 - SELECT COLUMN_LIST FROM { DATASET | REGION }.INFORMATION_SCHEMA.ROUTINES; 
- [実行] をクリックします。 
クエリの実行方法については、インタラクティブ クエリを実行するをご覧ください。
次のように置き換えます。
- COLUMN_LIST: INFORMATION_SCHEMA.ROUTINESビュー の列のカンマ区切りリスト。
- DATASET: プロジェクト内のデータセットの名前。
- REGION: リージョン修飾子。
例:
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
bq lsコマンド に --routines フラグを指定します。
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 権限を付与されている必要があります。
コンソール
- Google Cloud コンソールで、[BigQuery] ページを開きます。 
- 左側のペインで、 [エクスプローラ] をクリックします。 
- [エクスプローラ] ペインでプロジェクトを開き、[データセット] をクリックして、データセットを選択します。 
- [ルーティン] タブをクリックします。 
- ルーティンを選択します。[ルーティン クエリ] の下にルーティンの本文が表示されます。 
SQL
INFORMATION_SCHEMA.ROUTINES ビューの routine_definition 列を選択します。
- Google Cloud コンソールで、[BigQuery] ページに移動します。 
- クエリエディタで次のステートメントを入力します。 - SELECT routine_definition FROM { DATASET | REGION }.INFORMATION_SCHEMA.ROUTINES WHERE routine_name = ROUTINE_NAME; 
- [実行] をクリックします。 
クエリの実行方法については、インタラクティブ クエリを実行するをご覧ください。
次のように置き換えます。
- DATASET: プロジェクト内のデータセットの名前。
- REGION: リージョン修飾子。
- ROUTINE_NAME: ルーティンの名前。
例:
SELECT routine_definition FROM mydataset.INFORMATION_SCHEMA.ROUTINES WHERE routine_name = 'AddFourAndDivide';
+--------------------+
| routine_definition |
+--------------------+
| (x + 4) / y        |
+--------------------+
bq
bq showコマンド に --routine フラグを指定します。
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 権限が必要です。
コンソール
- Google Cloud コンソールで、[BigQuery] ページを開きます。 
- 左側のペインで、 [エクスプローラ] をクリックします。 
- [エクスプローラ] ペインでプロジェクトを開き、[データセット] をクリックして、データセットを選択します。 
- [ルーティン] タブをクリックします。 
- ルーティンを選択します。 
- 詳細ペインで [削除] をクリックします。 
- ダイアログに「 - "delete"」と入力し、[削除] をクリックして確定します。
SQL
ルーティンのタイプに応じて、次のいずれかの DDL ステートメントを実行します。
例:
DROP FUNCTION IF EXISTS mydataset.AddFourAndDivide
bq
bq rmコマンド に --routine フラグを指定します。
bq rm --routine DATASET.ROUTINE_NAME
次のように置き換えます。
- DATASET: プロジェクト内のデータセットの名前。
- ROUTINE_NAME: ルーティンの名前。
例:
bq rm --routine mydataset.AddFourAndDivide
API
データセット ID とルーティンの名前を指定して routines.delete メソッドを呼び出します。