#snowflake-cloud-data-platform #snowflake-task
#snowflake-облачная платформа данных #snowflake-задача
Вопрос:
Я тестирую SnowFlake. Для этого я создал экземпляр SnowFlake на GCP.
Одним из тестов является попытка ежедневной загрузки данных из интеграции ХРАНИЛИЩА.
Для этого я сгенерировал ИНТЕГРАЦИЮ ХРАНИЛИЩА и этап.
Я протестировал копию
copy into DEMO_DB.PUBLIC.DATA_BY_REGION from @sg_gcs_covid pattern='.*data_by_region.*'
и все идет нормально.
Теперь пришло время протестировать ежедневное планирование с помощью инструкции task. Я создал эту задачу:
CREATE TASK schedule_regioni
WAREHOUSE = COMPUTE_WH
SCHEDULE = 'USING CRON 42 18 9 9 * Europe/Rome'
COMMENT = 'Test Schedule'
AS
copy into DEMO_DB.PUBLIC.DATA_BY_REGION from @sg_gcs_covid pattern='.*data_by_region.*';
И я включил это:
alter task schedule_regioni resume;
Я не получил ошибок, но задача не загружает данные.
Чтобы решить проблему, мне пришлось поместить копию в хранимую процедуру и вставить вызов процедуры storede вместо копирования:
DROP TASK schedule_regioni;
CREATE TASK schedule_regioni
WAREHOUSE = COMPUTE_WH
SCHEDULE = 'USING CRON 42 18 9 9 * Europe/Rome'
COMMENT = 'Test Schedule'
AS
call sp_upload_c19_regioni();
Вопрос в том, является ли это желаемым поведением или проблемой (как я полагаю)?
Кто-нибудь может дать мне некоторую информацию об этом?
Комментарии:
1. Вам не должен понадобиться SP. Я думаю, у вас где-то проблема с разрешением. Есть ли у вас выходные данные задачи, когда она выполняется непосредственно с КОПИЕЙ В, а не в SP?
Ответ №1:
Я только что попробовал (но с интеграцией хранилища и этапом на AWS S3), и он отлично работает, также используя команду копирования внутри sql-части задачи, без вызова хранимой процедуры. Чтобы начать расследование проблемы, я бы проверил следующую информацию (возможно, для отладки я бы создал задачу, планирующую ее каждые несколько минут):
-
проверьте task_history и проверьте выполнение
select * from table(information_schema.task_history( scheduled_time_range_start=>dateadd('hour',-1,current_timestamp()), result_limit => 100, task_name=>'YOUR_TASK_NAME'));
-
если предыдущий шаг выполнен успешно, проверьте copy_history и убедитесь, что имя входного файла, целевая таблица и количество записей / ошибок соответствуют ожидаемым
SELECT * FROM TABLE (information_schema.copy_history(TABLE_NAME => 'YOUR_TABLE_NAME', start_time=> dateadd(hours, -1, current_timestamp()))) ORDER BY 3 DESC;
Проверьте, совпадают ли результаты с результатами, которые вы получаете при выполнении задачи с вызовом sp.
Пожалуйста, также подтвердите, что вы загружаете новые файлы, которые еще не загружены в вашу таблицу, с помощью команды COPY (в противном случае вам нужно указать параметр FORCE = TRUE в команде copy или удалить информацию метаданных, усекающую вашу целевую таблицу, чтобы перезагрузить те же файлы).
Комментарии:
1. Привет, я понял свою ошибку, я изменил задачу, но не возобновил ее! Спасибо за поддержку.