为何Snowflake任务无法向含TIMESTAMP_NTZ(9)列的表插入数据
Snowflake任务调用存储过程无数据写入异常问题
在Snowflake中开发了一套数据加载逻辑:通过存储过程从视图读取数据插入目标表。手动调用存储过程时数据能正常写入,但通过任务调用该存储过程时,仅当目标表包含TIMESTAMP_NTZ(9)类型列时会出现无数据写入的情况,且查询information_schema.task_history()未发现任何报错信息。切换存储过程的EXECUTE AS OWNER与CALLER两种执行模式后,问题依然存在。
相关对象完整代码
CREATE OR REPLACE TABLE TEST_DB.TEST_SCHEMA.TEST_DATE_VALUE ( NUMBER VARCHAR, TEST_DATE TIMESTAMP_NTZ(9) ); create or replace view TEST_DB.TEST_SCHEMA.V_INSERT_TEST_DATE_VALUE( NUMBER, TEST_DATE ) as SELECT TOP 10 T0.NUMBER,T0.TEST_DATE FROM TEST_DB.TEST_SCHEMA.TEST_SOURCE_VIEW AS T0 WHERE T0.TEST_DATE is NOT NULL; CREATE OR REPLACE PROCEDURE TEST_DB.TEST_SCHEMA.SP_LOAD_TEST_DATE_VALUE("SRC_TABLE_NAME" VARCHAR(16777216)) RETURNS VARCHAR(16777216) LANGUAGE JAVASCRIPT EXECUTE AS OWNER AS ' var ret = -1; var V_QUOTE_SRC_TABLE_NAME = "''" + SRC_TABLE_NAME + "''"; var V_INSERT_VIEW_NAME = "V_INSERT_" + SRC_TABLE_NAME; if (1==1) { var V_INSERT = "INSERT INTO TEST_DB.TEST_SCHEMA." + SRC_TABLE_NAME + " SELECT * FROM TEST_DB.TEST_SCHEMA."+V_INSERT_VIEW_NAME ; var V_EXEC_INSERT = snowflake.createStatement( {sqlText: V_INSERT} ); var V_RESULT_EXEC_INSERT = V_EXEC_INSERT.execute(); return ret; } else return 100 ; '; call TEST_DB.TEST_SCHEMA.SP_LOAD_TEST_DATE_VALUE('TEST_DATE_VALUE'); create or replace task TEST_DB.TEST_SCHEMA.TASK_ESOPDASH_SP_LOAD_TEST_DATE_VALUE warehouse=W_ESOPDASH_DEVELOPER schedule='USING CRON 45 2 1 * * UTC' TIMESTAMP_INPUT_FORMAT='YYYY-MM-DD HH24' as call TEST_DB.TEST_SCHEMA.SP_LOAD_TEST_DATE_VALUE('TEST_DATE_VALUE'); EXECUTE TASK TASK_ESOPDASH_SP_LOAD_TEST_DATE_VALUE;
手动调用存储过程时的日期值

内容的提问来源于stack exchange,提问作者Shruti
相关产品推荐
相关产品推荐

