👓

【GCP】BQでデータセット名やテーブル名に変数を利用

2022/07/11に公開

目的

bigqueryのstandardSQLでデータセット名やテーブル名に変数の値を利用したいと思います。

課題感

DECLAREで定義した変数は
そのままではstandardSQLのデータセット名やテーブル名に利用できません。

方法

「DECLARE」と「EXECUTE IMMEDIATE FORMAT」で動的SQLステートメントの作成して実現します。

データセット名に変数を利用

DECLARE value STRING;
SET value = "analytics_279437325";

EXECUTE IMMEDIATE FORMAT("""
SELECT event_date FROM `%s.events_20220710` LIMIT 10
""", value);

テーブル名に変数を利用

DECLARE value STRING;
SET value = "events_20220710";

EXECUTE IMMEDIATE FORMAT("""
SELECT event_name FROM `analytics_279437325.%s` LIMIT 10
""", value);

データセット名やテーブル名の一部にのみ変数利用

DECLARE value1 STRING;
DECLARE value2 STRING;
SET value1 = "279437325";
SET value2 = "20220710";

EXECUTE IMMEDIATE FORMAT("""
SELECT event_timestamp FROM `analytics_%s.events_%s` LIMIT 10
""", value1,value2);

Discussion