Link Search Menu Expand Document

CREATE WRITABLE EXTERNAL TABLE

Содержание раздела
  1. Синтаксис
  2. Ограничения
  3. Примеры
    1. Создание таблицы с ключами и параметрами (ADP)
    2. Создание таблицы без ключей и параметров (ADG)

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

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

Внешняя таблица должна содержать все физические поля standalone-таблицы. Например, внешняя таблица, связанная с таблицей ADG, должна содержать поле bucket_id с типом INT и ограничением NOT NULL (см. пример ниже).

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

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

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

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

Синтаксис

CREATE WRITABLE EXTERNAL TABLE [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-таблица. Рекомендуется заполнять в соответствии с первичным ключом standalone-таблицы.

column_list_2

Список столбцов, входящих в ключ шардирования таблицы. Опционален, если используется существующая standalone-таблица. Рекомендуется заполнять в соответствии с ключом шардирования standalone-таблицы.

datasource_alias

Псевдоним СУБД хранилища, в которой уже размещена или нужно разместить standalone-таблицу, связанную с внешней таблицей. Возможные значения: adb, adqm, adg, adp.

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 (по умолчанию) — не создавать таблицу.

Ограничения

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

Примеры

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

CREATE WRITABLE EXTERNAL TABLE marketing.agreements_ext_write_adp (
  id INT NOT NULL,
  client_id INT 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')

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

CREATE WRITABLE EXTERNAL TABLE marketing.payments_ext_write_adg (
  id INT NOT NULL,
  agreement_id INT,
  code VARCHAR(16),
  amount DOUBLE,
  currency_code VARCHAR(3),
  description VARCHAR,
  bucket_id INT NOT NULL
)
LOCATION 'core:adg://dtm__marketing__payments'