LoginSignup
9
0

More than 5 years have passed since last update.

BigQuery Standard SQLで配列の差集合を求める方法

Last updated at Posted at 2016-11-21

$A$と$B$を配列として時に、$A \setminus B$となる配列を返すUDF関数を作ってみました。

#standardSQL
CREATE TEMPORARY FUNCTION ARRAY_INT64_INCLUDE(arr ARRAY<INT64>, val INT64)
RETURNS BOOL AS ((
  SELECT LOGICAL_OR(elem = val) FROM UNNEST(arr) as elem
));

CREATE TEMPORARY FUNCTION ARRAY_INT64_SUB(arr1 ARRAY<INT64>, arr2 ARRAY<INT64>)
RETURNS ARRAY<INT64> AS ((
  SELECT ARRAY(SELECT val FROM UNNEST(arr1) AS val WHERE NOT(ARRAY_INT64_INCLUDE(arr2, val)))
));

SELECT ARRAY_INT64_SUB([1, 2, 3, 4, 5], [2, 3, 4])
9
0
1

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