Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

Comment effectuer des écritures partitionnées par année et par mois sur S3 ?

Découvrez comment effectuer des écritures partitionnées par année et par mois sur S3

Je souhaite exporter des données en organisant le chemin dans le bucket S3 afin d'obtenir une structure comme :

  • 2022
    • 1
    • 2
    • 12
  • 2021
    • 1
    • 2
    • 12

et ainsi de suite…

Réponse

Étant donné la table ClickHouse :

CREATE TABLE sample_data (
    `name` String,
    `age` Int,
    `time` DateTime
) ENGINE = MergeTree
ORDER BY
    name

Ajoutez 10 000 entrées :

INSERT INTO
    sample_data
SELECT
    *
FROM
    generateRandom(
        'name String, age Int, time DateTime',
        10,
        10,
        10
    )
LIMIT
    10000;

Exécutez cette commande pour créer la structure souhaitée dans le bucket S3 my_bucket (notez que cet exemple écrit des fichiers au format 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
Navigation