Snowflake cloud data platform 文字值和表值的雪花行为不同

Snowflake cloud data platform 文字值和表值的雪花行为不同,snowflake-cloud-data-platform,Snowflake Cloud Data Platform,我有一个函数AVGF,它假设输出逗号分隔序列的平均值 CREATE OR REPLACE FUNCTION AVGF (STR VARCHAR) RETURNS VARCHAR LANGUAGE JAVASCRIPT AS $$ var str_array = STR.split(","); var total = 0.0 for (i = 0; i < str_array.length; i += 1) { tota

我有一个函数AVGF,它假设输出逗号分隔序列的平均值

CREATE OR REPLACE FUNCTION AVGF (STR VARCHAR)
  RETURNS VARCHAR
  LANGUAGE JAVASCRIPT
  AS $$
    var str_array = STR.split(",");
    var total = 0.0
    for (i = 0; i < str_array.length; i += 1) {
        total += parseFloat(str_array[i]);
    }
    return total/str_array.length;
  $$
  ;
然而,当我把它放在桌子上使用时,它就不起作用了

SELECT AVGF(concat(TO_CHAR(ic.col1) ,',',TO_CHAR(ic.col2) )::STRING)
from tab

Output: JavaScript execution error: Uncaught TypeError: Cannot read property 'split' of undefined in AVGF at '  var str_array = STR.split(",");' position 21
其中tab是带有col1(数字)和col2(浮动)的表


有什么原因和解决方案吗?

这是一个强制转换问题,请按以下所述修改函数以使其正常工作

CREATE OR REPLACE FUNCTION AVGF (STR VARCHAR)
  RETURNS VARCHAR
  LANGUAGE JAVASCRIPT
  AS $$
    var str_array = String(STR).split(",");
    var total = 0.0
    for (i = 0; i < str_array.length; i += 1) {
        total += parseFloat(str_array[i]);
    }
    return total/str_array.length;
  $$
  ;
创建或替换函数AVGF(STR VARCHAR)
返回VARCHAR
语言JAVASCRIPT
作为$$
var str_array=String(str).split(“,”);
var总计=0.0
对于(i=0;i
CREATE OR REPLACE FUNCTION AVGF (STR VARCHAR)
  RETURNS VARCHAR
  LANGUAGE JAVASCRIPT
  AS $$
    var str_array = String(STR).split(",");
    var total = 0.0
    for (i = 0; i < str_array.length; i += 1) {
        total += parseFloat(str_array[i]);
    }
    return total/str_array.length;
  $$
  ;