LoginSignup
1
1

More than 5 years have passed since last update.

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

Posted at

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
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1