Skip to content

[SPARK-52149] Add String.toExpression extension #148

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 1 commit into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 1 addition & 5 deletions Sources/SparkConnect/DataFrameWriterV2.swift
Original file line number Diff line number Diff line change
Expand Up @@ -72,11 +72,7 @@ public actor DataFrameWriterV2: Sendable {
/// - Parameter columns: Columns to partition
/// - Returns: A ``DataFrameWriterV2``.
public func partitionBy(_ columns: String...) -> DataFrameWriterV2 {
self.partitioningColumns = columns.map {
var expr = Spark_Connect_Expression()
expr.expressionString = $0.toExpressionString
return expr
}
self.partitioningColumns = columns.map { $0.toExpression }
return self
}

Expand Down
8 changes: 8 additions & 0 deletions Sources/SparkConnect/Extension.swift
Original file line number Diff line number Diff line change
Expand Up @@ -126,6 +126,14 @@ extension String {
return expression
}

var toExpression: Spark_Connect_Expression {
var expressionString = ExpressionString()
expressionString.expression = self
var expression = Spark_Connect_Expression()
expression.expressionString = expressionString
return expression
}

var toExplainMode: ExplainMode {
let mode = switch self {
case "codegen": ExplainMode.codegen
Expand Down
12 changes: 2 additions & 10 deletions Sources/SparkConnect/GroupedData.swift
Original file line number Diff line number Diff line change
Expand Up @@ -32,16 +32,8 @@ public actor GroupedData {
var aggregate = Aggregate()
aggregate.input = await (self.df.getPlan() as! Plan).root
aggregate.groupType = self.groupType
aggregate.groupingExpressions = self.groupingCols.map {
var expr = Spark_Connect_Expression()
expr.expressionString = $0.toExpressionString
return expr
}
aggregate.aggregateExpressions = exprs.map {
var expr = Spark_Connect_Expression()
expr.expressionString = $0.toExpressionString
return expr
}
aggregate.groupingExpressions = self.groupingCols.map { $0.toExpression }
aggregate.aggregateExpressions = exprs.map { $0.toExpression }
var relation = Relation()
relation.aggregate = aggregate
var plan = Plan()
Expand Down
30 changes: 5 additions & 25 deletions Sources/SparkConnect/SparkConnectClient.swift
Original file line number Diff line number Diff line change
Expand Up @@ -508,11 +508,7 @@ public actor SparkConnectClient {
static func getProjectExprs(_ child: Relation, _ exprs: [String]) -> Plan {
var project = Project()
project.input = child
let expressions: [Spark_Connect_Expression] = exprs.map {
var expression = Spark_Connect_Expression()
expression.exprType = .expressionString($0.toExpressionString)
return expression
}
let expressions: [Spark_Connect_Expression] = exprs.map { $0.toExpression }
project.expressions = expressions
var relation = Relation()
relation.project = project
Expand Down Expand Up @@ -908,11 +904,7 @@ public actor SparkConnectClient {
) -> Plan {
var repartitionByExpression = RepartitionByExpression()
repartitionByExpression.input = child
repartitionByExpression.partitionExprs = partitionExprs.map {
var expr = Spark_Connect_Expression()
expr.expressionString = $0.toExpressionString
return expr
}
repartitionByExpression.partitionExprs = partitionExprs.map { $0.toExpression }
if let numPartitions {
repartitionByExpression.numPartitions = numPartitions
}
Expand All @@ -932,18 +924,10 @@ public actor SparkConnectClient {
) -> Plan {
var unpivot = Spark_Connect_Unpivot()
unpivot.input = child
unpivot.ids = ids.map {
var expr = Spark_Connect_Expression()
expr.expressionString = $0.toExpressionString
return expr
}
unpivot.ids = ids.map { $0.toExpression }
if let values {
var unpivotValues = Spark_Connect_Unpivot.Values()
unpivotValues.values = values.map {
var expr = Spark_Connect_Expression()
expr.expressionString = $0.toExpressionString
return expr
}
unpivotValues.values = values.map { $0.toExpression }
unpivot.values = unpivotValues
}
unpivot.variableColumnName = variableColumnName
Expand All @@ -958,11 +942,7 @@ public actor SparkConnectClient {
static func getTranspose(_ child: Relation, _ indexColumn: [String]) -> Plan {
var transpose = Spark_Connect_Transpose()
transpose.input = child
transpose.indexColumns = indexColumn.map {
var expr = Spark_Connect_Expression()
expr.expressionString = $0.toExpressionString
return expr
}
transpose.indexColumns = indexColumn.map { $0.toExpression }
var relation = Relation()
relation.transpose = transpose
var plan = Plan()
Expand Down
Loading