如何在BigQuery数组上逐个应用函数元素。例如,如何将常量数字添加到splits列中的每个元素,或者将浮点数转换为字符串。
WITH
races_with_struct AS (
SELECT
"800M" AS race,
[STRUCT("Rudisha" AS name,
[23.4, 26.3, 26.4, 26.1] AS splits),
STRUCT("Makhloufi" AS name,
[24.5, 25.4, 26.6, 26.1] AS splits),
STRUCT("Lewandowski" AS name,
[25.0, 25.7, 26.3, 27.2] AS splits),
STRUCT("Nathan" AS name,
ARRAY<FLOAT64>[] AS splits),
STRUCT("David" AS name,
NULL AS splits)] AS participants),
races AS (
SELECT
race,
participant.name AS name,
participant.splits AS splits
FROM
races_with_struct r
CROSS JOIN
UNNEST(r.participants) AS participant)
SELECT
*
FROM
races发布于 2021-10-28 16:14:38
好吧,这比我想象的要简单。在SELECT语句中,只能将ARRAY与UNNEST结合使用。基本上,它看起来像这样
ARRAY(SELECT transform(x)
FROM UNNEST(array) AS x WITH OFFSET AS y ORDER BY y) AS transformed所以为了完成上面的例子
WITH
races_with_struct AS (
SELECT
"800M" AS race,
[STRUCT("Rudisha" AS name,
[23.4, 26.3, 26.4, 26.1] AS splits),
STRUCT("Makhloufi" AS name,
[24.5, 25.4, 26.6, 26.1] AS splits),
STRUCT("Lewandowski" AS name,
[25.0, 25.7, 26.3, 27.2] AS splits),
STRUCT("Nathan" AS name,
ARRAY<FLOAT64>[] AS splits),
STRUCT("David" AS name,
NULL AS splits)] AS participants),
races AS (
SELECT
race,
participant.name AS name,
participant.splits AS splits
FROM
races_with_struct r
CROSS JOIN
UNNEST(r.participants) AS participant)
SELECT
race,
name,
splits,
ARRAY(SELECT x + 2
FROM UNNEST(splits) AS x WITH OFFSET AS y ORDER BY y) AS transformed
FROM
races发布于 2021-10-28 17:31:03
考虑下面的方法
SELECT
*,
ARRAY(SELECT '' || split FROM t.splits split) converted_splits,
ARRAY(SELECT 5 + split FROM t.splits split) adjusted_splits
FROM
races t 带输出

https://stackoverflow.com/questions/69752407
复制相似问题