代码之家  ›  专栏  ›  技术社区  ›  R. Schifini

在BigQuery中创建一个唯一有序的单词字符串

  •  0
  • R. Schifini  · 技术社区  · 5 年前

    我有一个字符串列,其中包含重复的单词,并且没有特定的顺序。我想将该列转换为按字母顺序排列的唯一(不同)单词字符串。

    我通过拆分(SPLIT)或REGEXP_EXTRACT_ALL(REGEXP=“\\w+”)将单词分成数组,但我无法弄清楚如何使用不同或排序它们。

    例如:

    +-----------------------+
    | Original              |
    +-----------------------+
    | blue sky, blue car    |
    +-----------------------+
    | pen pinapple pen      |
    +-----------------------+
    
    
    +-----------------------+
    | Target                |
    +-----------------------+
    | blue car sky          |
    +-----------------------+
    | pinapple pen          |
    +-----------------------+
    
    1 回复  |  直到 5 年前
        1
  •  1
  •   Yun Zhang    5 年前

    以下是您可以做的事情:

    with data as (
        select 1 id, 'blue sky, blue car' text
        union all select 2, 'pen pineapple pen'
    )
    select id, 
           (select string_agg(distinct word, ' ' order by word) 
            from unnest(REGEXP_EXTRACT_ALL(text, "\\w+")) word)
    from data
    

    输出:

    +----+---------------+
    | id |      f0_      |
    +----+---------------+
    |  1 | blue car sky  |
    |  2 | pen pineapple |
    +----+---------------+