GitHub user MaxGekk opened a pull request:
https://github.com/apache/spark/pull/22316
[SPARK-25048][SQL] Pivoting by multiple columns in Scala/Java
## What changes were proposed in this pull request?
In the PR, I propose to extend implementation of existing method:
```
def pivot(pivotColumn: Column, values: Seq[Any]): RelationalGroupedDataset
```
to support values of the struct type. This allows pivoting by multiple
columns combined by `struct`:
```
trainingSales
.groupBy($"sales.year")
.pivot(
pivotColumn = struct(lower($"sales.course"), $"training"),
values = Seq(
struct(lit("dotnet"), lit("Experts")),
struct(lit("java"), lit("Dummies")))
).agg(sum($"sales.earnings"))
```
## How was this patch tested?
Added a test for values specified via `struct` in Java and Scala.
You can merge this pull request into a Git repository by running:
$ git pull https://github.com/MaxGekk/spark-1 pivoting-by-multiple-columns2
Alternatively you can review and apply these changes as the patch at:
https://github.com/apache/spark/pull/22316.patch
To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:
This closes #22316
----
commit 058072544fdd606392a57615119bb55dff5345c0
Author: Maxim Gekk <max.gekk@...>
Date: 2018-09-02T12:24:20Z
Support columns as values
commit 1221db39b75a9b9bd4fbc6144150283d9c24e9d5
Author: Maxim Gekk <max.gekk@...>
Date: 2018-09-02T13:14:55Z
Added a test for the case when values are not specified
commit a097b294854f99ec58ca307d85c19e54cd76d6b8
Author: Maxim Gekk <max.gekk@...>
Date: 2018-09-02T13:19:14Z
Added a test for Java
----
---
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]