ALTER TABLE ADD DATASOURCE

Содержание раздела
  1. Какие датасорсы можно добавить
  2. Как выбирается датасорс-источник
  3. Обработка запроса
  4. Результат выполнения
  5. Синтаксис
    1. Ключевое слово IF NOT EXISTS
    2. Ключевое слово USING ('source_datasource'[, ... ])
    3. Ключевое слово LOGICAL_ONLY
  6. Варианты ответа
  7. Ограничения
  8. Примеры
    1. Добавление датасорса без ключевых слов
    2. Добавление датасорса с ключевым словом USING
    3. Добавление датасорса с ключевым словом IF NOT EXISTS
    4. Добавление датасорса с ключевым словом LOGICAL_ONLY

Поддерживается в версиях: 7.5 / 7.4 / 7.3 / 7.2 / 7.1 / 7.0 / 6.12 / 6.11 / 6.10.

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

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

Какие датасорсы можно добавить

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

Таблица Распределение данных таблицы Какие датасорсы можно добавить
Обычная логическая таблица, партиция Нет данных Любые
Включает ADB и (или) ADP ADB, ADP
Только ADQM и (или) ADG Никакие
Партиционированная таблица
(неприменимо, так как не содержит данные)
ADP

Как выбирается датасорс-источник

Система копирует данные таблицы в добавляемый датасорс из наиболее оптимального источника (датасорса-донора), выбранного из датасорсов:

  • указанных в запросе с помощью ключевого слова USING — если они указаны в запросе;
  • сконфигурированных датасорсов — иначе.

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

Наиболее оптимальным считается включенный датасорс с данными сущности и наивысшим приоритетом согласно таблице ниже. Из нескольких одинаково подходящих выбирается случайный.

Тип добавляемого датасорса Порядок выбора типа датасорса-источника
ADP 1. ADP,
2. ADB.
Предпочтение отдается датасорсу без retention-правил для целевой таблицы
ADB 1. ADB,
2. ADP.
Предпочтение отдается датасорсу без retention-правил для целевой таблицы

Обработка запроса

Запрос попадает в очередь операций и обрабатывается в порядке его поступления в очередь. Каждое изменение таблицы записывается в журнал, который можно посмотреть с помощью запроса GET_CHANGES.

При ошибке исполнения корректного запроса система блокирует все последующие DDL-запросы в логической БД. О снятии такой блокировки см. в разделе Снятие блокировки DDL-запросов.

Результат выполнения

При успешном выполнении запроса система:

  1. Обновляет список датасорсов таблицы в логической схеме данных.
  2. Создает в добавляемом датасорсе необходимые физические таблицы.
  3. (Только для обычных логических таблиц и партиций) Наполняет физические таблицы данными в полном соответствии с выбранным датасорсом-источником.

Синтаксис

ALTER TABLE [db_name.]table_name
ADD DATASOURCE [IF NOT EXISTS] 'destination_datasource'
[USING ('source_datasource'[, ... ])]
[LOGICAL_ONLY]

Параметры:

db_name

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

table_name

Имя расширяемой логической таблицы. Возможные значения:

  • имя обычной логической таблицы,
  • имя партиционированной таблицы,
  • имя партиции.
destination_datasource

Имя датасорса, добавляемого для таблицы. Имя должно быть указано в соответствии с конфигурацией.

Ключевое слово IF NOT EXISTS

Включает проверку наличия датасорса до попытки его добавления для таблицы. Если ключевое слово указано в запросе, успешный ответ возвращается при наличии или успешном добавлении датасорса, иначе — только при успешном добавлении датасорса.

Ключевое слово USING ('source_datasource'[, ... ])

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

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

USING игнорируется для партиционированных таблиц, так как они не содержат данные.

Ключевое слово LOGICAL_ONLY

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

Если ключевое слово не указано, датасорс добавляется на логическом и физическом уровнях.

Варианты ответа

В ответе возвращается:

  • пустой объект ResultSet при успешном выполнении запроса;
  • исключение при неуспешном выполнении запроса.

Ограничения

  • Выполнение запроса недоступно в следующих случаях:
  • Параллельное выполнение ALTER TABLE ADD DATASOURCE и ERASE DELTA может привести к неконсистентности данных.
  • Можно добавить датасорсы:
    • любого типа — для пустой обычной логической таблицы или партиции;
    • ADB, ADP — для непустой обычной логической таблицы или партиции с данными в другом датасорсе ADB/ADP;
    • ADP — для партиционированной таблицы.
  • Информационная схема обновляется асинхронно, поэтому датасорс таблицы может не сразу добавиться в информационную схему.

Примеры

Добавление датасорса без ключевых слов

Добавление датасорса для логической таблицы указанной логической БД:

ALTER TABLE marketing.clients
ADD DATASOURCE 'adp2'

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

USE marketing_new;

ALTER TABLE sales
ADD DATASOURCE 'adb';

Добавление датасорса с ключевым словом USING

ALTER TABLE marketing.clients
ADD DATASOURCE 'adp2'
USING ('adp')

Добавление датасорса с ключевым словом IF NOT EXISTS

ALTER TABLE marketing.clients
ADD DATASOURCE IF NOT EXISTS 'adp2'

Добавление датасорса с ключевым словом LOGICAL_ONLY

ALTER TABLE marketing_new.sales
ADD DATASOURCE 'adb2'
LOGICAL_ONLY