in spark/sql/dataframe.go [730:755]
func (df *dataFrameImpl) WithColumns(ctx context.Context, cols ...column.Alias) (DataFrame, error) {
// Convert all columns to proto expressions and the corresponding alias:
aliases := make([]*proto.Expression_Alias, 0, len(cols))
for _, col := range cols {
expr, err := col.ToProto(ctx)
if err != nil {
return nil, err
}
// The alias must be an alias expression.
alias := expr.GetAlias()
aliases = append(aliases, alias)
}
rel := &proto.Relation{
Common: &proto.RelationCommon{
PlanId: newPlanId(),
},
RelType: &proto.Relation_WithColumns{
WithColumns: &proto.WithColumns{
Input: df.relation,
Aliases: aliases,
},
},
}
return NewDataFrame(df.session, rel), nil
}