こんにちは。JDSCの栗林です。 BigQueryを使用されている方であれば、JavaScriptでユーザ定義関数(UDF)を作成できることはご存知かもしれません[1]。JavaScriptはSQLに比べてかなり自由度は高いのですが、実行速度の面ではどうしても不利になってしまいます。 そこでJavaScriptの高速化といえばWebAssembly![2]ということで、BiqQueryのUDFでWebAssemblyを試してみたところ、一定の効果が見られたのでご紹介します。 まずは結果からみてみましょう。100個のデータそれぞれに対して、ループ回数を数える単純な処理を実行したときの実行時間を計測しました。BigQueryの実行時間はバラツキが大きいため、5回測定した中央値を採っています。 JavaScriptではループ回数が10の6乗を超えると極端に実行時間が増加しますが、WebAssem