BigQueryでクエリパラメータをデコードする
BigQueryでアクセスログなどのURLを分析する際、URLに含まれるクエリパラメータがエンコードされていて読みづらいことがある。
BigQueryにはデコードする標準関数は用意されていないが、JavaScriptを使ったユーザー定義関数(UDF)を使うことで、URLエンコードされた文字列を簡単にデコードできる。
-- URLエンコードされた文字列をデコードする関数
-- NULLやデコードできない文字列の場合はそのまま返す
CREATE TEMP FUNCTION DECODE_URI(query_string STRING)
RETURNS STRING
LANGUAGE js AS """
try {
return decodeURIComponent(query_string);
} catch {
return query_string;
}
""";
使う場合は、次のように定義した関数を呼び出すだけで良い。
-- サンプルデータ
WITH
sample_data AS (
SELECT '%E3%83%91%E3%82%B9%E3%83%AF%E3%83%BC%E3%83%89' AS query
)
SELECT
url,
DECODE_URI(query) AS decoded_query
FROM
sample_data;