Я думаю о нескольких способах сделать это, но хотел бы получить информацию об эффективных вариантах. Проблема здесь заключается в следующем. Мне нужно выполнить некоторые действия 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, но если я не сделаю задачу для каждой процедуры, я потеряю детализацию возможности контролировать загружаемые данные в каждую таблицу.
Поскольку для этого действительно потребуется всего одна процедура, проходящая по моим таблицам. Но эти таблицы могут быть довольно объемными изо дня в день.
Это лучший способ?