Skip to content

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()