grouping(col)
Описание
Функция grouping()
показывает, была ли указанная колонка агрегирована в списке GROUP BY или нет. Возвращает 1 для агрегированных колонок и 0 для неагрегированных в результирующем наборе.
Параметры
col
: Column - колонка для проверки агрегации
Возвращаемое значение
Integer - 1 если колонка агрегирована, 0 если нет
Пример использования
from pyspark.sql.functions import grouping, sum
from pyspark.sql import SparkSession
# Создаем SparkSession
spark = SparkSession.builder.appName("grouping_example").getOrCreate()
# Создаем DataFrame
data = [
("A", "X", 1),
("A", "Y", 2),
("B", "X", 3),
("B", "Y", 4)
]
df = spark.createDataFrame(data, ["group1", "group2", "value"])
# Используем grouping для проверки агрегации
result = df.groupBy("group1").agg(
sum("value").alias("sum_value"),
grouping("group1").alias("group1_agg"),
grouping("group2").alias("group2_agg")
).show()
# Результат:
# +------+---------+----------+----------+
# |group1|sum_value|group1_agg|group2_agg|
# +------+---------+----------+----------+
# |A |3 |0 |1 |
# |B |7 |0 |1 |
# +------+---------+----------+----------+
Примечания
- Функция используется для определения, какие колонки были агрегированы в GROUP BY
- Возвращает 1 для агрегированных колонок (не входящих в GROUP BY)
- Возвращает 0 для неагрегированных колонок (входящих в GROUP BY)
- Для получения уровня группировки используйте
grouping_id()