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 数组的主要内容,如果未能解决你的问题,请参考以下文章
参数类型的运算符 > 没有匹配的签名:STRING、INT64。支持的签名:BigQuery 中的 ANY > ANY
如何计算位于 BigQuery 表中的 json 数组中的对象数?