func()

in spark/sql/dataframe.go [1516:1558]


func (df *dataFrameImpl) Unpivot(ctx context.Context,
	ids []column.Convertible,
	values []column.Convertible,
	variableColumnName string,
	valueColumnName string,
) (DataFrame, error) {
	idExprs := make([]*proto.Expression, 0, len(ids))
	for _, id := range ids {
		expr, err := id.ToProto(ctx)
		if err != nil {
			return nil, err
		}
		idExprs = append(idExprs, expr)
	}

	valueExprs := make([]*proto.Expression, 0, len(values))
	for _, value := range values {
		expr, err := value.ToProto(ctx)
		if err != nil {
			return nil, err
		}
		valueExprs = append(valueExprs, expr)
	}

	rel := &proto.Relation{
		Common: &proto.RelationCommon{
			PlanId: newPlanId(),
		},

		RelType: &proto.Relation_Unpivot{
			Unpivot: &proto.Unpivot{
				Input: df.relation,
				Ids:   idExprs,
				Values: &proto.Unpivot_Values{
					Values: valueExprs,
				},
				VariableColumnName: variableColumnName,
				ValueColumnName:    valueColumnName,
			},
		},
	}
	return NewDataFrame(df.session, rel), nil
}