Snowflake cloud data platform 雪花过程因任务执行而失败
从任务运行过程时会记录以下错误消息,但在手动运行过程时效果良好: 存储过程阶段\服务总线\订单中的执行错误:“查询 Statement.execute第4行位置的JSON响应中缺少“代码” 六十 程序如下所示:Snowflake cloud data platform 雪花过程因任务执行而失败,snowflake-cloud-data-platform,snowflake-task,Snowflake Cloud Data Platform,Snowflake Task,从任务运行过程时会记录以下错误消息,但在手动运行过程时效果良好: 存储过程阶段\服务总线\订单中的执行错误:“查询 Statement.execute第4行位置的JSON响应中缺少“代码” 六十 程序如下所示: CREATE OR REPLACE PROCEDURE "STAGE_SERVICEBUS_ORDER"(YEARMONTH VARCHAR) RETURNS VARCHAR(16777216) LANGUAGE JAVASCRIPT EXECUTE AS OWNER AS ' sno
CREATE OR REPLACE PROCEDURE "STAGE_SERVICEBUS_ORDER"(YEARMONTH VARCHAR)
RETURNS VARCHAR(16777216)
LANGUAGE JAVASCRIPT
EXECUTE AS OWNER
AS '
snowflake.createStatement({ sqlText: `Truncate table DM.STG.SERVICEBUS_ORDER`}).execute();
var copy_into_statement = `copy into DM.STG.SERVICEBUS_ORDER (FILE_NAME,OBJECT) from ( select metadata$filename, $1 from @SERVICEBUS_ORDER`+YEARMONTH+` ) file_format = (type = ''JSON'' strip_outer_array = false) force=true ON_ERROR = CONTINUE `;
snowflake.createStatement({ sqlText: copy_into_statement}).execute();
return ''Done'';
';
请尝试将
$1
替换为PARSE_JSON($1)
下面是一个来自Snowflake docs的示例,说明了在COPY语句中访问JSON文件元数据的解决方案:
-- Create a file format
CREATE OR REPLACE FILE FORMAT my_json_format
TYPE = 'json';
-- Create an internal stage
CREATE OR REPLACE STAGE mystage2
FILE_FORMAT = my_json_format;
-- Stage a data file
PUT file:///tmp/data1.json @mystage2;
-- Query the filename and row number metadata columns
-- and the regular data columns in the staged file
SELECT METADATA$FILENAME, METADATA$FILE_ROW_NUMBER, parse_json($1)
FROM @mystage2/data1.json.gz;
我也有类似的问题。根据Snowflake的支持,这是他们在新版本中引入的一个bug,他们计划在下一个版本中解决这个bug。