Снежинка COPY INTO от AWS S3, включая функции - PullRequest
1 голос
/ 16 апреля 2020

Я думаю о нескольких способах сделать это, но хотел бы получить информацию об эффективных вариантах. Проблема здесь заключается в следующем. Мне нужно выполнить некоторые действия ETL, используя COPY INTO, в базу данных, которую я настроил для Snapshot. Который определяется как прошедший день. Сцена здесь - это ведро AWS S3. Для захвата самых последних файлов мне нужно внедрить filepath в оператор или шаблон from.

CREATE OR REPLACE TASK ETL_1
WAREHOUSE = W1
SCHEDULE = 'USING CRON 30 */4 * * *  America/Los_Angeles'
AS
copy into DB.SCHEMA.TABLE1
  from @STAGE/TABLE1
  pattern='.*/.*/.*[.]csv'
  on_error = 'continue'
  file_format = csv_etl;

Используя что-то подобное, я получаю путь к файлу, который мне нужен

CREATE OR REPLACE FUNCTION CURRENT_DATE_FILEPATH()
    returns string
    as 
    as REPLACE(CURRENT_DATE(), '-', '/')
    ;

This вернет формат даты, например «2020/04/15», который я затем хочу каким-то образом использовать в формате сцены, чтобы он был похож на @ STAGE / TABLE1 / 2020/04/15 / *

Есть ли способ включить это в мою копию в выписке?

Я могу сделать это в процедуре, используя функциональность Snowflake Javascript, но если я не сделаю задачу для каждой процедуры, я потеряю детализацию возможности контролировать загружаемые данные в каждую таблицу.

Поскольку для этого действительно потребуется всего одна процедура, проходящая по моим таблицам. Но эти таблицы могут быть довольно объемными изо дня в день.

Это лучший способ?

1 Ответ

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

В итоге я превратил это в массовую JavaScript процедуру. Не идеально, но у меня достаточно обработки ошибок, чтобы она работала так, как я планировал.

...