hiko1129's note

BigQueryのUDF(ユーザー定義関数)はJavaScriptで書けるし永続化もできる

2020/03/27

標準 SQL ユーザー定義関数ってドキュメントにかかれているとおりの話です。AthenaだとJavaなので、BigQueryのが気楽に書けます。

下のような感じでJavaScriptが書けます。

CREATE TEMP FUNCTION
  extractJSON(x string)
  RETURNS string
  LANGUAGE js AS """
      if (x.includes('hoge')) {
        return x.split(':')[1]
      }
      return ''
    """;

下記のように上の関数からTEMPを外してdataset.function_nameという形で書くと永続化することができます。

CREATE FUNCTION
  for_test.extractJSON(x string)
  RETURNS string
  LANGUAGE js AS """
      if (x.includes('hoge')) {
        return x.split(':')[1]
      }
      return ''
    """;

BigQueryからCloud SQLに対してクエリを実行する方法に書いたとおり、Cloud SQLに対してのクエリも書けるし、ちょっとデータ加工するのもUDFでJavaScriptを使うことで簡単にできるし、そもそも高速に動くので(時々触るAthenaの体験が悪いこともあり)ここ最近BigQuery最高だなーとなっています。


hiko1129

hiko1129
Twitter GitHub Qiita Qrunch Blog