Pular para o conteúdo principal

ordenação de matriz

Função de coleção: Ordena a matriz de entrada em ordem crescente. Os elementos da matriz de entrada devem ser ordenáveis. Os elementos nulos serão colocados no final da matriz retornada. Compatível com Spark Connect.

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

Sintaxe

Python
from pyspark.databricks.sql import functions as dbf

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

Parâmetros

Parâmetro

Tipo

Descrição

col

pyspark.sql.Column ou str

Nome da coluna ou expressão.

comparator

callable, opcional

Uma função binária que retorna um número inteiro negativo, 0 ou um número inteiro positivo, conforme o primeiro elemento seja menor que, igual a ou maior que o segundo elemento. Se a função de comparação retornar nulo, a função falhará e gerará um erro.

Devoluções

pyspark.sql.Column: matriz ordenada.

Exemplos

Exemplo 1 : Ordenando um array em ordem crescente default

Python
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()
Output
[Row(r=[1, 2, 3, None]), Row(r=[1]), Row(r=[])]

Exemplo 2 : Ordenando uma matriz com um comparador personalizado

Python
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()
Output
[Row(r=['foobar', 'foo', None, 'bar']), Row(r=['foo']), Row(r=[])]