S3에서 연도와 월별로 파티션별 쓰기를 수행하는 방법 알아보기
S3 버킷의 경로를 다음과 같은 구조로 나누어 데이터를 내보내고 싶습니다.
- 2022
- 1
- 2
- …
- 12
- 2021
- 1
- 2
- …
- 12
이와 같은 방식입니다 …
답변
다음과 같은 ClickHouse 테이블을 가정하겠습니다:
CREATE TABLE sample_data (
`name` String,
`age` Int,
`time` DateTime
) ENGINE = MergeTree
ORDER BY
name항목 10000개를 추가합니다:
INSERT INTO
sample_data
SELECT
*
FROM
generateRandom(
'name String, age Int, time DateTime',
10,
10,
10
)
LIMIT
10000;S3 버킷 my_bucket에 원하는 구조를 만들려면 다음을 실행하십시오(참고로 이 예시에서는 파일을 Parquet 포맷으로 기록합니다):
INSERT INTO
FUNCTION s3(
'https://s3-host:4321/my_bucket/{_partition_id}/file.parquet.gz',
's3-access-key',
's3-secret-access-key',
Parquet,
'name String, age Int, time DateTime'
) PARTITION BY concat(
formatDateTime(time, '%Y'),
'/',
formatDateTime(time, '%m')
)
SELECT
name,
age,
time
FROM
sample_data
Query id: 55adcf22-f6af-491e-b697