4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

BigQueryで使えるストアドプロシージャ入門:再利用・自動化・セキュリティに効く!

Last updated at Posted at 2025-10-16

ストアドプロシージャとは?

BigQueryのストアドプロシージャは、他のクエリやプロシージャから呼び出せるSQLステートメントの集合です。以下のような特徴があります:

  • 何度でも使えるSQLのまとまり
  • 名前をつけてBigQueryのデータセットに保存できる
  • 引数(入力)を受け取り、戻り値(出力)を返すことも可能
  • IFLOOP などの制御構文を使って処理の流れを記述できる
  • 他のSQLやプロシージャから呼び出して使える

何が便利なの?

用途 説明
再利用 複数のユーザーやプロセスで同じ処理を使い回せる
アクセス制御 テーブルに直接アクセスさせず、プロシージャ経由で安全に操作できる
処理の自動化 UUID生成 → データINSERT → 結果返却などの一連の流れを自動化できる
セキュリティ 認可済みルーチンを使えば、データを見せずに処理だけ提供可能

ユースケース例

1. 顧客登録処理の共通化

営業部門・マーケティング部門など複数部署が顧客情報を登録する際、同じロジック(UUID生成・重複チェック・INSERT処理)をストアドプロシージャにまとめておけば、一貫性のあるデータ登録が可能になります。

2. データマスキング処理

個人情報を含むテーブルに対して、マスキング処理だけを許可したプロシージャを作成すれば、データの漏洩リスクを減らしつつ、分析用途に活用できます。

3. 定期バッチ処理の自動化

例えば「毎朝9時に前日の売上データを集計して別テーブルに保存する」などの処理をCloud Scheduler + ストアドプロシージャで自動化できます。

作成方法

基本形

CREATE PROCEDURE dataset_name.procedure_name()
BEGIN  -- SQL文をここに書く
END;

引数を渡すには?

例:顧客データを追加するプロシージャ

CREATE PROCEDURE mydataset.create_customer(name STRING)
BEGIN  
    DECLARE id STRING;  
    SET id = GENERATE_UUID();  
    
    INSERT INTO mydataset.customers (customer_id, name)  
    VALUES(id, name);  
    
    SELECT FORMAT("Created customer %s (%s)", id, name);
    END;

呼び出し方

CALL mydataset.create_customer("Alice");

値を戻す(OUTパラメータ)

OUTパラメータ付きの例

CREATE PROCEDURE mydataset.create_customer(name STRING, OUT id STRING)
BEGIN  
SET id = GENERATE_UUID();  
INSERT INTO mydataset.customers (customer_id, name)  
VALUES(id, name);END;

呼び出し方

DECLARE my_id STRING;
CALL mydataset.create_customer("Alice", my_id);
SELECT * FROM mydataset.customers WHERE customer_id = my_id;

まとめ

BigQueryのストアドプロシージャは、再利用性・自動化・セキュリティの面で非常に強力な機能です。業務の効率化やデータアクセスの安全性向上に役立つので、ぜひ活用してみてください!

4
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?