首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >BigQuery数组上的逐元素函数

BigQuery数组上的逐元素函数
EN

Stack Overflow用户
提问于 2021-10-28 10:26:20
回答 2查看 76关注 0票数 0

如何在BigQuery数组上逐个应用函数元素。例如,如何将常量数字添加到splits列中的每个元素,或者将浮点数转换为字符串。

代码语言:javascript
复制
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
EN

回答 2

Stack Overflow用户

发布于 2021-10-28 16:14:38

好吧,这比我想象的要简单。在SELECT语句中,只能将ARRAYUNNEST结合使用。基本上,它看起来像这样

代码语言:javascript
复制
ARRAY(SELECT transform(x)
        FROM UNNEST(array) AS x WITH OFFSET AS y ORDER BY y) AS transformed

所以为了完成上面的例子

代码语言:javascript
复制
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
票数 1
EN

Stack Overflow用户

发布于 2021-10-28 17:31:03

考虑下面的方法

代码语言:javascript
复制
SELECT
  *, 
  ARRAY(SELECT '' || split FROM t.splits split) converted_splits,
  ARRAY(SELECT 5 + split FROM t.splits split) adjusted_splits
FROM
  races t             

带输出

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69752407

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档