slice(x, start, length)
Описание
Функция slice() возвращает подмассив, начиная с указанного индекса и заданной длины. Индексы массива начинаются с 1, или с конца, если start отрицательный.
Параметры
x: Column - массив для срезаstart: int - начальный индекс (1-базированный)length: int - длина подмассива
Возвращаемое значение
Array - подмассив указанной длины
Пример использования
from pyspark.sql.functions import slice, array, lit
# Создаем DataFrame с массивами
df = spark.createDataFrame([
    ([1, 2, 3, 4, 5],),
    (["a", "b", "c", "d", "e"],),
    (None,)
], ["array_col"])
# Получаем срезы
df.select(
    "array_col",
    slice("array_col", 2, 3).alias("slice_2_3"),
    slice("array_col", -3, 2).alias("slice_neg3_2")
).show(truncate=False)
# Результат:
# +------------+---------+------------+
# |array_col   |slice_2_3|slice_neg3_2|
# +------------+---------+------------+
# |[1, 2, 3, 4, 5]|[2, 3, 4]|[3, 4]     |
# |[a, b, c, d, e]|[b, c, d]|[c, d]     |
# |null        |null     |null        |
# +------------+---------+------------+
# Пример с разными длинами
df = spark.createDataFrame([
    ([10, 20, 30, 40],),
    ([100, 200, 300],)
], ["numbers"])
df.select(
    "numbers",
    slice("numbers", 1, 2).alias("first_two"),
    slice("numbers", -2, 2).alias("last_two")
).show(truncate=False)
 Примечания
- Если массив NULL, возвращается NULL
 - Если start выходит за пределы массива, возвращается пустой массив
 - Если length отрицательный или 0, возвращается пустой массив
 - Для получения элемента по индексу используйте 
element_at() - Для получения размера массива используйте 
array_size() - Для создания массива используйте 
array()