Bigquery STRING 数组到 INT 数组

Posted

技术标签:

【中文标题】Bigquery STRING 数组到 INT 数组【英文标题】:Bigquery array of STRINGs to array of INTs 【发布时间】: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>) 

但这不起作用。

【问题讨论】:

【参考方案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)

以上是关于Bigquery STRING 数组到 INT 数组的主要内容,如果未能解决你的问题,请参考以下文章

BigQuery 自动将字符串转换为 int

从数组 Bigquery 中提取所有 int64 元素

参数类型的运算符 > 没有匹配的签名:STRING、INT64。支持的签名:BigQuery 中的 ANY > ANY

如何计算位于 BigQuery 表中的 json 数组中的对象数?

将 JSON 加载到 bigquery - 字段有时是数组,有时是字符串

如何在 BigQuery 中取消嵌套多个数组?