clickhouse-io
Maîtriser l'analytique ClickHouse et l'optimisation des requêtes
Construisez des systèmes analytiques haute performance avec la base de données orientée colonnes ClickHouse. Apprenez des modèles éprouvés pour l'optimisation des requêtes, les vues matérialisées et les pipelines de données en temps réel.
Télécharger le ZIP du skill
Importer dans Claude
Allez dans Paramètres → Capacités → Skills → Importer un skill
Activez et commencez à utiliser
Tester
Utilisation de "clickhouse-io". Créer une table pour l'analytique de marché avec date, market_id, volume et trades
Résultat attendu:
Crée une table MergeTree avec partitionnement mensuel, un ordre approprié par date et market_id, et des types de données appropriés (Date, String, UInt64, UInt32) pour une compression et des performances de requête optimales.
Utilisation de "clickhouse-io". Optimiser une requête filtrant par volume puis date sur une grande table
Résultat attendu:
Réorganise la clause WHERE pour filtrer d'abord par les colonnes indexées (date, market_id), suggère d'utiliser quantile() pour les calculs de percentiles, et recommande d'ajouter des projections appropriées pour les modèles de filtrage courants.
Utilisation de "clickhouse-io". Configurer l'agrégation en temps réel pour les métriques horaires
Résultat attendu:
Crée une table cible AggregatingMergeTree avec des colonnes AggregateFunction, définit une vue matérialisée avec les fonctions sumState/countState/uniqState, et fournit le modèle de requête utilisant sumMerge/countMerge/uniqMerge.
Audit de sécurité
SûrThis skill contains documentation and code examples for ClickHouse database usage. Static analyzer flagged 86 patterns that are all false positives: backticks in markdown denote SQL code blocks (not shell execution), environment variable references are configuration examples, and system table queries are legitimate ClickHouse monitoring features. No executable code or security risks present.
Score de qualité
Ce que vous pouvez construire
Ingénieur de données concevant une plateforme d'analytique
Concevoir des schémas de tables évolutifs et implémenter des pipelines d'ingestion de données efficaces pour le suivi d'événements à haut volume et l'analytique utilisateur.
Développeur backend optimisant des requêtes
Apprendre les modèles de requêtes spécifiques à ClickHouse pour réduire la latence sur les grands jeux de données et implémenter des stratégies d'indexation appropriées.
Analyste créant des tableaux de bord en temps réel
Utiliser des vues matérialisées et des modèles de pré-agrégation pour alimenter des requêtes de tableau de bord en moins d'une seconde sur des milliards de lignes.
Essayez ces prompts
Créer un schéma de table ClickHouse pour stocker des événements d'activité utilisateur avec des colonnes pour user_id, event_type, timestamp et properties. Utiliser le moteur approprié pour la déduplication et partitionner par mois.
Examiner cette requête ClickHouse qui s'exécute lentement sur 100 millions de lignes ou plus. Suggérer des optimisations pour la clause WHERE, les index et les fonctions d'agrégation : [coller la requête]
Créer une vue matérialisée qui pré-agrège les utilisateurs actifs quotidiens et le nombre total d'événements par heure à partir d'une table d'événements. Inclure le schéma de la table cible et la définition de la vue matérialisée.
Concevoir un pipeline ETL pour synchroniser les données de PostgreSQL vers ClickHouse toutes les heures. Inclure la logique d'extraction et de transformation, ainsi que les modèles d'insertion par lots avec gestion des erreurs.
Bonnes pratiques
- Partitionner les tables par temps (mois ou jour) mais éviter un partitionnement excessif qui impacte les performances
- Ordonner les clés primaires par les colonnes les plus fréquemment filtrées avec la plus forte cardinalité en premier
- Utiliser des insertions par lots au lieu d'insertions de lignes individuelles pour une ingestion de données efficace
- Exploiter les vues matérialisées pour des métriques pré-agrégées afin d'atteindre une latence de requête inférieure à une seconde
Éviter
- Utiliser SELECT * au lieu de spécifier les colonnes requises - augmente l'utilisation des E/S et de la mémoire
- Effectuer de petites insertions fréquentes au lieu de regrouper en lots - cause une création excessive de partitions
- Compter sur le modificateur FINAL dans les requêtes - force une fusion de données coûteuse au moment de la requête
- Créer trop de JOINs dans les requêtes analytiques - dénormaliser les données pour de meilleures performances