CREATE PROXY TABLE

Содержание раздела
  1. Результат выполнения
  2. Как работает запрос
  3. Синтаксис
    1. Ключевое слово IF NOT EXISTS
    2. Ключевое слово PRIMARY KEY (column_name[, ... ])
    3. Ключевое слово DISTRIBUTED BY (column_name[, ... ])
    4. Ключевое слово DATASOURCE_TYPE ('datasource_name')
    5. Ключевое слово LOGICAL_ONLY
  4. Варианты ответа
  5. Ограничения
    1. Ограничения выполнения
    2. Ограничения имен
    3. Другие ограничения
  6. Пример

Поддерживается в версиях: 7.0 / 6.12 / 6.11 / 6.10 / 6.9 / 6.8 / 6.7 / 6.6.

Запрос создает прокси-таблицу с размещением в указанном датасорсе.

Прокси-таблицу также можно создать с помощью запроса CREATE TABLE с указанием ключевого слова OPTIONS. Изменить прокси-таблицу можно запросами ALTER TABLE, удалить — запросом DROP TABLE.

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

При успешном выполнении запроса система создает прокси-таблицу в логической базе данных и соответствующую ей физическую таблицу в указанном датасорсе.

Если в датасорсе есть физическая таблица с таким же именем, как у прокси-таблицы, она будет удалена при создании прокси-таблицы.

Как работает запрос

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

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

Синтаксис

CREATE PROXY TABLE [IF NOT EXISTS] [db_name.]table_name (
  column_name data_type [ NULL | NOT NULL ],
  [ ... , ]
  PRIMARY KEY (column_name[, ... ])
) 
[DISTRIBUTED BY (column_name[, ... ])]
[DATASOURCE_TYPE ('datasource_name')]
[LOGICAL_ONLY]

Параметры:

db_name

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

table_name

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

column_name

Имя столбца таблицы.

data_type

Тип данных столбца column_name. Возможные значения см. в разделе Логические типы данных.

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

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

Ключевое слово PRIMARY KEY (column_name[, ... ])

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

Ключевое слово DISTRIBUTED BY (column_name[, ... ])

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

Ключевое слово обязательно для датасорсов всех типов, кроме ADP.

Ключевое слово DATASOURCE_TYPE ('datasource_name')

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

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

Ключевое слово обязательно, если хранилище данных содержит более одного датасорса.

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

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

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

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

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

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

Ограничения

Ограничения выполнения

Ограничения имен

  • Имена таблицы и ее столбцов должны соответствовать требованиям, описанным в разделе Соглашения об именах.
  • Имена столбцов должны быть уникальны в рамках прокси-таблицы.

Другие ограничения

  • Первичный ключ, если он указан, должен включать все столбцы ключа шардирования.
  • Информационная схема обновляется асинхронно, поэтому созданная таблица может не сразу появиться в информационной схеме.

Пример

Создание прокси-таблицы с размещением ее данных в датасорсе adp:

CREATE PROXY TABLE marketing.payments_proxy (
  id BIGINT NOT NULL,
  agreement_id BIGINT,
  type_code VARCHAR(16),
  amount DOUBLE,
  currency_code VARCHAR(3),
  description VARCHAR,
  PRIMARY KEY (id)
)
DISTRIBUTED BY (id)
DATASOURCE_TYPE ('adp')