如何从 BigQuery 结果中去除非数字字符
Posted
技术标签:
【中文标题】如何从 BigQuery 结果中去除非数字字符【英文标题】:How to strip non-numeric characters from BigQuery results 【发布时间】:2017-10-23 20:21:09 【问题描述】:我已经看到有关如何在 BigQuery 中将 add commas 转换为数字的信息,但我得到的是美元金额结果
$15,000
$25,000
$10,000
我想转换成纯数字
15000
25000
10000
我没有找到任何 BigQuery 函数来进行这样的格式更改。
【问题讨论】:
【参考方案1】:许多不同的方式 - 例如下面的一个使用正则表达式来删除 $
和 ,
字符
#standardSQL
WITH `project.dataset.table` AS (
SELECT '$15,000' AS dollar_amount UNION ALL
SELECT '$25,000' UNION ALL
SELECT '$10,000'
)
SELECT
dollar_amount,
CAST(REGEXP_REPLACE(dollar_amount, r'\$|,', '') as INT64) amount
FROM `project.dataset.table`
【讨论】:
另一个想法是使用REGEXP_EXTRACT_ALL
和[0-9]+
,然后使用ARRAY_TO_STRING
将输出连接为更通用的解决方案,以防有其他无关字符。
或只是 CAST(REGEXP_REPLACE(dollar_amount, r'[^0-9.]', '') AS INT64)
以避免额外的 ARRAY 相关内容
这很棒。出于某种原因,它无法识别我想要转换为的任何 INT
类型,但即使在其自身上完美地执行 REGEXP_REPLACE()
也是如此。无论如何,当我传递数据时,它都会以数字的形式被读入。
如果你使用INT
- 你应该使用'INT64'。同时 - 如果您的金额有小数 - 您应该使用 FLOAT64
而不是 INT64
以上是关于如何从 BigQuery 结果中去除非数字字符的主要内容,如果未能解决你的问题,请参考以下文章
从 BigQuery 数据查询中查询名为 chartio 的 BI 工具时,最大数据大小是多少?