Jeu de données
Exploration des données
clickhouse-local, un petit outil en ligne de commande
qui fournit l’intégralité du moteur ClickHouse, mais vous pouvez aussi utiliser
ClickHouse Cloud, clickhouse-client ou même chDB.
Exécutez la requête suivante pour sélectionner les données du bucket S3 où elles sont stockées :
Query
Response
ᴺᵁᴸᴸ. Nous pouvons donc ajouter quelques conditions supplémentaires
à notre requête afin d’obtenir des données plus exploitables :
Query
DESCRIBE :
Query
Response
Chargement des données dans ClickHouse
clickhouse-server
ou ClickHouse Cloud.
Pour créer la table, exécutez la commande suivante :
Query
LowCardinality
pour plusieurs colonnes, ce qui modifie la représentation interne de ces types de données
pour utiliser un encodage par dictionnaire. L’exploitation de données encodées par dictionnaire
améliore considérablement les performances des requêtes SELECT dans de nombreuses applications.
De plus, deux colonnes UInt32 MATERIALIZED, mercator_x et mercator_y, sont créées
pour projeter les coordonnées lat/lon dans la projection Web Mercator
afin de faciliter le découpage de la carte en tuiles :
longitude + 180décale la plage de longitude de [-180, 180] vers [0, 360]- La division par 360 normalise cette valeur pour obtenir un nombre compris entre 0 et 1
- La multiplication par
0xFFFFFFFF(hexadécimal correspondant à la valeur maximale d’un entier non signé sur 32 bits) met cette valeur normalisée à l’échelle sur toute la plage d’un entier 32 bits
latitude + 90décale la latitude de [-90, 90] vers [0, 180]- La division par 360 puis la multiplication par pi() convertissent la valeur en radians pour les fonctions trigonométriques
- La partie
log(tan(...))constitue le cœur de la formule de projection de Mercator - La multiplication par
0xFFFFFFFFmet la valeur à l’échelle sur toute la plage d’entiers 32 bits
MATERIALIZED garantit que ClickHouse calcule les valeurs de ces
colonnes lorsque nous INSERT les données, sans avoir à spécifier ces colonnes (qui ne font pas
partie du schéma de données d’origine) dans l’instruction `INSERT.
La table est ordonnée par mortonEncode(mercator_x, mercator_y), ce qui produit une
courbe de remplissage de l’espace en ordre Z pour mercator_x, mercator_y, afin d’améliorer considérablement
les performances des requêtes géospatiales. Cet ordonnancement selon une courbe en Z garantit que les données sont
physiquement organisées en fonction de leur proximité spatiale :
minmax sont également créés pour accélérer les recherches :