Ce pilote fait l’objet d’un développement actif. Certaines fonctionnalités ODBC ne sont peut-être pas encore entièrement implémentées. La version actuelle
met l’accent sur la connectivité essentielle et les fonctionnalités ODBC de base, tandis que des fonctionnalités supplémentaires sont prévues dans de futures
versions.Vos retours sont très précieux et contribuent à orienter la priorisation des nouvelles fonctionnalités et améliorations. Si vous rencontrez
des limitations, des fonctionnalités manquantes ou un comportement inattendu, veuillez partager vos observations ou vos demandes de fonctionnalité via
le suivi des issues à l’adresse
https://github.com/ClickHouse/clickhouse-odbc/issues
Installation sur Windows
Test
$reader.GetValue(0), la version de votre serveur ClickHouse devrait s’afficher.
Paramètres de configuration
Url: Spécifie l’endpoint HTTP(S) complet du serveur ClickHouse. Cela inclut le protocole, l’hôte, le port et le chemin facultatif.Username: Nom d’utilisateur utilisé pour l’authentification auprès du serveur ClickHouse.Password: Mot de passe associé au nom d’utilisateur indiqué. S’il n’est pas fourni, le pilote se connecte sans authentification par mot de passe.Database: Base de données par défaut à utiliser pour la connexion.Timeout: Temps maximal (en secondes) pendant lequel le pilote attend une réponse du serveur avant d’abandonner la requête.ClientName: Identifiant personnalisé envoyé au serveur ClickHouse dans les métadonnées du client. Utile pour le traçage ou pour distinguer le trafic provenant de différentes applications. Ce paramètre fera partie de l’en-tête User-Agent dans les requêtes HTTP produites par le pilote.Compression: Active ou désactive la compression HTTP pour les payloads des requêtes et des réponses. Lorsqu’elle est activée, elle peut réduire l’utilisation de la bande passante et améliorer les performances pour les jeux de résultats volumineux.SqlCompatibilitySettings: Active des paramètres de requête qui font que ClickHouse se comporte davantage comme une base de données relationnelle traditionnelle. Cela est utile lorsque les requêtes sont générées automatiquement par des outils tiers, par exemple Power BI. Ces outils ne tiennent généralement pas compte de certains comportements spécifiques à ClickHouse et peuvent produire des requêtes qui entraînent des erreurs ou des résultats inattendus. Voir Paramètres ClickHouse utilisés par le paramètre de configuration SqlCompatibilitySettings pour plus de détails.
- Un serveur ClickHouse installé localement sur une instance WSL
- Une instance de ClickHouse Cloud.
Intégration Microsoft Power BI
- Connecteur ClickHouse (recommandé) Utilise ODBC en arrière-plan, mais prend en charge le mode DirectQuery. Dans ce mode, Power BI génère automatiquement des requêtes SQL et ne récupère que les données nécessaires à chaque visualisation ou opération de filtrage.
- Connecteur ODBC Prend uniquement en charge le mode Import. Power BI exécute la requête fournie par l’utilisateur (ou sélectionne la table entière) et importe l’ensemble du jeu de résultats dans Power BI. Les actualisations suivantes réimportent l’intégralité du jeu de données.
Paramètres de compatibilité SQL
SqlCompatibilitySettings, qui active des paramètres de requête spécifiques
afin de rapprocher davantage le comportement de ClickHouse de celui du SQL standard.
Paramètres ClickHouse activés par le paramètre de configuration SqlCompatibilitySettings
value peut contenir des valeurs NULL, cette requête échouera avec le message :
cast_keep_nullable modifie le comportement de CAST afin de préserver la nullabilité de ses arguments. Cela
rapproche le comportement de ClickHouse de celui des autres bases de données ainsi que de la norme SQL pour ce type de conversion.
prefer_column_name_to_alias
ClickHouse permet de référencer des expressions de la même liste SELECT à l’aide de leurs alias. Par exemple, cette requête évite les
répétitions et est plus facile à écrire :
SELECT,
et de telles requêtes provoqueraient une erreur. Les problèmes sont particulièrement visibles lorsqu’un alias porte le même nom qu’une colonne. Par exemple :
value la fonction avg(value) doit-elle agréger ? Par défaut, ClickHouse privilégie l’alias, ce qui transforme effectivement cela en une
agrégation imbriquée, ce à quoi la plupart des outils ne s’attendent pas.
En soi, cela pose rarement problème, mais certains outils de BI génèrent des requêtes avec des sous-requêtes qui réutilisent des alias de colonne. Par
exemple, Power BI génère souvent des requêtes similaires à ce qui suit :
C1 peuvent entraîner l’erreur suivante :
C1 comme une colonne de la
sous-requête. Pour préserver un comportement similaire dans ClickHouse et permettre à de telles requêtes de s’exécuter sans erreur, le pilote ODBC
active prefer_column_name_to_alias.
Dans la plupart des cas, l’activation de ces paramètres ne devrait pas poser de problème. Cependant, les utilisateurs en lecture seule pour lesquels le paramètre readonly est défini sur 1
ne peuvent modifier aucun paramètre, même pour les requêtes SELECT. Pour ces utilisateurs, l’activation de SqlCompatibilitySettings entraînera
une erreur. La section suivante explique comment faire fonctionner ce paramètre de configuration pour les utilisateurs en lecture seule.
Utiliser les paramètres de compatibilité SQL avec des utilisateurs en lecture seule
SqlCompatibilitySettings activé, un utilisateur dont
le paramètre readonly est défini sur 1 rencontrera une erreur, car le pilote tente de modifier les paramètres de la requête :
SELECT individuelles.
Il existe plusieurs façons de corriger cela.
Option 1. Définir readonly sur 2
C’est l’option la plus simple. Définir readonly sur 2 permet de modifier les paramètres tout en maintenant l’utilisateur en
mode lecture seule.
readonly sur 2 est la méthode la plus simple et recommandée pour résoudre ce problème. Si
cela ne vous convient pas, utilisez la deuxième option.
Option 2. Modifier les paramètres utilisateur pour qu’ils correspondent à ceux définis par le pilote ODBC.
C’est tout aussi simple : mettez à jour les paramètres utilisateur pour qu’ils correspondent déjà à ce que le pilote ODBC essaie de définir.