Skip to main content

Vue d’ensemble

Apprenez à ingérer et à interroger des données dans ClickHouse à l’aide du jeu de données d’exemple des taxis de New York.

Prérequis

Vous devez avoir accès à un service ClickHouse actif pour suivre ce tutoriel. Pour obtenir les instructions, consultez le guide de Démarrage rapide.
1

Créer une nouvelle table

Le jeu de données des taxis de New York contient des informations sur des millions de courses, avec des colonnes telles que le montant du pourboire, les péages, le type de paiement, etc. Créez une table pour stocker ces données.
  1. Connectez-vous à la console SQL :
    • Pour ClickHouse Cloud, sélectionnez un service dans le menu déroulant, puis SQL Console dans le menu de navigation de gauche.
    • Pour un ClickHouse autogéré, connectez-vous à la console SQL à l’adresse https://_hostname_:8443/play. Renseignez-vous auprès de votre administrateur ClickHouse pour obtenir les détails.
  2. Créez la table trips suivante dans la base de données default :
2

Ajouter le jeu de données

Maintenant que vous avez créé une table, ajoutez les données des taxis de New York à partir de fichiers CSV dans S3.
  1. La commande suivante insère environ 2 000 000 lignes dans votre table trips à partir de deux fichiers distincts dans S3 : trips_1.tsv.gz et trips_2.tsv.gz :
  2. Attendez la fin de l’INSERT. Le téléchargement des 150 MB de données peut prendre un certain temps.
  3. Une fois l’insert terminé, vérifiez qu’il a bien fonctionné :
    Cette requête doit renvoyer 1,999,657 lignes.
3

Analyser les données

Exécutez des requêtes pour analyser les données. Explorez les exemples suivants ou essayez votre propre requête SQL.
  • Calculez le montant moyen des pourboires :

  • Calculez le coût moyen selon le nombre de passagers :

    Le passenger_count est compris entre 0 et 9 :

  • Calculez le nombre de prises en charge quotidiennes par quartier :

  • Calculez la durée de chaque trajet en minutes, puis regroupez les résultats en fonction de la durée du trajet :

  • Affichez le nombre de prises en charge dans chaque quartier, réparti par heure de la journée :

  1. Récupérez les trajets à destination des aéroports de LaGuardia ou de JFK :

4

Créer un Dictionary

Un dictionnaire est une correspondance de paires clé-valeur stockées en mémoire. Pour plus de détails, voir DictionariesCréez un dictionnaire associé à une table dans votre service ClickHouse. La table et le dictionnaire sont basés sur un fichier CSV contenant une ligne par quartier de New York City.Les quartiers sont associés aux noms des cinq arrondissements de New York (Bronx, Brooklyn, Manhattan, Queens et Staten Island), ainsi qu’à l’aéroport de Newark (EWR).Voici un extrait du fichier CSV que vous utilisez, présenté sous forme de tableau. La colonne LocationID du fichier correspond aux colonnes pickup_nyct2010_gid et dropoff_nyct2010_gid de votre table trips :
  1. Exécutez la commande SQL suivante, qui crée un dictionnaire nommé taxi_zone_dictionary et alimente le dictionnaire à partir du fichier CSV stocké dans S3. L’URL du fichier est https://datasets-documentation.s3.eu-west-3.amazonaws.com/nyc-taxi/taxi_zone_lookup.csv.
Définir LIFETIME à 0 désactive les mises à jour automatiques afin d’éviter tout trafic inutile vers notre bucket S3. Dans les autres cas, vous pouvez le configurer autrement. Pour plus de détails, consultez Actualisation des données du dictionnaire avec LIFETIME.
  1. Vérifiez que tout a bien fonctionné. La requête suivante doit renvoyer 265 lignes, soit une ligne pour chaque quartier :
  2. Utilisez la fonction dictGet (ou ses variantes) pour récupérer une valeur dans un dictionnaire. Indiquez le nom du dictionnaire, la valeur souhaitée et la clé (qui, dans notre exemple, est la colonne LocationID de taxi_zone_dictionary). Par exemple, la requête suivante renvoie le Borough dont le LocationID est 132, ce qui correspond à l’aéroport JFK) :
    JFK se trouve dans le Queens. Notez que le temps nécessaire pour récupérer la valeur est quasiment nul :
  3. Utilisez la fonction dictHas pour vérifier si une clé est présente dans le dictionnaire. Par exemple, la requête suivante renvoie 1 (ce qui correspond à “true” dans ClickHouse) :
  4. La requête suivante renvoie 0, car 4567 n’est pas une valeur de LocationID dans le dictionnaire :
  5. Utilisez la fonction dictGet pour obtenir le nom d’un borough dans une requête. Par exemple :
    Cette requête calcule le nombre de courses de taxi par arrondissement qui se terminent à l’aéroport de LaGuardia ou à celui de JFK. Le résultat se présente comme suit, et notez qu’il y a pas mal de trajets dont le quartier de prise en charge est inconnu :
5

Effectuer une jointure

Écrivez quelques requêtes qui joignent taxi_zone_dictionary à votre table trips.
  1. Commencez par un JOIN simple, similaire à la requête précédente sur l’aéroport :
    La réponse est identique à celle de la requête dictGet :
Notez que le résultat de la requête JOIN ci-dessus est identique à celui de la requête précédente utilisant dictGetOrDefault (sauf que les valeurs Unknown ne sont pas incluses). En arrière-plan, ClickHouse appelle en réalité la fonction dictGet pour le dictionnaire taxi_zone_dictionary, mais la syntaxe JOIN est plus familière aux développeurs SQL.
  1. Cette requête renvoie les lignes correspondant aux 1000 trajets avec le montant de pourboire le plus élevé, puis effectue une INNER JOIN entre chaque ligne et le dictionnaire :
En général, évitez d’utiliser trop souvent SELECT * dans ClickHouse. Récupérez uniquement les colonnes dont vous avez réellement besoin.

Prochaines étapes

Pour en savoir plus sur ClickHouse, consultez la documentation suivante :
Last modified on June 25, 2026