CREATE PROXY TABLE

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

Поддерживается в версиях:  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_1 datatype_1 [ NULL | NOT NULL ],
  ...
  column_name_N datatype_N [ NULL | NOT NULL ], 
  PRIMARY KEY (column_list_1)
) 
[DISTRIBUTED BY (column_list_2)]
[DATASOURCE_TYPE (proxy_datasource_alias)]
[LOGICAL_ONLY]

Параметры:

db_name

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

table_name

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

column_name_N

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

datatype_N

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

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

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

Ключевое слово PRIMARY KEY

Ключевое слово PRIMARY KEY задает список столбцов, входящих в первичный ключ таблицы (column_list_1).

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

Ключевое слово DISTRIBUTED BY

Ключевое слово DISTRIBUTED BY задает список столбцов, входящих в ключ шардирования таблицы (column_list_2). В качестве значения можно указать любые столбцы из числа столбцов первичного ключа (column_list_1).

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

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

Ключевое слово DATASOURCE_TYPE задает имя датасорса для размещения данных прокси-таблицы (proxy_datasource_alias). Значение указывается в одинарных кавычках.

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

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

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

Ключевое слово 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')