func()

in spark/sql/dataframe.go [776:805]


func (df *dataFrameImpl) WithMetadata(ctx context.Context, metadata map[string]string) (DataFrame, error) {
	// WithMetadata works the same way as with columns but extracts the column reference from the DataFrame
	// and injects it back into the projection.
	aliases := make([]*proto.Expression_Alias, 0, len(metadata))
	for colName, metadata := range metadata {
		expr := column.OfDF(df, colName)
		exprProto, err := expr.ToProto(ctx)
		if err != nil {
			return nil, err
		}
		alias := &proto.Expression_Alias{
			Expr:     exprProto,
			Name:     []string{colName},
			Metadata: &metadata,
		}
		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
}