Pular para o conteúdo principal

agregar

Aplica um operador binário a um estado inicial e a todos os elementos da matriz, reduzindo-os a um único estado. O estado final é convertido no resultado final através da aplicação de uma função de finalização. Compatível com Spark Connect.

Para a função Databricks SQL correspondente, consulte a funçãoaggregate.

Sintaxe

Python
from pyspark.databricks.sql import functions as dbf

dbf.aggregate(col=<col>, initialValue=<initialValue>, merge=<merge>, finish=<finish>)

Parâmetros

Parâmetro

Tipo

Descrição

col

pyspark.sql.Column ou str

Nome da coluna ou expressão.

initialValue

pyspark.sql.Column ou str

Valor inicial. Nome da coluna ou expressão.

merge

function

Uma função binária que retorna uma expressão do mesmo tipo que initialValue.

finish

function, opcional

Uma função unária opcional usada para converter o valor acumulado.

Devoluções

pyspark.sql.Column: valor final após a aplicação da função de agregação.

Exemplos

Exemplo 1 : Agregação simples com soma

Python
from pyspark.databricks.sql import functions as dbf
df = spark.createDataFrame([(1, [20.0, 4.0, 2.0, 6.0, 10.0])], ("id", "values"))
df.select(dbf.aggregate("values", dbf.lit(0.0), lambda acc, x: acc + x).alias("sum")).show()
Output
+----+
| sum|
+----+
|42.0|
+----+

Exemplo 2 : Agregação com função de finalização

Python
from pyspark.databricks.sql import functions as dbf
df = spark.createDataFrame([(1, [20.0, 4.0, 2.0, 6.0, 10.0])], ("id", "values"))
def merge(acc, x):
count = acc.count + 1
sum = acc.sum + x
return dbf.struct(count.alias("count"), sum.alias("sum"))
df.select(
dbf.aggregate(
"values",
dbf.struct(dbf.lit(0).alias("count"), dbf.lit(0.0).alias("sum")),
merge,
lambda acc: acc.sum / acc.count,
).alias("mean")
).show()
Output
+----+
|mean|
+----+
| 8.4|
+----+