Необходимо выбрать имя сегмента при чтении из этапа s3 - PullRequest
0 голосов
/ 18 июня 2020

Читаю из папки S3 в снежинке через stage. В ведре в s3 есть несколько папок (или объектов, если мы хотим его назвать). Папка находится в ведре по дате

date=2020-06-01
date=2020-06-02
date=2020-06-03
date=2020-06-04
date=2020-06-05

Я использую запрос ниже, чтобы прочитать всю папку сразу. который просто работает нормально.

select raw.$1:name name,
       raw.$1:id ID
from
@My_Bucket/student_date/
(FILE_FORMAT => PARQUET, 
 PATTERN =>'.*date=.*\gz.parquet') raw
;   

Теперь я хочу выбрать имя папки в моем запросе, есть ли способ сделать это.

как результат, содержащий

name | id | date..

просьба предлагать

1 Ответ

4 голосов
/ 18 июня 2020

Snowflake имеет встроенное поле метаданных, в котором указывается полное имя файла, включая путь. Вы должны иметь возможность выполнить следующий запрос:

select raw.$1:name name,
       raw.$1:id ID,
       METADATA$FILENAME 
from
@My_Bucket/student_date/
(FILE_FORMAT => PARQUET, 
 PATTERN =>'.*date=.*\gz.parquet') raw
; 

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

SPLIT_PART(METADATA$FILENAME, '/', 4)

Надеюсь, это поможет.

...