Ce pilote est en cours de développement actif. Certaines fonctionnalités ODBC ne sont peut-être pas encore entièrement implémentées. La version actuelle
se concentre sur la fourniture d’une connectivité essentielle et des 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 à prioriser les nouvelles fonctionnalités et améliorations. Si vous rencontrez
des limitations, des fonctionnalités manquantes ou un comportement inattendu, veuillez partager vos observations ou demandes de fonctionnalités via
le gestionnaire d’issues à l’adresse
https://github.com/ClickHouse/clickhouse-odbc/issues
Installation sous 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. Il comprend le protocole, l’hôte, le port et le chemin facultatif.Username: le nom d’utilisateur utilisé pour l’authentification auprès du serveur ClickHouse.Password: le mot de passe associé au nom d’utilisateur spécifié. S’il n’est pas fourni, le pilote se connecte sans authentification par mot de passe.Database: la base de données par défaut à utiliser pour la connexion.Timeout: la durée maximale (en secondes) pendant laquelle le pilote attend une réponse du serveur avant d’abandonner la requête.ClientName: un 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 fait partie de l’en-tête User-Agent des requêtes HTTP générées par le pilote.Compression: active ou désactive la compression HTTP des charges utiles de requête et de réponse. 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 permettent à ClickHouse de se comporter 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 connaissent généralement pas certains comportements spécifiques à ClickHouse et peuvent produire des requêtes entraînant des erreurs ou des résultats inattendus. Consultez les 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 ClickHouse Cloud.
Intégration à Microsoft Power BI
- ClickHouse Connector (recommandé) Utilise ODBC en interne, mais prend en charge le mode DirectQuery. Dans ce mode, Power BI génère automatiquement des requêtes SQL et récupère uniquement les données nécessaires à chaque visualisation ou opération de filtrage.
- Connecteur ODBC Prend uniquement en charge le mode Importation. Power BI exécute la requête fournie par l’utilisateur (ou sélectionne la table entière) et importe l’intégralité du jeu de résultats dans Power BI. Les actualisations ultérieures réimportent l’ensemble du dataset.
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 de la norme SQL.
Paramètres ClickHouse activés par le paramètre de configuration SqlCompatibilitySettings
value accepte les valeurs NULL, cette requête échoue 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 et de la norme SQL pour ce type de conversion.
prefer_column_name_to_alias
ClickHouse permet de référencer des expressions dans 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 généreraient une erreur. Les problèmes sont particulièrement visibles lorsqu’un alias porte le même nom qu’une colonne. Par exemple :
value avg(value) doit-elle agréger ? Par défaut, ClickHouse privilégie l’alias, ce qui transforme de fait cette expression en
agrégation imbriquée, alors que ce n’est pas ce à quoi s’attendent la plupart des outils.
Cela pose rarement problème en soi, mais certains outils de BI génèrent des requêtes avec des sous-requêtes qui réutilisent des alias de colonnes. Par
exemple, Power BI génère souvent des requêtes similaires à la suivante :
C1 peuvent générer l’erreur suivante :
C1 comme une colonne de la
sous-requête. Afin de préserver un comportement similaire dans ClickHouse et de permettre l’exécution de telles requêtes 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. Toutefois, les utilisateurs dont 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 permettre à ce paramètre de configuration de fonctionner 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 requête :
SELECT individuelles.
Il existe plusieurs façons de résoudre ce problème.
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 le moyen le plus simple et recommandé de résoudre ce problème. Si
cela ne fonctionne pas dans votre cas, 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 également simple : mettez à jour les paramètres utilisateur afin qu’ils correspondent déjà à ceux que le pilote ODBC tente de définir.