Skip to content

Commit 8542fc3

Browse files
committed
fix: Fix redundant column when using window function
1 parent c609dfa commit 8542fc3

File tree

1 file changed

+14
-1
lines changed

1 file changed

+14
-1
lines changed

src/dataframe.rs

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ use datafusion::datasource::TableProvider;
3535
use datafusion::error::DataFusionError;
3636
use datafusion::execution::SendableRecordBatchStream;
3737
use datafusion::parquet::basic::{BrotliLevel, Compression, GzipLevel, ZstdLevel};
38+
use crate::datafusion_expr::Expr;
3839
use datafusion::prelude::*;
3940
use datafusion_ffi::table_provider::FFI_TableProvider;
4041
use futures::{StreamExt, TryStreamExt};
@@ -473,7 +474,19 @@ impl PyDataFrame {
473474
}
474475

475476
fn with_column(&self, name: &str, expr: PyExpr) -> PyDataFusionResult<Self> {
476-
let df = self.df.as_ref().clone().with_column(name, expr.into())?;
477+
let expr: Expr = expr.into();
478+
let aliased = expr.alias(name);
479+
480+
let df_schema = self.df.as_ref().schema().clone();
481+
let mut proj_exprs: Vec<Expr> = df_schema
482+
.fields()
483+
.iter()
484+
.filter(|field| field.name() != name)
485+
.map(|field| col(field.name()))
486+
.collect();
487+
proj_exprs.push(aliased);
488+
489+
let df = self.df.as_ref().clone().select(proj_exprs)?;
477490
Ok(Self::new(df))
478491
}
479492

0 commit comments

Comments
 (0)