Как использовать интеграцию хранилища копий в постановке задачи Snowflake?

#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-части задачи, без вызова хранимой процедуры. Чтобы начать расследование проблемы, я бы проверил следующую информацию (возможно, для отладки я бы создал задачу, планирующую ее каждые несколько минут):

  1. проверьте 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'));
      
  2. если предыдущий шаг выполнен успешно, проверьте 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. Привет, я понял свою ошибку, я изменил задачу, но не возобновил ее! Спасибо за поддержку.