Pular para o conteúdo principal

reduzir

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.

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

Sintaxe

Python
from pyspark.databricks.sql import functions as dbf

dbf.reduce(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 zero.

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 : Reduçã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.reduce("values", dbf.lit(0.0), lambda acc, x: acc + x).alias("sum")).show()
Output
+----+
| sum|
+----+
|42.0|
+----+

Exemplo 2 : Reduçã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.reduce(
"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|
+----+