指定したグループ化セットを使用して現在の DataFrame の多次元集計を作成し、それらに対して集計を実行できるようにします。
構文
groupingSets(groupingSets: Sequence[Sequence["ColumnOrName"]], *cols: "ColumnOrName")
パラメーター
| パラメーター | タイプ | 説明 |
|---|---|---|
groupingSets |
列または str のシーケンスのシーケンス | グループ化する列の個々のセット。 |
cols |
Column または str | ユーザーによって指定された追加のグループ化列。 これらの列は、集計後の出力列として表示されます。 |
返品
GroupedData: 指定した列に基づいてデータのセットをグループ化します。
例示
from pyspark.sql import functions as sf
df = spark.createDataFrame([
(100, 'Fremont', 'Honda Civic', 10),
(100, 'Fremont', 'Honda Accord', 15),
(100, 'Fremont', 'Honda CRV', 7),
(200, 'Dublin', 'Honda Civic', 20),
(200, 'Dublin', 'Honda Accord', 10),
(200, 'Dublin', 'Honda CRV', 3),
(300, 'San Jose', 'Honda Civic', 5),
(300, 'San Jose', 'Honda Accord', 8)
], schema="id INT, city STRING, car_model STRING, quantity INT")
df.groupingSets(
[("city", "car_model"), ("city",), ()],
"city", "car_model"
).agg(sf.sum(sf.col("quantity")).alias("sum")).sort("city", "car_model").show()
# +--------+------------+---+
# | city| car_model|sum|
# +--------+------------+---+
# | NULL| NULL| 78|
# | Dublin| NULL| 33|
# | Dublin|Honda Accord| 10|
# | Dublin| Honda CRV| 3|
# | Dublin| Honda Civic| 20|
# | Fremont| NULL| 32|
# | Fremont|Honda Accord| 15|
# | Fremont| Honda CRV| 7|
# | Fremont| Honda Civic| 10|
# |San Jose| NULL| 13|
# |San Jose|Honda Accord| 8|
# |San Jose| Honda Civic| 5|
# +--------+------------+---+