@@ -27,7 +27,9 @@ use std::sync::Arc;
2727use std:: task:: { Context , Poll } ;
2828
2929use crate :: joins:: SharedBitmapBuilder ;
30- use crate :: metrics:: { self , BaselineMetrics , ExecutionPlanMetricsSet , MetricBuilder , MetricType } ;
30+ use crate :: metrics:: {
31+ self , BaselineMetrics , ExecutionPlanMetricsSet , MetricBuilder , MetricType ,
32+ } ;
3133use crate :: projection:: { ProjectionExec , ProjectionExpr } ;
3234use crate :: {
3335 ColumnStatistics , ExecutionPlan , ExecutionPlanProperties , Partitioning , Statistics ,
@@ -1331,6 +1333,8 @@ pub(crate) struct BuildProbeJoinMetrics {
13311333 pub ( crate ) output_batches : metrics:: Count ,
13321334 /// Fraction of probe rows that found more than one match
13331335 pub ( crate ) probe_hit_rate : metrics:: RatioMetrics ,
1336+ /// Average number of build matches per matched probe row
1337+ pub ( crate ) avg_fanout : metrics:: RatioMetrics ,
13341338}
13351339
13361340// This Drop implementation updates the elapsed compute part of the metrics.
@@ -1381,6 +1385,10 @@ impl BuildProbeJoinMetrics {
13811385 . with_type ( MetricType :: SUMMARY )
13821386 . ratio_metrics ( "probe_hit_rate" , partition) ;
13831387
1388+ let avg_fanout = MetricBuilder :: new ( metrics)
1389+ . with_type ( MetricType :: SUMMARY )
1390+ . ratio_metrics ( "avg_fanout" , partition) ;
1391+
13841392 Self {
13851393 build_time,
13861394 build_input_batches,
@@ -1392,6 +1400,7 @@ impl BuildProbeJoinMetrics {
13921400 output_batches,
13931401 baseline,
13941402 probe_hit_rate,
1403+ avg_fanout,
13951404 }
13961405 }
13971406}
0 commit comments