Partilhar via


array_sort

Função de recolha: Ordena o array de entrada por ordem crescente. Os elementos do array de entrada devem ser ordenáveis. Os elementos nulos serão colocados no final do array devolvido. Suporta o Spark Connect.

Para a função SQL do Databricks correspondente, veja array_sort função.

Sintaxe

from pyspark.databricks.sql import functions as dbf

dbf.array_sort(col=<col>, comparator=<comparator>)

Parâmetros

Parâmetro Tipo Description
col pyspark.sql.Column ou str Nome da coluna ou expressão.
comparator callable, opcional Uma função binária que devolve um inteiro negativo, 0, ou um inteiro positivo como primeiro elemento é menor, igual ou maior que o segundo elemento. Se a função comparadora devolver nulo, a função falhará e gerará um erro.

Devoluções

pyspark.sql.Column: matriz ordenada.

Examples

Exemplo 1: Ordenar um array por ordem crescente padrão

from pyspark.databricks.sql import functions as dbf
df = spark.createDataFrame([([2, 1, None, 3],),([1],),([],)], ['data'])
df.select(dbf.array_sort(df.data).alias('r')).collect()
[Row(r=[1, 2, 3, None]), Row(r=[1]), Row(r=[])]

Exemplo 2: Ordenar um array com um comparador personalizado

from pyspark.databricks.sql import functions as dbf
df = spark.createDataFrame([(["foo", "foobar", None, "bar"],),(["foo"],),([],)], ['data'])
df.select(dbf.array_sort(
    "data",
    lambda x, y: dbf.when(x.isNull() | y.isNull(), dbf.lit(0)).otherwise(dbf.length(y) - dbf.length(x))
).alias("r")).collect()
[Row(r=['foobar', 'foo', None, 'bar']), Row(r=['foo']), Row(r=[])]