Passer au contenu principal
Il s’agit d’une extension de la fonction de table s3. Elle permet de traiter des fichiers provenant d’Amazon S3 et de Google Cloud Storage Google Cloud Storage en parallèle sur de nombreux nœuds d’un cluster spécifié. Sur le nœud initiateur, elle établit une connexion à tous les nœuds du cluster, résout les astérisques dans le chemin de fichier S3 et répartit dynamiquement chaque fichier. Sur le nœud worker, elle demande à l’initiateur la tâche suivante à traiter, puis la traite. Cette opération se répète jusqu’à ce que toutes les tâches soient terminées.

Syntaxe

s3Cluster(cluster_name, url[, NOSIGN | access_key_id, secret_access_key,[session_token]][, format][, structure][, compression_method][, headers][, extra_credentials])
s3Cluster(cluster_name, named_collection[, option=value [,..]])

Arguments

ArgumentDescription
cluster_nameNom d’un cluster utilisé pour constituer un ensemble d’adresses et de paramètres de connexion pour des serveurs distants et locaux.
urlChemin vers un fichier ou un ensemble de fichiers. Prend en charge les caractères génériques suivants en mode readonly : *, **, ?, {'abc','def'} et {N..M}, où N, M sont des nombres et abc, def des chaînes. Pour plus d’informations, voir Wildcards In Path.
NOSIGNSi ce mot-clé est fourni à la place des identifiants, aucune requête ne sera signée.
access_key_id and secret_access_keyClés indiquant les identifiants à utiliser avec l’endpoint donné. Facultatif.
session_tokenJeton de session à utiliser avec les clés fournies. Facultatif lorsque des clés sont transmises.
formatLe format du fichier.
structureStructure de la table. Format : 'column1_name column1_type, column2_name column2_type, ...'.
compression_methodCe paramètre est facultatif. Valeurs prises en charge : none, gzip ou gz, brotli ou br, xz ou LZMA, zstd ou zst. Par défaut, la méthode de compression est détectée automatiquement à partir de l’extension du fichier.
headersCe paramètre est facultatif. Permet de transmettre des en-têtes dans la requête S3. Utilisez le format headers(key=value), par exemple headers('x-amz-request-payer' = 'requester'). Voir ici pour un exemple d’utilisation.
extra_credentialsFacultatif. roleARN peut être transmis via ce paramètre. Voir ici pour un exemple.
Les arguments peuvent également être transmis à l’aide de collection nommée. Dans ce cas, url, access_key_id, secret_access_key, format, structure et compression_method fonctionnent de la même manière, et quelques paramètres supplémentaires sont pris en charge :
ArgumentDescription
filenameAjouté à l’url s’il est spécifié.
use_environment_credentialsActivé par défaut, permet de transmettre des paramètres supplémentaires à l’aide des variables d’environnement AWS_CONTAINER_CREDENTIALS_RELATIVE_URI, AWS_CONTAINER_CREDENTIALS_FULL_URI, AWS_CONTAINER_AUTHORIZATION_TOKEN, AWS_EC2_METADATA_DISABLED.
no_sign_requestDésactivé par défaut.
expiration_window_secondsLa valeur par défaut est 120.

Valeur retournée

Une table ayant la structure spécifiée pour lire ou écrire des données dans le fichier spécifié.

Exemples

Sélectionnez les données de tous les fichiers contenus dans les dossiers /root/data/clickhouse et /root/data/database/, en utilisant tous les nœuds du cluster cluster_simple :
SELECT * FROM s3Cluster(
    'cluster_simple',
    'http://minio1:9001/root/data/{clickhouse,database}/*',
    'minio',
    'ClickHouse_Minio_P@ssw0rd',
    'CSV',
    'name String, value UInt32, polygon Array(Array(Tuple(Float64, Float64)))'
) ORDER BY (name, value, polygon);
Comptez le nombre total de lignes de tous les fichiers du cluster cluster_simple :
Si votre liste de fichiers contient des plages de nombres avec des zéros initiaux, utilisez la syntaxe avec des accolades pour chaque chiffre séparément, ou utilisez ?.
Pour les cas d’usage en production, il est recommandé d’utiliser des collections nommées. En voici un exemple :

CREATE NAMED COLLECTION creds AS
        access_key_id = 'minio',
        secret_access_key = 'ClickHouse_Minio_P@ssw0rd';
SELECT count(*) FROM s3Cluster(
    'cluster_simple', creds, url='https://s3-object-url.csv',
    format='CSV', structure='name String, value UInt32, polygon Array(Array(Tuple(Float64, Float64)))'
)

Accéder aux buckets privés et publics

Les utilisateurs peuvent utiliser les mêmes approches que celles décrites pour la fonction s3 ici.

Optimisation des performances

Pour plus de détails sur l’optimisation des performances de la fonction s3, consultez notre guide détaillé.
Dernière modification le 25 juin 2026