Перейти к основному содержимому
Перейти к основному содержимому

Функции для работы с UUID

generateUUIDv4

Генерирует версию 4 UUID.

Синтаксис

Аргументы

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

Значение типа UUIDv4.

Пример

Сначала создайте таблицу с колонкой типа UUID, затем вставьте сгенерированный UUIDv4 в таблицу.

Результат:

Пример с несколькими UUID, сгенерированными на строку

generateUUIDv7

Генерирует версию 7 UUID.

Сгенерированный UUID содержит текущую метку времени Unix в миллисекундах (48 бит), за которой следует версия "7" (4 бита), счетчик (42 бита) для различения UUID в пределах одной миллисекунды (включая поле варианта "2", 2 бита) и случайное поле (32 бита). Для данной метки времени (unix_ts_ms) счетчик начинается с случайного значения и увеличивается на 1 для каждого нового UUID, пока метка времени не изменится. В случае переполнения счетчика поле метки времени увеличивается на 1, и счетчик сбрасывается на случайное новое стартовое значение.

Функция generateUUIDv7 гарантирует, что поле счетчика в пределах метки времени увеличивается монотонно во всех вызовах функции в параллельно работающих потоках и запросах.

примечание

С апреля 2024 года UUID версии 7 находятся в статусе черновика, и их структура может измениться в будущем.

Синтаксис

Аргументы

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

Значение типа UUIDv7.

Пример

Сначала создайте таблицу с колонкой типа UUID, затем вставьте сгенерированный UUIDv7 в таблицу.

Результат:

Пример с несколькими UUID, сгенерированными на строку

empty

Проверяет, является ли вводимый UUID пустым.

Синтаксис

UUID считается пустым, если он содержит все нули (нулевой UUID).

Функция также работает для Массивов и Строк.

Аргументы

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

  • Возвращает 1 для пустого UUID или 0 для непустого UUID. UInt8.

Пример

Чтобы сгенерировать значение UUID, ClickHouse предоставляет функцию generateUUIDv4.

Запрос:

Результат:

notEmpty

Проверяет, является ли вводимый UUID непустым.

Синтаксис

UUID считается пустым, если он содержит все нули (нулевой UUID).

Функция также работает для Массивов или Строк.

Аргументы

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

  • Возвращает 1 для непустого UUID или 0 для пустого UUID. UInt8.

Пример

Чтобы сгенерировать значение UUID, ClickHouse предоставляет функцию generateUUIDv4.

Запрос:

Результат:

toUUID

Преобразует значение типа String в UUID.

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

Значение типа UUID.

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

Результат:

toUUIDOrDefault

Аргументы

  • string — Строка из 36 символов или FixedString(36). String.
  • default — UUID, который будет использоваться по умолчанию, если первый аргумент не может быть преобразован в UUID. UUID.

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

UUID

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

Значение типа UUID.

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

Этот первый пример возвращает первый аргумент, преобразованный в тип UUID, так как его можно преобразовать:

Результат:

Этот второй пример возвращает второй аргумент (предоставленный UUID по умолчанию), так как первый аргумент не может быть преобразован в тип UUID:

Результат:

toUUIDOrNull

Принимает аргумент типа String и пытается разобрать его в UUID. Если не удалось, возвращает NULL.

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

Значение типа Nullable(UUID).

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

Результат:

toUUIDOrZero

Принимает аргумент типа String и пытается разобрать его в UUID. Если не удалось, возвращает нулевой UUID.

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

Значение типа UUID.

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

Результат:

UUIDStringToNum

Принимает string, содержащую 36 символов в формате xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx, и возвращает FixedString(16) как его бинарное представление, с опционально заданным форматом через variant (по умолчанию Big-endian).

Синтаксис

Аргументы

  • stringString из 36 символов или FixedString
  • variant — Целое число, представляющее вариант, как указано в RFC4122. 1 = Big-endian (по умолчанию), 2 = Microsoft.

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

FixedString(16)

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

Результат:

Результат:

UUIDNumToString

Принимает binary, содержащий бинарное представление UUID, с опционально заданным форматом через variant (по умолчанию Big-endian) и возвращает строку, содержащую 36 символов в текстовом формате.

Синтаксис

Аргументы

  • binaryFixedString(16) как бинарное представление UUID.
  • variant — Целое число, представляющее вариант, как указано в RFC4122. 1 = Big-endian (по умолчанию), 2 = Microsoft.

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

String.

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

Результат:

Результат:

UUIDToNum

Принимает UUID и возвращает его бинарное представление как FixedString(16), с опционально заданным форматом через variant (по умолчанию Big-endian). Эта функция заменяет вызовы двух отдельных функций UUIDStringToNum(toString(uuid)), поэтому никакое промежуточное преобразование из UUID в строку не требуется для извлечения байтов из UUID.

Синтаксис

Аргументы

  • uuidUUID.
  • variant — Целое число, представляющее вариант, как указано в RFC4122. 1 = Big-endian (по умолчанию), 2 = Microsoft.

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

Бинарное представление UUID.

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

Результат:

Результат:

UUIDv7ToDateTime

Возвращает компонент метки времени UUID версии 7.

Синтаксис

Аргументы

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

  • Время с точностью до миллисекунд. Если UUID не является действительным UUID версии 7, возвращает 1970-01-01 00:00:00.000. DateTime64(3).

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

Результат:

Результат:

serverUUID

Возвращает случайный UUID, сгенерированный при первом запуске сервера ClickHouse. UUID хранится в файле uuid в директории сервера ClickHouse (например, /var/lib/clickhouse/) и сохраняется между перезапусками сервера.

Синтаксис

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

  • UUID сервера. UUID.

generateSnowflakeID

Генерирует Snowflake ID.

Сгенерированный Snowflake ID содержит текущую метку времени Unix в миллисекундах (41 + 1 старшие нулевые бита), за которой следует идентификатор машины (10 бит) и счетчик (12 бит) для различения идентификаторов в пределах одной миллисекунды. Для данной метки времени (unix_ts_ms) счетчик начинается с 0 и увеличивается на 1 для каждого нового Snowflake ID, пока метка времени не изменится. В случае переполнения счетчика поле метки времени увеличивается на 1, и счетчик сбрасывается на 0.

Функция generateSnowflakeID гарантирует, что поле счетчика в пределах метки времени увеличивается монотонно во всех вызовах функции в параллельно работающих потоках и запросах.

примечание

Сгенерированные Snowflake ID основаны на эпохе UNIX 1970-01-01. Хотя стандарт или рекомендация относительно эпохи Snowflake ID не существует, реализации в других системах могут использовать другую эпоху, например, Twitter/X (2010-11-04) или Mastodon (2015-01-01).

Синтаксис

Аргументы

  • expr — Произвольное выражение, используемое для обхода устранения общих подпроцессов, если функция вызывается несколько раз в запросе. Значение выражения не влияет на возвращаемый Snowflake ID. Необязательно.
  • machine_id — Идентификатор машины, используются 10 младших битов. Int64. Необязательно.

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

Значение типа UInt64.

Пример

Сначала создайте таблицу с колонкой типа UInt64, затем вставьте сгенерированный Snowflake ID в таблицу.

Результат:

Пример с несколькими Snowflake ID, сгенерированными на строку

Пример с выражением и идентификатором машины

snowflakeToDateTime

Deprecated feature
осторожно

Эта функция устарела и может использоваться только при включенной настройке allow_deprecated_snowflake_conversion_functions. Функция будет удалена в будущем.

Извлекает компонент метки времени из Snowflake ID в формате DateTime.

Синтаксис

Аргументы

  • value — Snowflake ID. Int64.
  • time_zoneВременная зона. Функция разбирает time_string в соответствии с временной зоной. Необязательно. String.

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

  • Компонент метки времени value в виде значения DateTime.

Пример

Запрос:

Результат:

snowflakeToDateTime64

Deprecated feature
осторожно

Эта функция устарела и может использоваться только при включенной настройке allow_deprecated_snowflake_conversion_functions. Функция будет удалена в будущем.

Извлекает компонент метки времени из Snowflake ID в формате DateTime64.

Синтаксис

Аргументы

  • value — Snowflake ID. Int64.
  • time_zoneВременная зона. Функция разбирает time_string в соответствии с временной зоной. Необязательно. String.

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

  • Компонент метки времени value в виде значения DateTime64 с масштабом = 3, т.е. точностью до миллисекунд.

Пример

Запрос:

Результат:

dateTimeToSnowflake

Deprecated feature
осторожно

Эта функция устарела и может использоваться только при включенной настройке allow_deprecated_snowflake_conversion_functions. Функция будет удалена в будущем.

Преобразует значение DateTime в первый Snowflake ID в заданное время.

Синтаксис

Аргументы

  • value — Дата с временем. DateTime.

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

  • Входное значение преобразуется в тип Int64 как первый Snowflake ID в это время.

Пример

Запрос:

Результат:

dateTime64ToSnowflake

Deprecated feature
осторожно

Эта функция устарела и может использоваться только при включенной настройке allow_deprecated_snowflake_conversion_functions. Функция будет удалена в будущем.

Преобразует DateTime64 в первый Snowflake ID в заданное время.

Синтаксис

Аргументы

  • value — Дата с временем. DateTime64.

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

  • Входное значение преобразуется в тип Int64 как первый Snowflake ID в это время.

Пример

Запрос:

Результат:

snowflakeIDToDateTime

Возвращает компонент метки времени Snowflake ID в виде значения типа DateTime.

Синтаксис

Аргументы

  • value — Snowflake ID. UInt64.
  • epoch - Эпоха Snowflake ID в миллисекундах с 1970-01-01. По умолчанию 0 (1970-01-01). Для эпохи Twitter/X (2015-01-01) укажите 1288834974657. Необязательно. UInt*.
  • time_zoneВременная зона. Функция разбирает time_string в соответствии с временной зоной. Необязательно. String.

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

  • Компонент метки времени value в виде значения DateTime.

Пример

Запрос:

Результат:

snowflakeIDToDateTime64

Возвращает компонент метки времени Snowflake ID в виде значения типа DateTime64.

Синтаксис

Аргументы

  • value — Snowflake ID. UInt64.
  • epoch - Эпоха Snowflake ID в миллисекундах с 1970-01-01. По умолчанию 0 (1970-01-01). Для эпохи Twitter/X (2015-01-01) укажите 1288834974657. Необязательно. UInt*.
  • time_zoneВременная зона. Функция разбирает time_string в соответствии с временной зоной. Необязательно. String.

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

  • Компонент метки времени value в виде значения DateTime64 с масштабом = 3, т.е. точностью до миллисекунд.

Пример

Запрос:

Результат:

dateTimeToSnowflakeID

Преобразует значение DateTime в первый Snowflake ID в заданное время.

Синтаксис

Аргументы

  • value — Дата с временем. DateTime.
  • epoch - Эпоха Snowflake ID в миллисекундах с 1970-01-01. По умолчанию 0 (1970-01-01). Для эпохи Twitter/X (2015-01-01) укажите 1288834974657. Необязательно. UInt*.

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

  • Входное значение преобразуется в UInt64 как первый Snowflake ID в это время.

Пример

Запрос:

Результат:

dateTime64ToSnowflakeID

Преобразует DateTime64 в первый Snowflake ID в заданное время.

Синтаксис

Аргументы

  • value — Дата с временем. DateTime64.
  • epoch - Эпоха Snowflake ID в миллисекундах с 1970-01-01. По умолчанию 0 (1970-01-01). Для эпохи Twitter/X (2015-01-01) укажите 1288834974657. Необязательно. UInt*.

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

  • Входное значение преобразуется в UInt64 как первый Snowflake ID в это время.

Пример

Запрос:

Результат:

See also