google-bigquery - 在 BigQuery 中转换数组中的值
问题描述
假设我有一个表格,其列如下所示:de/a/la/les/un/une/oi/ke/el/para/d/pour/for/l/en/ (这是 1 列中的所有 1 个值在 1 行)。
我想将这些值转换为 %de /%a /%la /%les /.... 等等。
基本上,我正在尝试为 regexp 表达式构建一个基础,稍后我将使用它。
所以我想,我需要使用 SPLIT(orignal,'/') 将原始字符串转换为 ARRAY,然后通过 CONCAT('%',original,' ') 转换数组中的每个项目...但我失败了编写一个可以工作的查询......
有任何想法吗?
DZ
解决方案
以下是 BigQuery 标准 SQL
REGEXP_REPLACE(original, r'(\w+)', r'%\1 ') AS somecolumnname
您可以使用您问题中的示例数据进行测试,如下所示
#standardSQL
WITH `project.dataset.table` AS (
SELECT 'de/a/la/les/un/une/oi/ke/el/para/d/pour/for/l/en/' original
)
SELECT
REGEXP_REPLACE(original, r'(\w+)', r'%\1 ') AS somecolumnname
FROM `project.dataset.table`
结果为
Row somecolumnname
1 %de /%a /%la /%les /%un /%une /%oi /%ke /%el /%para /%d /%pour /%for /%l /%en /
推荐阅读
- android - 设置任务描述时android应用程序崩溃
- python - BeautifulSoup.get_text() 忽略换行符
- python-3.7 - 在 python 3.7.4 0 中使用附加模式创建的文件
- java - 声明一个继承自 Employee 类的 Manager 类 (Java)
- python - Pyspark Grouped Map Pandas UDF - 它是否保持组中行的顺序?
- java - 我得到了我在 networkstatsmanager.querydetailsforuid() 方法中提供的不同的 startTimestamp 和 endtimestamp。如何解决?
- spring - Hibernate 不添加 auto_increment
- javascript - 在 Heroku 上部署后无法获取错误
- templates - 在模板命名空间前缀是未声明的 xsl 1.0
- angular - Angular:编辑表单中的数据绑定问题