【问题标题】:Transforming Values Within Array in BigQuery在 BigQuery 中转换数组中的值
【发布时间】:2019-01-11 23:02:12
【问题描述】:

假设我有一个表格,其列如下所示: 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


    【解决方案1】:

    好的,解决方法如下:

    选择

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

    来自.....

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-12-06
        • 2019-04-12
        • 2018-05-05
        • 1970-01-01
        • 2019-07-18
        • 1970-01-01
        • 2018-02-22
        相关资源
        最近更新 更多