【问题标题】:Do memberwise operations on arrays in Snowflake在 Snowflake 中对数组进行成员操作
【发布时间】:2022-11-22 08:03:46
【问题描述】:

如果我在 Snowflake 中有一个包含 ARRAY 的变体列,我可以通过使用 flatten 将其转换为表来对每个元素进行操作:

SELECT value FROM LATERAL FLATTEN(arr)

这对我来说似乎有点笨拙。有没有更简洁的方法来做到这一点?

【问题讨论】:

    标签: sql arrays snowflake-cloud-data-platform


    【解决方案1】:

    操作是一个广义术语,但是,可以在不展平数组的情况下对数组执行许多操作。

    第一种方法是使用一个内置的数组函数。它们都以 array_ 开头,可在此处获取列表:https://docs.snowflake.com/en/sql-reference/functions-all.html

    另一种无需展平处理的选项是在 JavaScript、Python、Java 或 Scala 中使用过程 UDF。这是一个 hello-world 级别的示例:

    create or replace function SUM_ARRAY(ARR array)
    returns float
    language javascript
    strict immutable
    as
    $$
        let sum = 0;
        for (let i=0; i<ARR.length; i++) {
            sum += ARR[i];
        }
        return sum;
    $$;
    
    with DATA as
    (
        select [1,2,3] as ARR
    )
    select sum_array(ARR) ARRAY_SUM from DATA
    ;
    

    【讨论】:

    • 这正是我要找的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-06-01
    • 2018-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-23
    • 1970-01-01
    相关资源
    最近更新 更多