Évaluation paresseuse
Exemple : évaluation paresseuse vs évaluation immédiate
Avantages de l’évaluation paresseuse
- Optimisation des requêtes : Plusieurs opérations sont compilées en une seule requête SQL optimisée
- Pushdown des filtres : Les filtres sont appliqués au niveau de la source de données
- Élagage des colonnes : Seules les colonnes nécessaires sont lues
- Décisions différées : Le moteur d’exécution peut être choisi au moment de l’exécution
- Inspection du plan : Vous pouvez inspecter/déboguer la requête avant de l’exécuter
Déclencheurs d’exécution
Déclencheurs automatiques
Exemples :
Opérations qui restent paresseuses
Exemples :
Exécution en trois phases
Phase 1 : construction de la requête SQL (paresseuse)
Phase 2 : Moment de l’exécution
Phase 3 : opérations sur le DataFrame (le cas échéant)
Afficher les plans d’exécution
explain() pour voir ce qui sera exécuté :
Query
Response
verbose=True pour plus de détails :
Mise en cache
Fonctionnement du cache
Invalidation du cache
Gestion manuelle du cache
Combiner des opérations SQL et pandas
Opérations compatibles avec SQL
filter(),where()select()groupby(),agg()sort(),orderby()limit(),offset()join(),union()distinct()- Opérations sur les colonnes (calculs, comparaisons, méthodes sur les chaînes de caractères)
Opérations uniquement avec Pandas
apply()avec des fonctions personnaliséespivot_table()avec des agrégations complexesstack(),unstack()- Opérations sur des DataFrames déjà exécutés
Pipelines hybrides
Sélection du moteur d’exécution
Mode automatique (par défaut)
Forcer le moteur chDB
Forcer l’utilisation du moteur pandas
Impact sur les performances
Bien : filtrer en amont
Mauvais : filtrer trop tard
Bon réflexe : sélectionnez les colonnes dès le départ
Bon : laissez SQL faire le travail
Résumé des bonnes pratiques
- Chaînez les opérations avant d’exécuter - Construisez la requête complète, puis déclenchez l’exécution une seule fois
- Filtrez le plus tôt possible - Réduisez les données à la source
- Sélectionnez uniquement les colonnes nécessaires - L’élagage des colonnes améliore les performances
- Utilisez
explain()pour comprendre l’exécution - Effectuez le débogage avant de lancer l’exécution - Laissez SQL gérer les agrégations - ClickHouse est optimisé pour cela
- Soyez attentif aux déclencheurs d’exécution - Évitez tout déclenchement accidentel et prématuré
- Utilisez la mise en cache avec discernement - Sachez quand le cache est invalidé