【问题标题】:Using databricks SQL remove duplicates between two array and maintain order使用databricks SQL删除两个数组之间的重复项并保持顺序
【发布时间】:2023-02-24 00:28:21
【问题描述】:

select array_distinct(concat(array("sql", "python"), array("sql","scala")))

我得到的输出是正确的。

["sql", "python", "scala"]

concat 和 array_distinct 会保持顺序吗?或者我将如何使用 sql 实现相同的目的

【问题讨论】:

    标签: databricks databricks-sql


    【解决方案1】:

    SQL 中的 concat 函数将两个或多个数组连接成一个数组。串联数组中元素的顺序由输入数组的顺序决定。

    array_distinct 函数返回一个数组,其中包含输入数组的不同元素。不保证输出数组中元素的顺序与输入数组中元素的顺序相同。

    在您的示例中,串联数组中元素的顺序是 ["sql"、"python"、"sql"、"scala"]。应用 array_distinct 后,删除了重复元素“sql”,结果是 ["sql", "python", "scala"]。

    如果要保持数组中元素的顺序并删除重复项,可以使用以下查询:

    SELECT DISTINCT column_value
    FROM UNNEST(array['sql', 'python', 'sql', 'scala']) AS t(column_value)
    

    此查询使用 UNNEST 函数创建具有单列 column_value 的表,然后应用 DISTINCT 运算符删除重复项。结果输出是 ["sql", "python", "scala"]。

    【讨论】:

      猜你喜欢
      • 2019-02-18
      • 2011-03-05
      • 2012-02-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-03
      • 1970-01-01
      相关资源
      最近更新 更多