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

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

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

1
2
3
4
5
6
7
8
9
CREATE TEMP FUNCTION
  extractJSON(x string)
  RETURNS string
  LANGUAGE js AS """
      if (x.includes('hoge')) {
        return x.split(':')[1]
      }
      return ''
    """;

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

1
2
3
4
5
6
7
8
9
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最高だなーとなっています。

Built with Hugo
テーマ StackJimmy によって設計されています。