Snowflake cloud data platform 使用Array_construct在数组列创建后使用存储过程对其进行排序

Snowflake cloud data platform 使用Array_construct在数组列创建后使用存储过程对其进行排序,snowflake-cloud-data-platform,Snowflake Cloud Data Platform,当我试图找到对数组列进行排序的解决方案时,遇到了一个要排序的线程 我尝试了这个答案,但在设置变量来存储数组时遇到了问题 这不起作用: SET b = ['asdfk', 'sdfdd']; 这就是我所尝试的: 创建或替换函数排序函数(数组) 返回字符串 语言JAVASCRIPT 作为 $$ 返回A.reverse() $$ ; 选择sort_func('foo'); 其中选择sort_func('foo') 这就是错误: SQL编译错误:错误行1的位置7函数“SORT_FUNC”的参数类型无

当我试图找到对数组列进行排序的解决方案时,遇到了一个要排序的线程

我尝试了这个答案,但在设置变量来存储数组时遇到了问题

这不起作用:

SET b = ['asdfk', 'sdfdd'];
这就是我所尝试的:

创建或替换函数排序函数(数组)
返回字符串
语言JAVASCRIPT
作为
$$
返回A.reverse()
$$
;
选择sort_func('foo');
其中选择sort_func('foo')

这就是错误:

SQL编译错误:错误行1的位置7函数“SORT_FUNC”的参数类型无效:(VARCHAR(3))
我可以帮助你更好地理解雪花是如何看到“数组”的吗。
谢谢大家!

这里有很多问题:

  • 函数期望传入一个数组并返回一个字符串,但函数中没有任何内容执行该转换
  • 函数上的select是一个字符串,而不是数组,因此函数需要一个数组并获得一个字符串
  • 尝试以下方法来模拟reverse()JS函数:

    CREATE OR REPLACE FUNCTION SORT_FUNC(V array)
      RETURNS array
      LANGUAGE JAVASCRIPT
    AS
    $$
       if (V !== null) {
            return V.reverse();
          }
    $$;
    
    SELECT sort_func( array_construct('foo','bar') );
    

    这里有很多问题:

  • 函数期望传入一个数组并返回一个字符串,但函数中没有任何内容执行该转换
  • 函数上的select是一个字符串,而不是数组,因此函数需要一个数组并获得一个字符串
  • 尝试以下方法来模拟reverse()JS函数:

    CREATE OR REPLACE FUNCTION SORT_FUNC(V array)
      RETURNS array
      LANGUAGE JAVASCRIPT
    AS
    $$
       if (V !== null) {
            return V.reverse();
          }
    $$;
    
    SELECT sort_func( array_construct('foo','bar') );
    

    传递字符串不起作用是有道理的,谢谢,我对它进行了修改,将其也包括对数据的“arracy_构造”转换。传递字符串不起作用是有道理的,谢谢,我对它进行了修改,将其也包括对数据的“arracy_构造”转换。