Analytique en temps réelEntrepôt de donnéesCloudOSS
Vue d’ensemble
Prérequis
1
Créer une table
Le jeu de données des taxis de New York contient des informations sur des millions de courses, notamment le montant des pourboires, les péages, le type de paiement et bien plus encore. Créez une table pour stocker ces données.
-
Connectez-vous à la console SQL :
- Dans ClickHouse Cloud, sélectionnez un service dans le menu déroulant, puis SQL Console dans le menu de navigation de gauche.
- Pour une instance ClickHouse autogérée, connectez-vous à la console SQL à l’adresse
https://_hostname_:8443/play. Renseignez-vous auprès de votre administrateur ClickHouse.
-
Créez la table
tripssuivante dans la base de donnéesdefault:
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 stockés dans S3.
-
La commande suivante insère environ 2 000 000 lignes dans votre table
tripsà partir de deux fichiers distincts dans S3 :trips_1.tsv.gzettrips_2.tsv.gz: -
Attendez la fin de l’opération
INSERT. Le téléchargement des 150 Mo de données peut prendre un moment. -
Une fois l’insertion terminée, vérifiez qu’elle a réussi :
Cette requête devrait renvoyer 1 999 657 lignes.
3
Analyser les données
Exécutez quelques requêtes pour analyser les données. Explorez les exemples suivants ou essayez votre propre requête SQL.
-
Calculez le montant moyen des pourboires :
Sortie attendue
-
Calculez le coût moyen en fonction du nombre de passagers :
Sortie attendue
passenger_countest compris entre 0 et 9 : -
Calculez le nombre quotidien de courses prises en charge par quartier :
Résultat attendu
-
Calculez la durée de chaque trajet en minutes, puis regroupez les résultats par durée de trajet :
Sortie attendue
-
Affichez le nombre de courses prises en charge dans chaque quartier, ventilé par heure de la journée :
Sortie attendue
-
Récupérez les trajets vers les aéroports LaGuardia ou JFK :
Sortie attendue
4
Créer un dictionnaire
Un dictionary est un mapping de key-value pairs 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 s’appuient sur un fichier CSV contenant une ligne par quartier de New York.Les neighborhoods sont associés aux noms des cinq boroughs 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 table. La colonne
LocationID du fichier correspond aux colonnes pickup_nyct2010_gid et dropoff_nyct2010_gid de votre table trips :- Exécutez la commande SQL suivante, qui crée un dictionnaire nommé
taxi_zone_dictionaryet le peuple à partir du fichier CSV stocké dans S3. L’URL du fichier esthttps://datasets-documentation.s3.eu-west-3.amazonaws.com/nyc-taxi/taxi_zone_lookup.csv.
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 pouvez le configurer différemment. Pour plus de détails, consultez Actualisation des données du dictionnaire à l’aide de LIFETIME.-
Vérifiez que cela a fonctionné. La requête suivante doit renvoyer 265 lignes, soit une ligne pour chaque quartier :
-
Utilisez la fonction
dictGet(ou l’une de 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, correspond à la colonneLocationIDdetaxi_zone_dictionary). Par exemple, la requête suivante renvoie leBoroughdont leLocationIDest 132, correspondant à l’aéroport JFK :JFK se trouve dans le Queens. Notez que le temps nécessaire pour récupérer la valeur est pratiquement nul : -
Utilisez la fonction
dictHaspour vérifier si une clé est présente dans le dictionnaire. Par exemple, la requête suivante renvoie1(qui correspond à “true” dans ClickHouse) : -
La requête suivante renvoie 0, car 4567 n’est pas une valeur de
LocationIDdans le dictionnaire : -
Utilisez la fonction
dictGetpour récupérer le nom d’un borough dans une requête. Exemple :Cette requête calcule le nombre total de trajets en taxi par arrondissement qui se terminent aux aéroports de LaGuardia ou de JFK. Le résultat se présente comme suit ; notez qu’un nombre assez important de trajets ont un quartier de prise en charge inconnu :
5
Effectuer une jointure
Écrivez quelques requêtes qui joignent le dictionnaire
taxi_zone_dictionary à votre table trips.-
Commencez par une simple jointure
JOINqui fonctionne de manière similaire à la requête précédente sur les aéroports :La réponse est identique à celle de la requêtedictGet:
Notez que le résultat de la requête
JOIN ci-dessus est identique à celui de la requête précédente utilisant dictGetOrDefault (à ceci près que les valeurs Unknown ne sont pas incluses). En interne, ClickHouse appelle en fait la fonction dictGet pour le dictionnaire taxi_zone_dictionary, mais la syntaxe JOIN est plus familière aux développeurs SQL.- Cette requête renvoie les lignes correspondant aux 1 000 trajets dont le montant du pourboire est le plus élevé, puis effectue une jointure interne entre chaque ligne et le dictionnaire :
En règle générale, évitez d’utiliser fréquemment
SELECT * dans ClickHouse. Ne récupérez que les colonnes dont vous avez réellement besoin.Étapes suivantes
- Introduction aux index primaires dans ClickHouse : découvrez comment ClickHouse utilise des index primaires creux pour localiser efficacement les données pertinentes lors des requêtes.
- Intégrer une source de données externe : explorez les options d’intégration de sources de données, notamment les fichiers, Kafka, PostgreSQL, les pipelines de données et bien d’autres.
- Visualiser les données dans ClickHouse : connectez votre outil d’UI/BI préféré à ClickHouse.
- Référence SQL : parcourez les fonctions SQL disponibles dans ClickHouse pour transformer, traiter et analyser les données.