bigquery

BigQueryで統計量の計算をしてみよう

BigQueryにはUDFという、ユーザ定義関数を実行することができます
また、StandardSQLでは外部jsをインクルードできるようになりました
今回、jsの統計ライブラリであるjstatsを読み込んで、BigQueryで統計量の計算をすることにしました

手順

  1. jstat.jsをGoogle Cloud Storageにアップする
  2. 以下のクエリをBigQueryで実行する

twoSidedDifferenceOfProportions

jStat.fn.twoSidedDifferenceOfProportions(.5, 134, .51, 101);
=> 0.879357522092445
CREATE TEMPORARY FUNCTION twoSidedDifferenceOfProportions(p1 FLOAT64, n1 FLOAT64, p2 FLOAT64, n2 FLOAT64)
RETURNS FLOAT64
LANGUAGE js AS """
  return jStat.fn.twoSidedDifferenceOfProportions( p1, n1, p2, n2);
"""
OPTIONS (
  library="gs://#{project_name}/jstat.js"
);

SELECT
  twoSidedDifferenceOfProportions(0.5, 134, 0.51, 101)

=> 0.879357522092445

注意

以下のように最初FLOAT64の箇所をINT64としていて、数字が全く違うものが返ってきていました。
型はしっかり確認して利用しましょう。

CREATE TEMPORARY FUNCTION twoSidedDifferenceOfProportions(p1 FLOAT64, n1 INT64, p2 FLOAT64, n2 INT64)
RETURNS FLOAT64
LANGUAGE js AS """
  return jStat.fn.twoSidedDifferenceOfProportions( p1, n1, p2, n2);
"""
OPTIONS (
  library="gs://#{project_name}/jstat.js"
);

SELECT
  twoSidedDifferenceOfProportions(0.5, 134, 0.51, 101)CREATE TEMPORARY FUNCTION twoSidedDifferenceOfProportions(p1 FLOAT64, n1 INT64, p2 FLOAT64, n2 INT64)
RETURNS FLOAT64
LANGUAGE js AS """
  return jStat.fn.twoSidedDifferenceOfProportions( p1, n1, p2, n2);
"""
OPTIONS (
  library="gs://#{project_name}/jstat.js"
);

SELECT
  twoSidedDifferenceOfProportions(0.5, 134, 0.51, 101)

=> 0.0106513479995477