Google bigquery 新标准SQL中的BigQuery扁平化子句等价
我正在尝试使用BQ支持的新标准SQL在BigQuery中运行查询。目前我的任务是尝试使用标准SQL运行以下查询BQ语法:Google bigquery 新标准SQL中的BigQuery扁平化子句等价,google-bigquery,Google Bigquery,我正在尝试使用BQ支持的新标准SQL在BigQuery中运行查询。目前我的任务是尝试使用标准SQL运行以下查询BQ语法: SELECT u0, u1 FROM (SELECT MIN(u) as u0, NEST(u) as u1 FROM (FLATTEN((SELECT key, SPLIT(u2,',') as u FROM [dataset.table]),u)) GROUP EACH BY key HAVING u
SELECT
u0, u1
FROM
(SELECT
MIN(u) as u0, NEST(u) as u1
FROM
(FLATTEN((SELECT key, SPLIT(u2,',') as u FROM [dataset.table]),u))
GROUP EACH BY key
HAVING u0 <> u1)
GROUP EACH BY u0, u1
我对展平操作符有很多问题。
到目前为止,我所知道的,但它并不完全有效的是:
SELECT
u0, u1
FROM
(SELECT
(SELECT MIN(uids) FROM UNNEST(u2_arr) u2) u0,
u2_arr
FROM
(SELECT SPLIT(uids, ',') as u2_arr FROM `datase.table`)),
UNNEST(u2_arr) u1
WHERE u0 <> u1
GROUP BY u0, u1
如何使第二个查询与第一个查询相似,有什么建议吗
提前谢谢你!
G假设您的表如下所示,它是从您的问题中的代码派生出来的
key u2
1 2,6,3,1,4,5
2 21,6,32,11,4,5
下面的BigQuery标准SQL返回与原始遗留SQL完全相同的结果
SELECT
u0, u1
FROM (
SELECT
MIN(u) AS u0, ARRAY_AGG(u) AS u1
FROM
(SELECT key, u FROM `datase.table`, UNNEST(SPLIT(u2, ',')) AS u)
GROUP BY key
), UNNEST(u1) AS u1
WHERE u0 <> u1
这可能不是从传统sql到标准sql的最佳转换,但我不知道您想要实现什么,我希望代码尽可能接近您的原始代码
从另一方面来说,我不知道你所说的是什么意思,我认为你的版本不能完全正常工作