Compartir vía


slice

Devuelve una nueva columna de matriz mediante la segmentación de la columna de matriz de entrada de un índice inicial a una longitud específica. Los índices comienzan en 1 y pueden ser negativos para indexar desde el final de la matriz. La longitud especifica el número de elementos de la matriz resultante.

Syntax

from pyspark.sql import functions as sf

sf.slice(x, start, length)

Parámetros

Parámetro Tipo Description
x pyspark.sql.Column o str Columna de matriz de entrada o nombre de columna que se va a segmentar.
start pyspark.sql.Column, str o int Índice inicial de la operación de segmento. Si es negativo, inicia el índice desde el final de la matriz.
length pyspark.sql.Column, str o int Longitud del segmento, que representa el número de elementos de la matriz resultante.

Devoluciones

pyspark.sql.Column: nuevo objeto Column de tipo Array, donde cada valor es un segmento de la lista correspondiente de la columna de entrada.

Examples

Ejemplo 1: Uso básico de la función de segmento.

from pyspark.sql import functions as sf
df = spark.createDataFrame([([1, 2, 3],), ([4, 5],)], ['x'])
df.select(sf.slice(df.x, 2, 2)).show()
+--------------+
|slice(x, 2, 2)|
+--------------+
|        [2, 3]|
|           [5]|
+--------------+

Ejemplo 2: Segmentación con índice de inicio negativo.

from pyspark.sql import functions as sf
df = spark.createDataFrame([([1, 2, 3],), ([4, 5],)], ['x'])
df.select(sf.slice(df.x, -1, 1)).show()
+---------------+
|slice(x, -1, 1)|
+---------------+
|            [3]|
|            [5]|
+---------------+

Ejemplo 3: Función slice con entradas de columna para inicio y longitud.

from pyspark.sql import functions as sf
df = spark.createDataFrame([([1, 2, 3], 2, 2), ([4, 5], 1, 3)], ['x', 'start', 'length'])
df.select(sf.slice(df.x, df.start, df.length)).show()
+-----------------------+
|slice(x, start, length)|
+-----------------------+
|                 [2, 3]|
|                 [4, 5]|
+-----------------------+