Снежинка не справляется с выполнением задачи - PullRequest
2 голосов
/ 03 апреля 2020

Следующее сообщение об ошибке регистрируется при запуске процедуры из задачи, но работает нормально, когда я запускаю ее вручную:

Ошибка выполнения в процедуре сохранения STAGE_SERVICEBUS_ORDER: «Код запроса» отсутствует из JSON response В Statement.execute, строка 4, позиция 60.

процедура выглядит следующим образом:

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 Ответ

0 голосов
/ 03 апреля 2020

Пожалуйста, попробуйте заменить $1 на PARSE_JSON($1).

Вот пример из документации Snowflake, иллюстрирующий это решение для доступа к метаданным файла JSON в операторе COPY:

-- 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;

https://docs.snowflake.com/en/user-guide/querying-metadata.html#example -2-querying-the-metadata -columns-для-a- json -file

...