CREATE WRITABLE EXTERNAL TABLE

Содержание раздела
  1. Синтаксис
    1. Ключевое слово IF NOT EXISTS
    2. Ключевое слово PRIMARY KEY
    3. Ключевое слово DISTRIBUTED BY
    4. Ключевое слово LOCATION
    5. Ключевое слово OPTIONS
  2. Варианты ответа
  3. Ограничения
  4. Примеры
    1. Создание таблицы с ключами и параметрами
    2. Создание таблицы без ключей и параметров

Поддерживается в версиях:  6.12 / 6.11 / 6.10 / 6.9 / 6.8 / 6.7 / 6.6 / 6.5 / 6.4 / 6.3 / 6.2 / 6.1 / 6.0 / 5.8 / 5.7 / 5.6 / 5.5.

Запрос позволяет создать внешнюю writable-таблицу.

По умолчанию система создает внешнюю таблицу в логической базе данных и не создает связанную с ней standalone-таблицу в датасорсе. Это может быть полезно, если standalone-таблица уже существует в датасорсе. Чтобы standalone-таблица автоматически создалась при создании внешней таблицы, укажите в запросе ключевое слово OPTIONS со значением auto.create.table.enable=true.

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

Изменение внешней таблицы недоступно. Чтобы заменить таблицу, удалите ее и создайте новую.

Синтаксис

CREATE WRITABLE EXTERNAL TABLE [IF NOT EXISTS] [db_name.]ext_table_name (
  column_name_1 datatype_1 [NULL | NOT NULL],
  column_name_2 datatype_2 [NULL | NOT NULL],
  column_name_3 datatype_3 [NULL | NOT NULL],
  [PRIMARY KEY (column_list_1)]
) 
[DISTRIBUTED BY (column_list_2)]
LOCATION 'core:datasource_alias://path_to_table'
[OPTIONS ('option_list')]

Параметры:

db_name

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

ext_table_name

Имя создаваемой внешней таблицы. Должно быть уникально среди всех логических сущностей логической базы данных, а также должно удовлетворять другим условиям, перечисленным в секции Ограничения.
Чтобы быстро различать разные типы внешних таблиц между собой, рекомендуется давать им имена, указывающие на тип таблицы, например agreements_ext_write или agreements_ext_write_adp. Типы writable- и readable-таблиц можно проверить в системном представлении tables.

column_name_N

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

datatype_N

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

column_list_1

Список столбцов, входящих в первичный ключ таблицы. Опционален, если связанная standalone-таблица будет расположена в СУБД ADB или ADP (эти СУБД поддерживают таблицы без первичного ключа), или уже существует.

column_list_2

Список столбцов, входящих в ключ шардирования таблицы. Опционален, если связанная standalone-таблица будет расположена в СУБД ADB или ADP (эти СУБД поддерживают таблицы без ключа шардирования), или уже существует.

datasource_alias

Имя датасорса, в котором уже размещена или нужно разместить standalone-таблицу, связанную с внешней таблицей.

path_to_table

Путь к связанной standalone-таблице. Состоит из имени схемы (если применимо для СУБД) и имени таблицы, указанных через точку. Примеры: dtm__marketing.agreements (adqm), marketing.agreements (adp, adb), dtm__marketing__agreements (adg).

option_list

Список дополнительных параметров и их значений в формате option1=value1;option2=value2.... Возможные параметры:

  • auto.create.table.enable — признак создания связанной standalone-таблицы, возможные значения: true — создать таблицу, false (по умолчанию) — не создавать таблицу.

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

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

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

Ключевое слово PRIMARY KEY задает список столбцов, входящих в первичный ключ таблицы. Ключевое слово опционально, если связанная standalone-таблица будет расположена в СУБД ADB или ADP (эти СУБД поддерживают таблицы без первичного ключа), или уже существует.

См. также параметр column_list_1.

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

Ключевое слово DISTRIBUTED BY задает список столбцов, входящих в ключ шардирования таблицы. Ключевое слово опционально, если связанная standalone-таблица будет расположена в СУБД ADB или ADP (эти СУБД поддерживают таблицы без ключа шардирования), или уже существует.

См. также параметр column_list_2.

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

Ключевое слово LOCATION задает путь к связанной standalone-таблице. См. также параметр path_to_table.

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

Ключевое слово OPTIONS задает список дополнительных параметров и их значений. См. также параметр option_list.

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

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

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

Ограничения

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

Примеры

Создание таблицы с ключами и параметрами

CREATE WRITABLE EXTERNAL TABLE marketing.agreements_ext_write_adp (
  id BIGINT NOT NULL,
  client_id BIGINT NOT NULL,
  number VARCHAR NOT NULL,
  signature_date DATE,
  effective_date DATE,
  closing_date DATE,
  description VARCHAR,
  PRIMARY KEY(id)
)
DISTRIBUTED BY (id)
LOCATION 'core:adp://marketing.agreements'
OPTIONS ('auto.create.table.enable=true')

Создание таблицы без ключей и параметров

CREATE WRITABLE EXTERNAL TABLE marketing.payments_ext_write_adqm (
  id BIGINT NOT NULL,
  agreement_id BIGINT,
  code VARCHAR(16),
  amount DOUBLE,
  currency_code VARCHAR(3),
  description VARCHAR
)
LOCATION 'core:adqm://dtm__marketing.payments'