👓

BQのstandardSQLで変数利用

2021/07/15に公開

目的

bigqueryのstandardSQL内で変数を利用したい。

方法

「declare」か「関数」の2つで実現できる。
「関数」は変数というよりは定数といった感じの使用感。

declare

2019年から実装された機能。
PL/SQLとかのdeclareと同じ感じで使用できる。

日付

declare ymd_year date;
set ymd_year = date("2021-07-15");

以下のようにselectしてみると代入値が取得できる。
もちろんwhere句等の条件にも使える。

select ymd_year as AAA;

整数値

declare num int64;
set num = 100;

文字列

declare str string;
set str = "string";

複数指定代入

declare num int64;
declare str string;
set (num, str) = (100, "string");

declareの詳細は公式参照

https://cloud.google.com/bigquery/docs/reference/standard-sql/scripting

関数

以下のように関数化することで定数のように利用することもできる。
declareが存在するので今はあまり使わないかも。

create temporary function getNum() as (100);

データセット名やテーブル名に変数を利用したい場合

以下の記事を追加しました。
https://zenn.dev/persona/articles/3d72642f12e461

Discussion