Skip to content

grouping_id(*cols)

Описание

Функция grouping_id() возвращает уровень группировки, который представляет собой битовую маску, показывающую, какие колонки были агрегированы в GROUP BY. Каждый бит в результате соответствует одной колонке в порядке их указания.

Параметры

  • *cols: Column - колонки для проверки агрегации

Возвращаемое значение

Integer - битовая маска, где каждый бит соответствует агрегации колонки

Пример использования

from pyspark.sql.functions import grouping_id, sum
from pyspark.sql import SparkSession

# Создаем SparkSession
spark = SparkSession.builder.appName("grouping_id_example").getOrCreate()

# Создаем DataFrame
data = [
    ("A", "X", 1),
    ("A", "Y", 2),
    ("B", "X", 3),
    ("B", "Y", 4)
]
df = spark.createDataFrame(data, ["group1", "group2", "value"])

# Используем grouping_id для проверки агрегации
result = df.groupBy("group1").agg(
    sum("value").alias("sum_value"),
    grouping_id("group1", "group2").alias("grouping_level")
).show()

# Результат:
# +------+---------+--------------+
# |group1|sum_value|grouping_level|
# +------+---------+--------------+
# |A     |3        |1             |
# |B     |7        |1             |
# +------+---------+--------------+

Примечания

  • Каждый бит в результате соответствует одной колонке в порядке их указания
  • Бит равен 1, если колонка агрегирована, и 0, если нет
  • Для проверки агрегации отдельной колонки используйте grouping()
  • Уровень группировки можно использовать для определения типа агрегации в CUBE или ROLLUP