【问题标题】:Bigquery array of STRINGs to array of INTsBigquery STRING 数组到 INT 数组
【发布时间】:2017-07-12 22:52:37
【问题描述】:

我正在尝试从由逗号分隔的一长串数字(例如,2013,1625,1297,7634)的列中提取 BigQuery 标准 SQL 中的 INT64 数组。我可以很容易地拉出一个字符串数组:

SELECT
  SPLIT(string_col,",")
FROM
  table

但是,我想返回 INT64 的数组,而不是字符串数组。我怎样才能做到这一点?我试过了

CAST(SPLIT(string_col,",") AS ARRAY<INT64>) 

但这不起作用。

【问题讨论】:

    标签: google-bigquery


    【解决方案1】:

    以下是 BigQuery 标准 SQL

    #standardSQL
    WITH yourTable AS (
      SELECT 1 AS id, '2013,1625,1297,7634' AS string_col UNION ALL
      SELECT 2, '1,2,3,4,5'
    )
    SELECT id, 
      (SELECT ARRAY_AGG(CAST(num AS INT64)) 
        FROM UNNEST(SPLIT(string_col)) AS num
      ) AS num,
      ARRAY(SELECT CAST(num AS INT64) 
        FROM UNNEST(SPLIT(string_col)) AS num
      ) AS num_2
    FROM yourTable
    

    【讨论】:

    • 你打败了我 :) 也许也可以使用ARRAY 子查询来演示? (这就是我要发布的内容)。
    【解决方案2】:

    米哈伊尔击败了我,他的回答更广泛,但将其添加为更简单的复制:

    SELECT CAST(num as INT64) from unnest(SPLIT("2013,1625,1297,7634",",")) as num;
    

    【讨论】:

    • 检查这个:“但是,我想返回一个 INT64 的 array”:o)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-06
    • 1970-01-01
    • 1970-01-01
    • 2019-06-05
    • 2023-01-20
    • 2011-10-16
    相关资源
    最近更新 更多