Skip to main content Link Menu Expand (external link) Document Search Copy Copied

Вы находитесь на странице архива. Актуальная документация доступна по ссылке.

Выгрузка данных

Содержание раздела
  1. Создание топика (опционально)
  2. Выгрузка данных в топик
  3. Примеры
    1. Выгрузка из логической таблицы
    2. Выгрузка из материализованного представления
    3. Выгрузка из standalone-таблицы

Система позволяет выгружать большие объемы данных, а также изменений, выполненных в указанных дельтах или операциях записи. Данные можно выгружать из следующих сущностей и их соединений:

Под большим объемом данных подразумевается количество записей от нескольких сотен до нескольких миллионов. Чтобы получить небольшой объем данных, можно использовать запрос данных.

Данные выгружаются из следующего датасорса:

  • указанного в запросе на выгрузку или наиболее оптимального — если данные выгружаются из логических таблиц, логических и материализованных представлений;
  • содержащего standalone-таблицу — если данные выгружаются из standalone-таблицы или ее соединений с другими сущностями.

Создание топика (опционально)

Данные выгружаются из системы в виде сообщений топиков Kafka. Поэтому, если в брокере сообщений Kafka не настроено автоматическое создание топиков, создайте топики вручную.

Чтобы создать топик, следуйте любой из инструкций в документации Kafka:

Рекомендации о разделении данных по топикам см. в разделе Рекомендации по топикам Kafka.

Выгрузка данных в топик

Чтобы выгрузить данные из системы топик Kafka:

  1. Создайте внешнюю таблицу выгрузки, если она отсутствует.
  2. Выполните INSERT INTO download_external_table. В запросе укажите внешнюю таблицу выгрузки, определяющую параметры выгрузки.

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

Примеры

Выгрузка из логической таблицы

-- выбор логической базы данных marketing в качестве базы данных по умолчанию
USE marketing;

-- создание внешней таблицы для выгрузки из логической таблицы sales
CREATE DOWNLOAD EXTERNAL TABLE sales_ext_download (
  id BIGINT,
  transaction_date TIMESTAMP,
  product_code VARCHAR(256),
  product_units BIGINT,
  store_id BIGINT,
  description VARCHAR(256)
)
LOCATION  'kafka://zk1:2181,zk2:2181,zk3:2181/sales_out'
FORMAT 'AVRO'
CHUNK_SIZE 1000;

-- запуск выгрузки данных из логической таблицы sales
INSERT INTO sales_ext_download 
SELECT * FROM sales WHERE product_units > 2 FOR SYSTEM_TIME AS OF DELTA_NUM 10;

Выгрузка из материализованного представления

-- создание внешней таблицы для выгрузки из материализованного представления sales_by_stores
CREATE DOWNLOAD EXTERNAL TABLE sales_by_stores_ext_download (
store_id BIGINT,
product_code VARCHAR(256),
product_units INT
)
LOCATION 'kafka://$kafka/sales_by_stores_out'
FORMAT 'AVRO'
CHUNK_SIZE 1000;

-- запуск выгрузки данных из материализованного представления sales_by_stores
INSERT INTO sales_by_stores_ext_download
SELECT * FROM sales_by_stores WHERE product_code IN ('ABC0002', 'ABC0003', 'ABC0004') DATASOURCE_TYPE = 'adqm';

Выгрузка из standalone-таблицы

-- создание внешней таблицы выгрузки
CREATE DOWNLOAD EXTERNAL TABLE marketing.payments_ext_download (
id BIGINT NOT NULL,
agreement_id BIGINT,
code VARCHAR(16),
amount DOUBLE,
currency_code VARCHAR(3),
description VARCHAR
)
LOCATION 'kafka://$kafka/payments_out'
FORMAT 'AVRO'
CHUNK_SIZE 1000;

-- запуск выгрузки данных из standalone-таблицы, на которую указывает внешняя readable-таблица payments_ext_read_adg
INSERT INTO marketing.payments_ext_download
SELECT s.id, s.agreement_id, s.code, s.amount, s.currency_code, s.description
FROM marketing.payments_ext_read_adg AS s
WHERE code = 'MONTH_FEE' AND agreement_id BETWEEN 100 AND 150;