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