Vue d’ensemble
Démarrer ClickHouse
Créer une table
Ajouter le jeu de données
Installer pg_clickhouse
Connecter pg_clickhouse
Si vous utilisez la ClickHouse Cloud console pour exécuter du SQL, accordez à l’utilisateur admin de la console l’accès au serveur foreign :
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 :
-
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éfinirLIFETIMEsur 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 :
Cette requête calcule le nombre de trajets en taxi par borough qui se terminent soit à l’aéroport de LaGuardia, soit à l’aéroport JFK. Notez qu’un certain nombre de trajets ont un quartier de prise en charge inconnu.
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êteJOINci-dessus est identique à celui de la requêtedictGetci-dessus (à l’exception des valeursUnknown, qui ne sont pas incluses). En coulisses, ClickHouse appelle en réalité la fonctiondictGetpour le dictionnairetaxi_zone_dictionary, mais la syntaxeJOINest 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.