Vue d’ensemble
Démarrer ClickHouse
Créer une table
Ajouter le jeu de données
Installer pg_clickhouse
Connecter pg_clickhouse
password.
Ajoutez maintenant la table taxi en important simplement toutes les tables de la base de données ClickHouse distante dans un schéma Postgres :
\det+ pour l’afficher :
\d pour afficher toutes les colonnes :
COUNT(), à ClickHouse, de sorte qu’elle s’y exécute et ne
renvoie qu’une seule ligne à Postgres. Utilisez EXPLAIN pour le constater :
Analyser les données
-
Calculez le montant moyen des pourboires :
-
Calculez le coût moyen selon le nombre de passagers :
-
Calculez le nombre de prises en charge quotidiennes par quartier :
-
Calculez la durée de chaque trajet en minutes, puis regroupez les résultats par
durée du trajet :
-
Affichez le nombre de prises en charge dans chaque quartier, réparti selon l’heure de la journée :
-
Définissez le fuseau horaire d’affichage sur celui de New York et récupérez les trajets vers les
aéroports de LaGuardia ou JFK :
Créer un dictionnaire
LocationID du fichier correspond aux colonnes pickup_nyct2010_gid et
dropoff_nyct2010_gid de votre table des trajets :
| LocationID | Borough | Zone | service_zone |
|---|---|---|---|
| 1 | EWR | Newark Airport | EWR |
| 2 | Queens | Jamaica Bay | Boro Zone |
| 3 | Bronx | Allerton/Pelham Gardens | Boro Zone |
| 4 | Manhattan | Alphabet City | Yellow Zone |
| 5 | Staten Island | Arden Heights | Boro Zone |
-
Toujours dans Postgres, utilisez la fonction
clickhouse_raw_querypour créer un [dictionnaire] ClickHouse nommétaxi_zone_dictionaryet le renseigner à partir du fichier CSV stocké dans S3 :
Définir
LIFETIME sur 0 désactive les mises à jour automatiques afin d’éviter un
trafic inutile vers notre bucket S3. Dans d’autres cas, vous pourriez le configurer
autrement. Pour plus de détails, consultez Actualisation des données du dictionnaire avec
LIFETIME.- Importez-le maintenant :
- Vérifiez que nous pouvons l’interroger :
- Excellent. Utilisez maintenant la fonction
dictGetpour récupérer le nom d’un borough dans une requête. Cette requête additionne le nombre de trajets en taxi par borough qui se terminent à l’aéroport de LaGuardia ou à JFK :
Effectuer une jointure
taxi_zone_dictionary et votre
table trips.
-
Commencez par un
JOINsimple, similaire à la requête précédente sur l’aéroport ci-dessus :
Notez que le résultat de la requête
JOIN ci-dessus est identique à celui de la
requête dictGet ci-dessus (à l’exception des valeurs Unknown, qui ne sont pas incluses). En coulisses,
ClickHouse appelle en réalité la fonction dictGet pour
le dictionnaire taxi_zone_dictionary, mais la syntaxe JOIN est plus
familière pour les développeurs SQL.-
Cette requête renvoie les lignes correspondant aux 1000 trajets avec le montant de
pourboire le plus élevé, puis associe chaque ligne au dictionnaire via une jointure interne :
En règle générale, nous évitons d’utiliser
SELECT * dans PostgreSQL et ClickHouse. Vous
ne devez récupérer que les colonnes dont vous avez réellement besoin.