首页 > 解决方案 > 在 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

标签: google-bigquery

解决方案


以下是 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 /  

推荐阅读