在BigQuery中转换数组内的值

时间:2019-01-11 14:29:54

标签: google-bigquery

假设我有一个带有列的表,如下所示: de / a / la / les / un / une / oi / ke / el / para / d / pour / for / l / en / (这是1行1列中的所有1个值)。

我想将这些值转换为%de /%a /%la /%les / ....等等。

基本上,我正在尝试为正则表达式的表达建立基础,以后再使用。

所以我想,我需要使用SPLIT(orignal,'/')将原始字符串转换为ARRAY,然后通过CONCAT('%',original,'')转换数组中的每个项目...但是我无法编写一个行之有效的查询...

有什么想法吗?

DZ

2 个答案:

答案 0 :(得分:1)

好的,这是解决方案:

选择

ARRAY_TO_STRING(ARRAY(SELECT CONCAT('',original_single,'')from UNNEST(SPLIT(original,'|'))AS original_single),'|')AS somecolumnname

从.....

答案 1 :(得分:1)

以下是用于BigQuery标准SQL

AcceptOnceFileListFilter

您可以使用以下问题中的示例数据来测试,玩游戏

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`