Skip to content

sequence(start, stop[, step])

Описание

Функция sequence() генерирует последовательность целых чисел от start до stop, увеличивая на step. Если step не указан, используется значение 1.

Параметры

  • start: int - начальное значение последовательности
  • stop: int - конечное значение последовательности
  • step: int (опционально) - шаг последовательности (по умолчанию 1)

Возвращаемое значение

Array - массив целых чисел от start до stop с шагом step

Пример использования

from pyspark.sql.functions import sequence, lit

# Создаем DataFrame с параметрами последовательностей
df = spark.createDataFrame([
    (1, 5, 1),
    (5, 1, -1),
    (0, 10, 2),
    (10, 0, -2)
], ["start", "stop", "step"])

# Генерируем последовательности
df.select(
    "start",
    "stop",
    "step",
    sequence("start", "stop").alias("seq_default"),
    sequence("start", "stop", "step").alias("seq_with_step")
).show(truncate=False)

# Результат:
# +-----+----+----+------------+------------+
# |start|stop|step|seq_default |seq_with_step|
# +-----+----+----+------------+------------+
# |1    |5   |1   |[1, 2, 3, 4, 5]|[1, 2, 3, 4, 5]|
# |5    |1   |-1  |[]          |[5, 4, 3, 2, 1]|
# |0    |10  |2   |[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]|[0, 2, 4, 6, 8, 10]|
# |10   |0   |-2  |[]          |[10, 8, 6, 4, 2, 0]|
# +-----+----+----+------------+------------+

# Пример с литералами
df = spark.createDataFrame([(1,)], ["dummy"])
df.select(
    sequence(lit(1), lit(5)).alias("seq1"),
    sequence(lit(5), lit(1), lit(-1)).alias("seq2"),
    sequence(lit(0), lit(10), lit(2)).alias("seq3")
).show(truncate=False)

Примечания

  • Если step не указан, используется значение 1
  • Если start > stop и step > 0, возвращается пустой массив
  • Если start < stop и step < 0, возвращается пустой массив
  • Для создания массива используйте array()
  • Для генерации случайных чисел используйте rand()