É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
- Choix différé : le moteur d’exécution peut être choisi à l’exécution
- Inspection du plan : vous pouvez afficher et 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 : point d’exécution
Phase 3 : Opérations sur les DataFrame (le cas échéant)
Affichage des plans d’exécution
explain() pour voir ce qui sera exécuté :
Query
Response
verbose=True pour obtenir plus de détails :
Mise en cache
Comment fonctionne la mise en cache
Invalidation du cache
Gestion manuelle du cache
Combiner SQL et les opérations Pandas
Opérations compatibles avec SQL
filter(),where()select()groupby(),agg()sort(),orderby()limit(),offset()join(),union()distinct()- Opérations sur les colonnes (mathématiques, comparaisons, méthodes sur les chaînes)
Opérations propres à 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
Auto Mode (par défaut)
Forcer le moteur chDB
Forcer le moteur pandas
Impact sur les performances
Bien : filtrer tôt
À éviter : filtrer trop tard
Bon réflexe : sélectionnez les colonnes dès le début
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 tôt - 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 - Déboguez avant d’exécuter - Laissez SQL gérer les agrégations - ClickHouse est optimisé pour cela
- Sachez ce qui déclenche l’exécution - Évitez un déclenchement prématuré par inadvertance
- Utilisez la mise en cache à bon escient - Comprenez quand le cache est invalidé