Yandex Cloud
Поиск
Связаться с намиПодключиться
  • Истории успеха
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
    • Доступны в регионе
    • Инфраструктура и сеть
    • Платформа данных
    • Контейнеры
    • Инструменты разработчика
    • Бессерверные вычисления
    • Безопасность
    • Мониторинг и управление ресурсами
    • ИИ для бизнеса
    • Бизнес-инструменты
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Партнёрская программа
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Тарифы Yandex Cloud
    • Промоакции и free tier
    • Правила тарификации
  • Истории успеха
  • Документация
  • Блог
Проект Яндекса
© 2025 ТОО «Облачные Сервисы Казахстан»
Yandex Data Transfer
  • Доступные трансферы
  • Начало работы
    • Взаимосвязь ресурсов сервиса
    • Типы и жизненные циклы трансферов
    • Объекты, переносимые трансфером
    • Периодическое инкрементальное копирование
    • Параллельное копирование
    • Трансформация данных
    • Сериализация
    • Работа Yandex Data Transfer с источниками и приемниками
    • Гарантии поставки
    • Операции над трансфером
    • Сеть в Yandex Data Transfer
    • Скорость копирования данных в Yandex Data Transfer
    • Захват изменения данных
    • Какие задачи решает сервис
    • Квоты и лимиты
  • Решение проблем
  • Управление доступом
  • Правила тарификации
  • Справочник Terraform
  • Метрики Monitoring
  • Аудитные логи Audit Trails
  • Публичные материалы
  • Обучающие курсы

В этой статье:

  • Типы трансформеров
  • Переименование таблиц
  • Фильтр колонок
  • Маскирование данных
  • Разделение на подтаблицы
  • Замена первичных ключей
  • Преобразование значений колонок в строки
  • Шардирование
  • Фильтр строк для APPEND-ONLY источников
  1. Концепции
  2. Трансформация данных

Трансформация данных

Статья создана
Yandex Cloud
Обновлена 29 сентября 2025 г.
  • Типы трансформеров
    • Переименование таблиц
    • Фильтр колонок
    • Маскирование данных
    • Разделение на подтаблицы
    • Замена первичных ключей
    • Преобразование значений колонок в строки
    • Шардирование
    • Фильтр строк для APPEND-ONLY источников

Трансформация — это преобразование данных с помощью особой функции-трансформера. Такие функции выполняются на потоке данных, применяются к каждому элементу изменений данных (data change item) и преобразуют их. Трансформер может работать и на уровне мета-информации, и на уровне самих данных.

Трансформацию данных можно настроить во время создания или изменения трансфера.

Трансформация данных доступна, только если источник и приемник имеют разные типы.

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

Типы трансформеровТипы трансформеров

Некоторые трансформеры могут иметь ограничения и применимы не для всех типов пар источник-приемник. Список трансформеров будет пополняться. В настоящий момент доступны следующие типы:

  • Переименование таблиц
  • Фильтр колонок
  • Маскирование данных
  • Разделение на подтаблицы
  • Замена первичных ключей
  • Преобразование значений колонок в строки
  • Шардирование
  • Фильтр строк для APPEND-ONLY источников

Переименование таблицПереименование таблиц

Вы можете задать правила переименования таблиц, указав существующие имена таблиц в источнике и новые имена для этих таблиц в приемнике.

Фильтр колонокФильтр колонок

Вы можете настроить список столбцов таблиц для переноса:

  1. С помощью списков включенных и исключенных таблиц задайте перечень таблиц, к которым будет применен фильтр.
  2. С помощью списков включенных и исключенных колонок задайте перечень столбцов, которые должны перенестись в таблицы приемника.

Маскирование данныхМаскирование данных

Вы можете захешировать данные:

  1. С помощью списков включенных и исключенных таблиц задайте перечень таблиц, в которых будут маскироваться данные.
  2. Укажите имя колонки для маскирования (регулярное выражение). Для каждой колонки укажите соль (строка типа пароль). Эта строка будет использована в функции HMAC(sha256, salt), применяемой к данным в колонке.

Разделение на подтаблицыРазделение на подтаблицы

Трансфер разбивает таблицу X на несколько других X_1, X_2, …, X_n по данным. Если до разбиения строка находилась в таблице X, теперь она находится в таблице X_i, где i определяется следующими параметрами: список колонок и строка разбиения.

Пример:
Если в списке колонок указаны две колонки месяц рождения и пол, а в строке разбиения указано @, то информация о сотруднике Иване, родившемся 11 февраля 1984 года, из таблицы Сотрудники попадет в таблицу Сотрудники@февраль@мужской — это новое имя таблицы.

Для разбиения таблиц:

  1. С помощью списков включенных и исключенных таблиц задайте перечень таблиц.
  2. Укажите колонки в таблицах для разбиения.
  3. Укажите строку разбиения, которая будет соединять составляющие в новом имени таблицы.

Замена первичных ключейЗамена первичных ключей

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

Преобразование значений колонок в строкиПреобразование значений колонок в строки

Для преобразования значений колонок в строковые значения задайте список включенных и исключенных таблиц и список колонок. Значения будут преобразованы в зависимости от исходного типа:

Исходный тип Формат
Any Сериализованный формат JSON
Date Строка вида 2006-01-02
DateTime Строка вида 2006-01-02T15:04:05.999999999Z07:00

ШардированиеШардирование

Шардирование используется при поставке данных в очереди, прежде всего для поставки в Yandex Data Streams, поскольку в Data Streams пропускная способность ограничена и распределение данных по шардам повышает производительность трансфера.

Поддерживаются два типа шардирования:

  • Список колонок (шардирование по колонкам) — строки с одинаковыми значениями в указанных колонках попадают в один шард.
  • Случайное шардирование — строки распределяются по шардам случайным образом. Для распределения используется случайный UUID, который генерируется заново при перезапуске Data Plane. Если изменить количество шардов, данные перераспределятся за счет генерации нового UUID.

Рекомендуется задавать количество шардов так, чтобы их было в 3–10 раз больше, чем партиций в приемнике. Так данные распределятся по партициям более равномерно.

Особенности работы при поставке в Data StreamsОсобенности работы при поставке в Data Streams

Если используется шардирование по колонкам, воркер может быть только один. Это связано с тем, что для поставки в Data Streams трансформер формирует идентификатор источника данных — source_id. Разные воркеры создают одинаковые source_id, а Data Streams не допускает существования нескольких одинаковых source_id на запись.

Фильтр строк для APPEND-ONLY источниковФильтр строк для APPEND-ONLY источников

Этот фильтр применим только к трансферам, в которых в качестве источника данных используются очереди (например, Apache Kafka®). При выполнении трансфера в потоке изменений остаются только те строки, которые удовлетворяют заданным критериям.

  1. С помощью списков включенных и исключенных таблиц задайте перечень таблиц, в которых будут фильтроваться данные.
  2. Задайте критерий для фильтрации. В качестве критерия можно задавать операции сравнения числовых, строковых и булевых значений и сравнение с NULL, а также проверку, входит ли подстрока в строку и принадлежит ли значение множеству.

Критерий фильтрации задается набором правил, разделенных ключевым словом AND. Допустимы операции >, >=, <, <=, =, !=, ~ (подстрока входит в строку), !~ (подстрока не входит в строку), IN (значение принадлежит множеству), NOT IN (значение не принадлежит множеству). Все колонки, указанные в фильтре, должны быть представлены в фильтруемой таблице.

Пример строки-фильтра:

aid > 0 AND id >= 10 AND f > 1000.1 AND f <= 1000.5 AND d != 3.14 AND i < 0 AND bi >= -9223372036854775808 AND biu <= 9223372036854775807 AND da > 1999-01-04 AND da <= 2000-03-04 AND ts > 2000-01-01T00:00:00 AND c != 'a' AND str ~ 'hello' AND t !~ 'bye-bye' AND nil = NULL AND val != NULL

Для фильтра поддерживается единственный уровень вложенности (скобки) и только с операторами IN и NOT IN.

Пример строки-фильтра с использованием операторов IN и NOT IN:

i IN (3, 5, 7) AND str IN ('hello', 'hi') AND c NOT IN ('a', 'b', 'c')

Особенности работы фильтра:

  • Если тип значения, указанного для колонки в фильтре, не совпадает с типом этой колонки в фильтруемой таблице, то трансформер не применяется (строки не фильтруются).

  • Если в фильтре указана строковая колонка, то тип этой колонки в фильтруемой таблице должен быть UTF8 для источников, где парсер явно указывает типы колонок (например, для YDS). Колонки типа STRING трансформером не поддерживаются (строки не фильтруются).

Вы можете указывать сразу несколько критериев-фильтров. При указании нескольких критериев данные будут транспортироваться, если они удовлетворяют хотя бы одному из фильтров (аналог операции OR).

Была ли статья полезна?

Предыдущая
Параллельное копирование
Следующая
Сериализация
Проект Яндекса
© 2025 ТОО «Облачные Сервисы Казахстан»