Skip to content

shiftleft(column, numBits)

Описание

Функция shiftleft() выполняет побитовый сдвиг числа влево на указанное количество битов. При сдвиге влево младшие биты заполняются нулями, а старшие биты теряются.

Параметры

  • column: Column - числовой столбец
  • numBits: Integer - количество битов для сдвига

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

Integer - результат побитового сдвига влево

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

from pyspark.sql import SparkSession
from pyspark.sql.functions import shiftleft

# Создаем SparkSession
spark = SparkSession.builder.appName("shiftleft_example").getOrCreate()

# Создаем DataFrame с числами
data = [
    (1,),   # 0001 << 1 = 0010
    (2,),   # 0010 << 2 = 1000
    (3,)    # 0011 << 1 = 0110
]
df = spark.createDataFrame(data, ["number"])

# Выполняем побитовый сдвиг влево
result = df.select(
    "number",
    shiftleft("number", 1).alias("shift1"),
    shiftleft("number", 2).alias("shift2")
).show()

# Результат:
# +------+-------+-------+
# |number|shift1|shift2|
# +------+-------+-------+
# |     1|      2|      4|
# |     2|      4|      8|
# |     3|      6|     12|
# +------+-------+-------+

Примечания

  • Функция работает только с целыми числами
  • Сдвиг влево на n битов эквивалентен умножению на 2^n
  • Если количество битов отрицательное, возвращается NULL
  • Для сдвига вправо используйте shiftright()
  • Для других побитовых операций используйте bitwiseAND(), bitwiseOR() и bitwiseXOR()