Passer au contenu principal
Fournit une interface de type table pour SELECT et INSERT de données depuis Google Cloud Storage. Nécessite le rôle IAM Storage Object User. Il s’agit d’un alias de la fonction de table s3. Si votre cluster comporte plusieurs répliques, vous pouvez utiliser la fonction s3Cluster (compatible avec GCS) à la place pour paralléliser les insertions.

Syntaxe

GCSLa fonction de table GCS s’intègre à Google Cloud Storage à l’aide de l’API XML GCS et de clés HMAC. Consultez la documentation sur l’interopérabilité de Google pour plus de détails sur l’endpoint et le HMAC.

Arguments

GCSLe chemin GCS se présente sous ce format, car l’endpoint de l’API XML de Google est différent de celui de l’API JSON :
et non https://storage.cloud.google.com.
Les arguments peuvent également être transmis à l’aide de named collections. Dans ce cas, url, format, structure et compression_method fonctionnent de la même manière, et quelques paramètres supplémentaires sont pris en charge :

Valeur renvoyée

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

Exemples

Sélection des deux premières lignes de la table depuis le fichier GCS https://storage.googleapis.com/my-test-bucket-768/data.csv :
Le même, mais à partir d’un fichier utilisant la méthode de compression gzip :

Utilisation

Supposons que nous disposions de plusieurs fichiers avec les URI suivantes sur GCS : Comptez le nombre de lignes dans les fichiers dont le nom se termine par un chiffre de 1 à 3 :
Comptez le nombre total de lignes dans tous les fichiers de ces deux répertoires :
Si votre liste de fichiers contient des plages de nombres avec des zéros non significatifs, utilisez la construction avec des accolades pour chaque chiffre séparément ou utilisez ?.
Comptez le nombre total de lignes dans les fichiers nommés file-000.csv, file-001.csv, … , file-999.csv:
Insérez les données dans le fichier test-data.csv.gz :
Insérez des données dans le fichier test-data.csv.gz à partir d’une table existante :
Le glob ** peut être utilisé pour parcourir récursivement les répertoires. Dans l’exemple ci-dessous, il récupérera récursivement tous les fichiers du répertoire my-test-bucket-768 :
Ce qui suit récupère les données de tous les fichiers test-data.csv.gz situés dans n’importe quel sous-dossier du répertoire my-test-bucket, de manière récursive :
Pour un usage en production, il est recommandé d’utiliser les collections nommées. Voici un exemple :

Écriture partitionnée

Si vous spécifiez une expression PARTITION BY lors de l’insertion de données dans la table GCS, un fichier distinct est créé pour chaque valeur de partition. Répartir les données dans des fichiers distincts permet d’améliorer l’efficacité des opérations de lecture. Exemples
  1. L’utilisation de l’identifiant de partition dans une clé crée des fichiers distincts :
Par conséquent, les données sont écrites dans trois fichiers : file_x.csv, file_y.csv et file_z.csv.
  1. L’utilisation de l’identifiant de partition dans le nom d’un bucket permet de créer des fichiers dans différents buckets :
Par conséquent, les données sont écrites dans trois fichiers répartis dans différents buckets : my_bucket_1/file.csv, my_bucket_10/file.csv et my_bucket_20/file.csv.
Dernière modification le 2 juillet 2026