CREATE TABLE
Содержание раздела
- Как работает запрос
- Синтаксис
- Ключевое слово
IF NOT EXISTS - Ключевое слово
PRIMARY KEY (column_name[, ... ]) - Ключевое слово
DISTRIBUTED BY (column_name[, ... ]) - Ключевое слово
PARTITION BY (column_name[, ... ]) - Ключевое слово
DATASOURCE_TYPE ('destination_datasource'[, ... ]) - Ключевое слово
RETENTION ('source_datasource', retention_period[, 'archive_datasource']) - Ключевое слово
FOR VALUES FROM (left_end_of_range) TO (right_end_of_range) - Ключевое слово
OPTIONS ('option=value[; ... ]') - Ключевое слово
LOGICAL_ONLY
- Ключевое слово
- Варианты ответа
- Ограничения
- Примеры
- Логическая таблица с размещением данных во всех датасорсах
- Логическая таблица с составным первичным ключом
- Логическая таблица с размещением данных в двух датасорсах
- Логическая таблица, созданная только на логическом уровне
- Логические таблицы с retention-правилами
- Партиционированные таблицы и партиции с распределением данных по регионам
- Партиционированная таблица и партиции с распределением данных по периодам времени
- Постоянная прокси-таблица в указанном датасорсе
- Временная прокси-таблица в случайном датасорсе из указанных
- Временная прокси-таблица в псевдослучайном датасорсе из сконфигурированных
- Снапшот-таблица без дополнительных опций
- Снапшот-таблица со строгим уровнем консистентности данных и без отслеживания удалений
- Снапшот-таблица с пропуском дубликатов PK и без отслеживания удалений
Поддерживается в версиях: 7.6 / 7.5 / 7.4 / 7.3 / 7.2 / 7.1 / 7.0 / 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 / 5.4 / 5.3 / 5.2 / 5.1 / 5.0.
Запрос создает таблицу в логической БД:
По умолчанию таблица создается на обоих уровнях — логическом и физическом. Ее также можно создать только на логическом уровне, указав LOGICAL_ONLY в запросе.
Запрос без LOGICAL_ONLY пересоздает физические таблицы с соответствующими именами, если они есть в датасорсах, и удаляет их данные.
Пересоздать таблицу только на логическом уровне, без удаления ее данных из хранилища, можно с помощью сочетания DROP TABLE … LOGICAL_ONLY и CREATE TABLE ... LOGICAL_ONLY.
Как работает запрос
Регистрация запроса
Каждое создание таблицы (кроме временных прокси-таблиц) записывается в журнал, который доступен с помощью запроса GET_CHANGES.
Обработка запроса
Запрос попадает в очередь операций и обрабатывается в порядке его поступления в очередь.
Успешный результат
При успешном выполнении запроса система создает:
- таблицу в логической схеме данных;
- соответствующие физические таблицы в датасорсах хранилища данных;
- [для логических таблиц и снапшот-таблиц] tslog-журнал таблицы в сервисной БД.
Запрос с LOGIСAL_ONLY не создает физические таблицы, но в остальном выполняется также.
Неуспешный результат
При ошибке исполнения корректного запроса система блокирует все последующие DDL-запросы в логической БД. О снятии такой блокировки см. в разделе Снятие блокировки DDL-запросов.
Синтаксис
Обычная логическая таблица (таблица, не участвующая в партиционировании данных):
CREATE 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 ('destination_datasource'[, ... ]) ]
[ RETENTION ('source_datasource', retention_period[, 'archive_datasource']) ]
[ ... ]
[ LOGICAL_ONLY ]
CREATE 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 ('destination_datasource'[, ... ]) ]
PARTITION BY (column_name[, ... ] )
[ LOGICAL_ONLY ]
CREATE TABLE [ IF NOT EXISTS ] [db_name.]table_name
PARTITION OF [db_name.]partitioned_table_name
[ DISTRIBUTED BY (column_name[, ... ]) ]
[ DATASOURCE_TYPE ('destination_datasource'[, ... ]) ]
[ RETENTION ('source_datasource', retention_period[, 'archive_datasource']) ]
[ ... ]
FOR VALUES FROM (left_end_of_range) TO (right_end_of_range)
[ ... ]
[ LOGICAL_ONLY ]
Прокси-таблица (альтернативно можно создать запросом CREATE PROXY TABLE):
CREATE 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 ('destination_datasource'[, ... ]) ]
OPTIONS ('
auto.version.records.enable=false;
[ set.entity.ttl.ms=ttl_value; ]
')
[ LOGICAL_ONLY ]
Снапшот-таблица:
CREATE TABLE [ IF NOT EXISTS ] [db_name.]table_name (
column_name data_type [ NULL | NOT NULL ],
[ ... , ]
[ PRIMARY KEY (column_name[, ... ] ) ]
)
[ DATASOURCE_TYPE ('destination_datasource'[, ... ]) ]
[ RETENTION ('source_datasource', retention_period) ]
[ ... ]
OPTIONS ('
auto.history.records.enable=false;
[ set.strict.consistency.enable={ false | true }; ]
[ set.delete.tracking.enable={ false | true }; ]
[ set.on.conflict.do ={ update | error | nothing }; ]
')
[ LOGICAL_ONLY ]
Параметры:
db_name-
Имя логической базы данных, в которой создается таблица. Опционально, если выбрана логическая БД, используемая по умолчанию.
table_name-
Имя создаваемой таблицы, уникальное среди логических сущностей логической БД.
column_name-
Имя столбца таблицы.
data_type-
Тип данных столбца
column_name. Возможные значения см. в разделе Логические типы данных. partitioned_table_name-
Имя партиционированной таблицы, к которой относится создаваемая партиция.
Ключевое слово IF NOT EXISTS
Включает проверку наличия сущности с таким именем до попытки создания таблицы. Если ключевое слово указано в запросе, успешный ответ возвращается при наличии или успешном создании таблицы, иначе — только при успешном создании таблицы.
Ключевое слово PRIMARY KEY (column_name[, ... ])
Задает список столбцов, входящих в первичный ключ таблицы. Обязательно для сущностей:
- обычных логических таблиц,
- партиционированных таблиц,
- прокси-таблиц, размещенных в датасорсах типа ADQM и ADG.
Снапшот-таблицы без первичного ключа поддерживают только добавление записей. Обновление и удаление записей недоступно.
Ключевое слово DISTRIBUTED BY (column_name[, ... ])
Задает список столбцов, входящих в ключ шардирования таблицы. Обязательно для датасорсов типа ADQM и ADG, опционально — для ADP и ADB.
Если указано, все столбцы ключа шардирования должны присутствовать в первичном ключе.
Ключевое слово PARTITION BY (column_name[, ... ])
Задает список столбцов, входящих в ключ партиционирования таблицы, и используется только для партиционированных таблиц.
Все указываемые столбцы должны присутствовать в первичном ключе. В состав ключа партиционирования не могут входить столбцы типа DOUBLE и FLOAT.
Ключевое слово DATASOURCE_TYPE ('destination_datasource'[, ... ])
Задает имена датасорсов:
- для размещения данных логической таблицы, партиции, прокси-таблицы или снапшот-таблицы;
- для трансфера данных из партиционированной таблицы в партиции.
Имена датасорсов должны соответствовать конфигурации.
Если ключевое слово отсутствует:
- данные обычных логических таблиц размещаются во всех датасорсах хранилища;
- данные прокси-таблицы размещаются в случайном или псевдослучайном датасорсе хранилища;
- для партиций, партиционированных таблиц и снапшот-таблиц используются все ADP-датасорсы (если хранилище состоит только из датасорсов типа ADP) или возвращается ошибка (иначе).
Ключевое слово RETENTION ('source_datasource', retention_period[, 'archive_datasource'])
Задает retention-правило для логической таблицы или снапшот-таблицы. Если отсутствует, исторические данные (для логической таблицы) или информация об удаленных записях (для снапшот-таблицы) хранятся бессрочно.
Для каждого датасорса таблицы можно настроить свое правило.
Снапшот-таблицы поддерживают только retention-правила, направленные на удаление данных.
Параметры:
source_datasource-
Имя датасорса-источника, для которого добавляется правило. Должно соответствовать конфигурации.
retention_period-
Срок хранения исторических данных (для логической таблицы) или информации об удаленных записях (для снапшот-таблицы) в датасорсе-источнике. Указывается в секундах.
При значении 0 данные перемещаются в хранилище холодных данных или удаляются при каждом исполнении retention-правила.
archive_datasource-
Имя датасорса-приемника, куда перемещаются исторические данные таблицы по истечении срока их хранения. Должно соответствовать конфигурации.
Используется для логических таблиц. Снапшот-таблицы поддерживают только retention-правила, направленные на удаление данных.
Если значение не указано, исторические данные с истекшим сроком хранения удаляются, а не перемещаются в хранилище холодных данных.
Ключевое слово FOR VALUES FROM (left_end_of_range) TO (right_end_of_range)
Задает диапазон значений ключа партиционирования и используется только для партиций, где:
left_end_of_range— левая граница диапазона партиционирования (граница включается в диапазон);right_end_of_range— правая граница диапазона партиционирования (граница включается в диапазон).
Диапазоны должны быть указаны так:
- левая граница диапазона меньше или равна его правой границе;
- диапазоны партиции не пересекаются;
- диапазоны партиций, относящихся к одной партиционированной таблице, не пересекаются и включают все возможные значения ключа партиционирования.
Значения диапазона партиционирования могут иметь любой из следующих типов (описание типов см. в разделе Логические типы данных):
BOOLEAN,VARCHAR[(n)],LINK,CHAR[(n)],UUID,BIGINT,INTEGER,DATE,TIME,TIMESTAMP.
Ключевое слово OPTIONS ('option=value[; ... ]')
Задает список дополнительных опций (option) и их значений (value). Доступные опции см. в таблице ниже.
| Опция | Назначение | Значение по умолчанию |
|---|---|---|
auto.version.records.enable | Версионирование данных таблицы. Значение false определяет прокси-таблицу | true |
set.entity.ttl.ms | Срок жизни таблицы в миллисекундах. Определяет временную прокси-таблицу | — |
auto.history.records.enable | Поддержка истории данных. Значение false определяет снапшот-таблицу | true |
set.strict.consistency.enable | Строгий уровень консистентности данных при чтении из снапшот-таблицы:
| SNAPSHOT_TABLE_STRICT_CONSISTENCY_ENABLED(по умолчанию — false) |
set.delete.tracking.enable | Отслеживание удаления записей из снапшот-таблицы:
set.on.conflict.do=error и set.on.conflict.do=nothing | SNAPSHOT_TABLE_DELETE_TRACKING_ENABLED(по умолчанию — true) |
set.on.conflict.do | Обработка дубликатов первичного ключа при загрузке и обновлении данных:
error и nothing несовместима с set.delete.tracking.enable=true | SNAPSHOT_TABLE_ON_CONFLICT_DO(по умолчанию — update) |
Если при создании снапшот-таблицы не заданы опции set.strict.consistency.enable, set.delete.tracking.enable и set.on.conflict.do, для них сохраняются значения из текущей конфигурации.
В снапшот-таблицах с опциями set.on.conflict.do=error и set.on.conflict.do=nothing невозможно обновление текущих записей.
Ключевое слово LOGICAL_ONLY
Позволяет создать таблицу только на логическом уровне (в логической схеме данных), не обновляя физическую схему в хранилище данных.
При пересоздании логических и снапшот-таблиц с LOGICAL_ONLY их данные становятся недоступны. Вернуть доступ можно только к текущим данным, выполнив операцию записи в пересозданной таблице.
Если ключевое слово не указано, таблица создается на логическом и физическом уровнях. При этом физические таблицы с соответствующими именами, если они есть в датасорсах, пересоздаются, а их данные удаляются.
Варианты ответа
В ответе возвращается:
- пустой объект ResultSet при успешном выполнении запроса;
- исключение при неуспешном выполнении запроса.
Ограничения
Ограничения выполнения
- Выполнение запроса недоступно, если таблица участвует в незавершенной операции записи или установлен запрет на изменение сущностей.
Ограничения имен
- Имена таблицы и ее столбцов должны соответствовать соглашениям об именах.
- Имена столбцов должны быть уникальны в рамках таблицы.
Ограничения ключей
- Первичный ключ должен включать все столбцы ключа шардирования и все столбцы ключа партиционирования.
Ограничения retention-правил
- Retention-правила доступны только для датасорсов типа ADB и ADP.
- Датасорс-источник и датасорс-приемник в правиле должны быть одного типа.
Ограничения партиционированных таблиц и партиций
- Датасорсы партиционированных таблиц и партиций могут быть только типа ADP.
- Вложенное партиционирование недоступно: партиция не может быть иметь свои партиции.
- Диапазоны партиционирования:
- Диапазоны партиции должны быть заданы от меньшего значения к большему без пересечения диапазонов между собой.
- Диапазоны партиций, относящихся к одной партиционированной таблице, должны включать все возможные значения ключа партиционирования без пересечения диапазонов между собой.
- Партиционированная таблица и все ее партиции должны находиться в одной логической БД и иметь одинаковую структуру.
- Retention-правила партиционированной таблицы не применяются к ее партициям.
Ограничения снапшот-таблиц
- Датасорсы снапшот-таблиц могут быть только типа ADP.
- Снапшот-таблицы без первичного ключа поддерживают только добавление записей, не поддерживая обновление и удаление.
- Retention-правила доступны только для снапшот-таблиц с включенным отслеживанием удаления записей.
- Retention-правила снапшот-таблиц могут только удалять информацию об удаленных записях; охлаждение этой информации не поддерживается.
- В снапшот-таблицах с опциями
set.on.conflict.do=errorиset.on.conflict.do=nothingневозможно обновление текущих записей (дляerrorвозвращается ошибка; дляnothingпропускаются записи с дубликатами первичного ключа).
Ограничения опций
- Опция
set.on.conflict.doнедоступна для снапшот-таблиц без первичного ключа. - Опция
set.delete.tracking.enable=trueнесовместима с опциямиset.on.conflict.do=errorиset.on.conflict.do=nothing.
Другие ограничения
- Информационная схема обновляется асинхронно, поэтому созданная таблица может не сразу появиться в информационной схеме.
- HTTP-запросы с одинаковым значением
queryIdи одинаковым списком датасорсов вDATASOURCE_TYPE/конфигурации создают прокси-таблицы в одном датасорсе, только если он включен при исполнении всех таких запросов.
Примеры
Логическая таблица с размещением данных во всех датасорсах
CREATE TABLE marketing.sales (
id BIGINT NOT NULL,
transaction_date TIMESTAMP NOT NULL,
product_code VARCHAR(256) NOT NULL,
product_units BIGINT NOT NULL,
store_id BIGINT NOT NULL,
description VARCHAR(256),
PRIMARY KEY (id)
)
DISTRIBUTED BY (id)
Логическая таблица с составным первичным ключом
CREATE TABLE marketing.stores (
id BIGINT NOT NULL,
category VARCHAR(256) NOT NULL,
region VARCHAR(256) NOT NULL,
address VARCHAR(256) NOT NULL,
description VARCHAR(256),
PRIMARY KEY (id, region)
)
DISTRIBUTED BY (id)
DATASOURCE_TYPE ('adp', 'adb', 'adqm')
Логическая таблица с размещением данных в двух датасорсах
CREATE TABLE marketing.clients (
id BIGINT NOT NULL,
first_name VARCHAR(256) NOT NULL,
last_name VARCHAR(256) NOT NULL,
patronymic_name VARCHAR(256),
birth_date DATE,
PRIMARY KEY (id)
) DISTRIBUTED BY (id)
DATASOURCE_TYPE ('adp','adqm')
Логическая таблица, созданная только на логическом уровне
CREATE TABLE marketing.sales1 (
id BIGINT NOT NULL,
transaction_date TIMESTAMP NOT NULL,
product_code VARCHAR(256) NOT NULL,
product_units BIGINT NOT NULL,
store_id BIGINT NOT NULL,
description VARCHAR(256),
PRIMARY KEY (id)
)
DISTRIBUTED BY (id)
LOGICAL_ONLY
Логические таблицы с retention-правилами
Таблица с периодическим остужением и удалением данных из двух датасорсов:
-- создание логической таблицы clients_all_adp с размещением в датасорсах adp и adp2,
-- откуда, в зависимости от датасорса,
-- исторические данные старше месяца будут перемещаться в хранилище холодных данных (adp -> adp_archive) или удаляться (adp2)
CREATE TABLE marketing.clients_all_adp (
id BIGINT NOT NULL,
first_name VARCHAR(256) NOT NULL,
last_name VARCHAR(256) NOT NULL,
patronymic_name VARCHAR(256),
birth_date DATE,
PRIMARY KEY (id)
) DISTRIBUTED BY (id)
DATASOURCE_TYPE ('adp', 'adp2')
RETENTION ('adp', 2678400, 'adp_archive')
RETENTION ('adp2', 2678400)
Таблица с периодическим остужением данных одного датасорса:
-- создание логической таблицы clients_adp с размещением данных в датасорсе adp,
-- откуда исторические данные старше недели будут перемещаться в хранилище холодных данных
CREATE TABLE marketing.clients_adp (
id BIGINT NOT NULL,
first_name VARCHAR(256) NOT NULL,
last_name VARCHAR(256) NOT NULL,
patronymic_name VARCHAR(256),
birth_date DATE,
PRIMARY KEY (id)
) DISTRIBUTED BY (id)
DATASOURCE_TYPE ('adp')
RETENTION ('adp', 604800, 'adp_archive')
Таблица с периодическим удалением данных из одного датасорса:
-- создание логической таблицы clients_adp2 с размещением данных в датасорсе adp2,
-- откуда исторические данные старше недели будут удаляться
CREATE TABLE marketing.clients_adp2 (
id BIGINT NOT NULL,
first_name VARCHAR(256) NOT NULL,
last_name VARCHAR(256) NOT NULL,
patronymic_name VARCHAR(256),
birth_date DATE,
PRIMARY KEY (id)
) DISTRIBUTED BY (id)
DATASOURCE_TYPE ('adp2')
RETENTION ('adp2', 604800)
Партиционированные таблицы и партиции с распределением данных по регионам
Таблицы с партиционированием данных по кодам регионов:
-- таблица с данными магазинов, партиционированными по регионам
CREATE TABLE marketing.stores_partitioned_by_regions (
id BIGINT NOT NULL,
category VARCHAR(256),
region_code INTEGER NOT NULL,
address VARCHAR(256) NOT NULL,
rent_agreement_id BIGINT NOT NULL,
description VARCHAR(256),
PRIMARY KEY (id, region_code)
)
DATASOURCE_TYPE ('adp', 'adp2', 'adp3')
PARTITION BY (region_code);
-- таблица с данными арендных договоров магазинов, партиционированными по регионам
CREATE TABLE marketing.rent_agreements_partitioned_by_regions (
id BIGINT NOT NULL,
store_id BIGINT NOT NULL,
number VARCHAR NOT NULL,
signature_date DATE,
effective_date DATE,
closing_date DATE,
region_code INTEGER NOT NULL,
description VARCHAR,
PRIMARY KEY(id, region_code)
)
DATASOURCE_TYPE ('adp')
PARTITION BY (region_code);
Партиции для распределения данных магазинов по регионам:
-- партиция для записей о магазинах Москвы
CREATE TABLE marketing.stores_moscow
PARTITION OF marketing.stores_partitioned_by_regions
DATASOURCE_TYPE ('adp', 'adp3')
RETENTION ('adp', 2678400, 'adp4')
FOR VALUES FROM (77) TO (77)
FOR VALUES FROM (177) TO (177)
FOR VALUES FROM (97) TO (97)
FOR VALUES FROM (197) TO (197)
FOR VALUES FROM (99) TO (99)
FOR VALUES FROM (199) TO (199)
FOR VALUES FROM (777) TO (777);
-- партиция для записей о магазинах Санкт-Петербурга
CREATE TABLE marketing.stores_spb
PARTITION OF marketing.stores_partitioned_by_regions
DATASOURCE_TYPE ('adp', 'adp2')
RETENTION ('adp', 2678400, 'adp4')
FOR VALUES FROM (78) TO (78)
FOR VALUES FROM (98) TO (98)
FOR VALUES FROM (178) TO (178);
-- партиция для записей о магазинах Новосибирска
CREATE TABLE marketing.stores_novosibirsk
PARTITION OF marketing.stores_partitioned_by_regions
DATASOURCE_TYPE ('adp2', 'adp3')
RETENTION ('adp2', 2678400, 'adp4')
FOR VALUES FROM (54) TO (54)
FOR VALUES FROM (154) TO (154);
... -- партиции для других регионов
Партиции для распределения данных договоров аренды по регионам:
-- партиция для записей об арендных договорах в Москве
CREATE TABLE marketing.rent_agreements_moscow
PARTITION OF marketing.rent_agreements_partitioned_by_regions
DATASOURCE_TYPE ('adp')
RETENTION ('adp', 2678400, 'adp4')
FOR VALUES FROM (77) TO (77)
FOR VALUES FROM (177) TO (177)
FOR VALUES FROM (97) TO (97)
FOR VALUES FROM (197) TO (197)
FOR VALUES FROM (99) TO (99)
FOR VALUES FROM (199) TO (199)
FOR VALUES FROM (777) TO (777);
... -- партиции для других регионов
Партиционированная таблица и партиции с распределением данных по периодам времени
Таблица с партиционированием данных по дате и времени платежной транзакции:
CREATE TABLE marketing.sales_partitioned (
id BIGINT NOT NULL,
transaction_date TIMESTAMP NOT NULL,
product_code VARCHAR(256),
product_units BIGINT,
store_id BIGINT,
description VARCHAR(256),
PRIMARY KEY (id, transaction_date)
)
DATASOURCE_TYPE ('adp', 'adp2')
PARTITION BY (transaction_date)
Партиции для распределения данных транзакций по месяцам:
-- партиция для записей о транзакциях за январь 2023 года
CREATE TABLE marketing.sales_jan_2023
PARTITION OF marketing.sales_partitioned
DATASOURCE_TYPE ('adp', 'adp2')
FOR VALUES FROM ('2023-01-01 00:00:00') TO ('2023-01-31 23:59:59');
-- партиция для записей о транзакциях за февраль 2023 года
CREATE TABLE marketing.sales_feb_2023
PARTITION OF marketing.sales_partitioned
DATASOURCE_TYPE ('adp', 'adp2')
FOR VALUES FROM ('2023-02-01 00:00:00') TO ('2023-02-28 23:59:59');
... -- партиции для записей за другие месяцы
Постоянная прокси-таблица в указанном датасорсе
CREATE TABLE IF NOT EXISTS marketing.payments_proxy_in_specified_ds (
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')
OPTIONS ('auto.version.records.enable=false;')
Временная прокси-таблица в случайном датасорсе из указанных
Временная прокси-таблица с первичным ключом и ключом шардирования и размещением в случайном включенном датасорсе из указанных в DATASOURCE_TYPE (см. полный HTTP-запрос ниже):
CREATE TABLE IF NOT EXISTS marketing.payments_proxy_temp_in_any_listed_ds (
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', 'adp2')
OPTIONS ('
auto.version.records.enable=false;
set.entity.ttl.ms=120000;
')
HTTP-запрос для создания прокси-таблицы payments_proxy_temp_in_any_listed_ds
В примере ниже показан HTTP-запрос через конечную точку /query. Альтернативно запрос можно отправить через конечную точку /ddl или по JDBC.
curl -X 'POST' \
'http://localhost:9090/api/v1/datamarts/query' \
-H 'x-request-id: 18ab9a21-fe66-4cdb-8bfd-e43cad2e8d96' \
-H 'Content-Type: application/json' \
-d '{
"query": "CREATE TABLE IF NOT EXISTS marketing.payments_proxy_temp_in_any_listed_ds (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', 'adp2') OPTIONS ('auto.version.records.enable=false; set.entity.ttl.ms=120000;')"
}'
Временная прокси-таблица в псевдослучайном датасорсе из сконфигурированных
Временная прокси-таблица без первичного ключа и ключа шардирования с размещением в псевдослучайном включенном датасорсе из сконфигурированных (без DATASOURCE_TYPE, но с queryId; см. полный HTTP-запрос ниже):
CREATE TABLE IF NOT EXISTS marketing.payments_proxy_temp_in_seed_configured_ds (
id BIGINT NOT NULL,
agreement_id BIGINT,
type_code VARCHAR(16),
amount DOUBLE,
currency_code VARCHAR(3),
description VARCHAR
)
OPTIONS ('
auto.version.records.enable=false;
set.entity.ttl.ms=120000;
')
HTTP-запрос для создания прокси-таблицы payments_proxy_temp_in_seed_configured_ds
В примере ниже показан HTTP-запрос через конечную точку /ddl. Альтернативно запрос можно отправить через конечную точку /query.
curl -X 'POST' \
'http://localhost:9090/api/v1/datamarts/ddl' \
-H 'x-request-id: a9a8300e-32fc-4b02-a10b-6d7d553985ad' \
-H 'Content-Type: application/json' \
-d '{
"query": "CREATE TABLE IF NOT EXISTS marketing.payments_proxy_temp_in_seed_configured_ds (id BIGINT NOT NULL, agreement_id BIGINT, type_code VARCHAR(16), amount DOUBLE, currency_code VARCHAR(3), description VARCHAR) OPTIONS ('auto.version.records.enable=false; set.entity.ttl.ms=120000;')",
"queryId": "28258592"
}'
Снапшот-таблица без дополнительных опций
-- значения дополнительных опций для таблицы берутся из конфигурации
CREATE TABLE IF NOT EXISTS marketing.stores_snapshot (
id BIGINT NOT NULL,
category VARCHAR(256) NOT NULL,
region VARCHAR(256) NOT NULL,
address VARCHAR(256) NOT NULL,
description VARCHAR(256),
PRIMARY KEY (id, region)
)
DATASOURCE_TYPE ('adp', 'adp2')
OPTIONS ('auto.history.records.enable=false;')
Снапшот-таблица со строгим уровнем консистентности данных и без отслеживания удалений
-- опция set.on.conflict.do не задана — для таблицы сохраняется значение параметра конфигурации SNAPSHOT_TABLE_ON_CONFLICT_DO
CREATE TABLE IF NOT EXISTS marketing.sales_snapshot (
id BIGINT NOT NULL,
transaction_date TIMESTAMP NOT NULL,
product_code VARCHAR(256) NOT NULL,
product_units BIGINT NOT NULL,
store_id BIGINT NOT NULL,
description VARCHAR(256),
PRIMARY KEY (id)
)
DATASOURCE_TYPE ('adp', 'adp2')
OPTIONS ('
auto.history.records.enable=false;
set.delete.tracking.enable=false;
set.strict.consistency.enable=true;
')
Снапшот-таблица с пропуском дубликатов PK и без отслеживания удалений
-- опция set.strict.consistency.enable не задана — для таблицы сохраняется значение параметра конфигурации SNAPSHOT_TABLE_STRICT_CONSISTENCY_ENABLED
CREATE TABLE IF NOT EXISTS marketing.sales_snapshot_on_conflict_do_nothing (
id BIGINT NOT NULL,
transaction_date TIMESTAMP NOT NULL,
product_code VARCHAR(256) NOT NULL,
product_units BIGINT NOT NULL,
store_id BIGINT NOT NULL,
description VARCHAR(256),
PRIMARY KEY (id)
)
DATASOURCE_TYPE ('adp', 'adp2')
OPTIONS ('
auto.history.records.enable=false;
set.delete.tracking.enable=false;
set.on.conflict.do=nothing;
')