Как вернуть результаты COPY INTO из блока сценариев в Snowflake ⇐ Python

Программы на Python
Anonymous
Как вернуть результаты COPY INTO из блока сценариев в Snowflake

Сообщение Anonymous »

Как заставить блок сценария Snowflake/Snowpark возвращать результат оператора COPY INTO?
В нашем ELT-конвейере я использую Snowpark для копирования данных со стадии S3 в таблицу ежедневно, вот так:

Код: Выделить всё

sql_copy_into = f"""
COPY INTO {target_table}
FROM {stage_file_name_full_path}
FILE_FORMAT = (
TYPE = CSV
COMPRESSION = 'AUTO'
FIELD_DELIMITER = {field_delimiter}
)
ON_ERROR = CONTINUE;
"""

response = session.sql(sql_copy_into)
results = response.collect()
Теперь я хочу сохранить результаты COPY INTO в таблице журналирования, которая пока работает хорошо.
Однако, как только я перенесу COPY INTO в блок сценария Snowflake:

Код: Выделить всё

sql_copy_into = f"""
BEGIN

TRUNCATE TABLE {target_table};

COPY INTO {target_table}
FROM {stage_file_name_full_path}
FILE_FORMAT = (...)
ON_ERROR = CONTINUE;

END;
"""

response = session.sql(sql_copy_into)
results = response.collect()
Затем я получаю результаты в виде

Код: Выделить всё

[Row(anonymous block=None)]
Похоже, что блок сценария ничего не возвращает.
Как заставить блок сценария возвращать результат оператора COPY INTO?
Я читал о команде RETURN, но не могу понять, как она может мне здесь помочь.
Единственный вариант, который я вижу, это для отправки двух разных операторов SQL: один для TRUNCATE, а другой для COPY INTO. Тогда я мог бы избежать BEGIN/END. Но должен быть лучший способ.
Любые подсказки приветствуются!

Подробнее здесь: https://stackoverflow.com/questions/790 ... -snowflake

Вернуться в «Python»