QuickSight peut se connecter à une installation ClickHouse on-premise (23.11+) via l’interface MySQL, à l’aide de la source de données MySQL officielle et du mode Direct Query.
Configuration d’un serveur ClickHouse on-premise
Veuillez consulter la documentation officielle pour savoir comment configurer un serveur ClickHouse avec l’interface MySQL activée.
Outre l’ajout d’une entrée dans le config.xml du serveur
<clickhouse>
<mysql_port>9004</mysql_port>
</clickhouse>il est également obligatoire d’utiliser le hachage de mot de passe Double SHA1 pour l’utilisateur qui utilisera l’interface MySQL.
Génération, depuis le shell, d’un mot de passe aléatoire haché avec Double SHA1 :
PASSWORD=$(base64 < /dev/urandom | head -c16); echo "$PASSWORD"; echo -n "$PASSWORD" | sha1sum | tr -d '-' | xxd -r -p | sha1sum | tr -d '-'Le résultat devrait être semblable à ce qui suit :
LZOQYnqQN4L/T6L0
fbc958cc745a82188a51f30de69eebfc67c40ee4La première ligne correspond au mot de passe généré, et la deuxième au hash que nous pouvons utiliser pour configurer ClickHouse.
Voici un exemple de configuration pour mysql_user utilisant le hash généré :
/etc/clickhouse-server/users.d/mysql_user.xml
<users>
<mysql_user>
<password_double_sha1_hex>fbc958cc745a82188a51f30de69eebfc67c40ee4</password_double_sha1_hex>
<networks>
<ip>::/0</ip>
</networks>
<profile>default</profile>
<quota>default</quota>
</mysql_user>
</users>Remplacez l’entrée password_double_sha1_hex par votre propre hash double SHA1 généré.
QuickSight nécessite plusieurs paramètres supplémentaires dans le profile de l’utilisateur MySQL.
/etc/clickhouse-server/users.d/mysql_user.xml
<profiles>
<default>
<prefer_column_name_to_alias>1</prefer_column_name_to_alias>
<mysql_map_string_to_text_in_show_columns>1</mysql_map_string_to_text_in_show_columns>
<mysql_map_fixed_string_to_text_in_show_columns>1</mysql_map_fixed_string_to_text_in_show_columns>
</default>
</profiles>Cependant, il est recommandé de l’affecter à un autre profil, que votre utilisateur MySQL pourra utiliser à la place du profil par défaut.
Enfin, configurez le serveur ClickHouse pour qu’il écoute sur la ou les adresses IP souhaitées.
Dans config.xml, décommentez ce qui suit pour écouter sur toutes les adresses :
<listen_host>::</listen_host>Si vous disposez du binaire mysql, vous pouvez tester la connexion en ligne de commande.
En utilisant le nom d’utilisateur d’exemple (mysql_user) et le mot de passe (LZOQYnqQN4L/T6L0) indiqués ci-dessus, la commande serait :
mysql --protocol tcp -h localhost -u mysql_user -P 9004 --password=LZOQYnqQN4L/T6L0mysql> show databases;
+--------------------+
| name |
+--------------------+
| INFORMATION_SCHEMA |
| default |
| information_schema |
| system |
+--------------------+
4 rows in set (0.00 sec)
Read 4 rows, 603.00 B in 0.00156 sec., 2564 rows/sec., 377.48 KiB/sec.Connecter QuickSight à ClickHouse
Commencez par vous rendre sur https://quicksight.aws.amazon.com, ouvrez Datasets et cliquez sur "New dataset" :

Recherchez le connecteur MySQL officiel fourni avec QuickSight (nommé simplement MySQL) :

Renseignez vos informations de connexion. Notez que le port de l'interface MySQL est 9004 par défaut, et qu'il peut varier selon la configuration de votre serveur.

Vous avez maintenant deux possibilités pour récupérer les données depuis ClickHouse. Vous pouvez d'abord sélectionner une table dans la liste :

Vous pouvez également saisir une custom SQL pour récupérer vos données :

En cliquant sur "Edit/Preview data", vous devriez pouvoir consulter la structure de la table détectée automatiquement ou ajuster votre custom SQL, si c'est le mode d'accès que vous avez choisi pour les données :

Assurez-vous que le mode "Direct Query" est sélectionné dans le coin inférieur gauche de l'UI :

Vous pouvez maintenant publier votre jeu de données et créer une nouvelle visualisation !
Limitations connues
- L’importation SPICE ne fonctionne pas comme prévu ; veuillez utiliser le mode Direct Query à la place. Voir #58553.