Skip to content

octet_length(col)

Описание

Функция octet_length() возвращает длину строки в байтах. Для строк в кодировке UTF-8 это может отличаться от количества символов, так как некоторые символы могут занимать несколько байтов.

Параметры

  • col: string или Column - строка, длину которой нужно вычислить в байтах

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

Integer - длина строки в байтах

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

from pyspark.sql.functions import octet_length

# Создаем DataFrame
df = spark.createDataFrame([
    ("Hello",),           # ASCII символы (1 байт каждый)
    ("Привет",),          # Кириллица (2 байта на символ)
    ("こんにちは",),       # Японский (3 байта на символ)
    ("",),                # Пустая строка
    (None,)               # NULL
], ["text"])

# Вычисляем длину в байтах
df.select(
    "text",
    octet_length("text").alias("bytes_length")
).show()

# Результат:
# +--------+------------+
# |    text|bytes_length|
# +--------+------------+
# |   Hello|           5|  # 5 байт (1 байт на символ)
# |  Привет|          12|  # 12 байт (2 байта на символ)
# |こんにちは|          15|  # 15 байт (3 байта на символ)
# |        |           0|  # Пустая строка
# |    null|        null|  # NULL
# +--------+------------+

Примечания

  • Для ASCII символов длина в байтах равна количеству символов
  • Для Unicode символов длина в байтах может быть больше количества символов
  • Для пустой строки возвращает 0
  • Для NULL значений возвращает NULL
  • Для получения длины в символах используйте length() или character_length()
  • Для получения длины в битах используйте bit_length()
  • Функция полезна для оценки размера данных в байтах