BigQuery クロス結合? 相関クロス結合?
クロス結合は直積、単なる直積を取るのはあんまりやらないので相関クロス結合をクロス結合と言っているケースがままある?(要出典) 直積に条件がつくと "相関" がつく?
code:クロス結合.sql
WITH nums AS (
SELECT * FROM UNNEST(ARRAY<STRUCT<id INT64>>[
STRUCT(1),
STRUCT(2),
STRUCT(3)
])
)
SELECT
*
FROM
nums AS n1
CROSS JOIN
nums AS n2;
これは直積
https://gyazo.com/e2e59a4a0d8e702c7f9c813c1f5ece57
code:相関クロス結合.sql
WITH nums AS (
SELECT * FROM UNNEST(ARRAY<STRUCT<id INT64, items ARRAY<STRING>>>[
])
)
SELECT
*
FROM
nums, UNNEST(items)
-- FROM nums, nums.items と同じ(列名は変わるけど)
-- nums の各行に対して、その行の items カラムを CROSS JOIN している
-- nums の各行に応じた結合なので相関クロス結合?
-- 直積なので nums の行も増えるのが注意か
https://gyazo.com/7303af081520d99f065b4867bd2559cf
code:相関クロス結合2.sql
WITH nums AS (
SELECT * FROM UNNEST(ARRAY<STRUCT<id INT64, items ARRAY<STRING>>>[
])
)
SELECT
id,
item
FROM
nums, nums.items AS item
https://gyazo.com/08218ce52727120111053dc87e7d69c9
こちらの方が明快な気も