Копия - https://community.snowflake.com/s/question/0D50Z00008lq9RGSAY/cannot-import-partitioned-parquet-files-to-a-database
В корзине S3 у меня есть разделенные файлы паркета, которые я хочу импортировать.Структура файлов s3://<bucket>/data/id1=<int>/id2=<int>/file.parquet
.Я нашел эту статью в качестве примера: https://www.snowflake.com/blog/how-to-load-terabytes-into-snowflake-speeds-feeds-and-techniques/.Но после некоторой модификации импортное решение не работает.Это SQL:
COPY INTO PARQUET from (
select
NULLIF(
regexp_replace (
METADATA$FILENAME,
'.*\\/id1=(.*)\\/.*',
'\\1'),
'__HIVE_DEFAULT_PARTITION__'
) as id1,
NULLIF(
regexp_replace (
METADATA$FILENAME,
'.*\\/id2=(.*)\\/.*',
'\\1'),
'__HIVE_DEFAULT_PARTITION__'
) as id2,
$1:other as other
from @test_parquet_stage/data/) pattern= '.*/id1=.*/id2=.*/.*';
Я получаю сообщение «Обнаружена рекурсивная загрузка файла, команда пропуска».У вас есть идеи, почему это не работает?Спасибо!
ОБНОВЛЕНИЕ:
После некоторых изменений я смог загрузить данные, но только с одним регулярным выражением.как показано в статье.Мой SQL:
select
NULLIF(
regexp_replace (
METADATA$FILENAME,
'.*\\/id1=(.*)\\/.*',
'\\1'),
'__HIVE_DEFAULT_PARTITION__'
) as id1,
$1:other as other
from @test_parquet_stage/data/) pattern= '.*/.*';
Но когда я добавляю секунду, возникает следующая ошибка:
Числовое значение '0 / id2 = 11' не распознается
Возможно, это что-то связанное с регулярным выражением, но я не знаю, что именно.