---
metadata:
  - name: generator
    content: Diplodoc Platform v5.52.0
alternate:
  - https://ydb.tech/docs/en/reference/ydb-cli/workload-tpcds.md
  - https://ydb.tech/docs/ru/reference/ydb-cli/workload-tpcds.md
  - href: ru/reference/ydb-cli/workload-tpcds.md
    type: text/markdown
    title: Markdown version
  - href: ../../llms.txt
    type: text/markdown
    title: llms.txt
sourcePath: ru/core/reference/ydb-cli/workload-tpcds.md
---
> **Documentation Index:** Fetch the complete configuration index at https://ydb.tech/docs/ru/llms.txt

# TPC-DS нагрузка

Нагрузка базируется на документе TPC-DS [документация](https://www.tpc.org/TPC_Documents_Current_Versions/pdf/TPC-DS_v3.2.0.pdf), а запросы и схемы таблиц адаптированы под YDB.

Тест генерирует типичную рабочую нагрузку в области помощи в принятии решений.

## Общие параметры команд

Все команды поддерживают общий параметр `--path`, который задает путь к каталогу с таблицами в базе данных:

```bash
ydb  workload tpcds --path tpcds/s1 ...
```

### Доступные параметры { #common_options }

| Имя               | Описание                     | Значение по умолчанию |
|-------------------|------------------------------|-----------------------|
| `--path` или `-p` | Путь к каталогу с таблицами. | `/`                   |

## Инициализация нагрузочного теста {#init}

Перед запуском теста создайте таблицу:

```bash
ydb workload tpcds --path tpcds/s1 init
```

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

```bash
ydb workload tpcds init --help
```

<!-- source: ru/reference/ydb-cli/_includes/workload/init_options_tpc.md -->
### Доступные параметры {#init_options}

Имя | Описание | Значение по умолчанию
---|---|---
`--store <значение>` | Тип хранилища таблиц. Возможные значения: `row`, `column`, `external-s3`. | `column`
`--external-s3-prefix <значение>` | Актуально только для внешних таблиц. Корневой путь к набору данных в S3-хранилище. |
`--external-s3-endpoint <значение>` или `-e <значение>` | Актуально только для внешних таблиц. Ссылка на S3-Bucket с данными. |
`--string` | Использовать для текстовых полей тип `String`. | `Utf8`
`--datetime` | Использовать для полей, связанных со временем типа `Date`, `Datetime` и `Timestamp`. | `Date32`, `Datetime64` и `Timestamp64`
|  `--partition-size`                                     | Максимальный размер партиции в мегабайтах (AUTO_PARTITIONING_PARTITION_SIZE_MB) для строчных таблиц | 2000 |
`--float-mode <значение>` | Какой тип данных использовать для полей вещественного типа. Возможные значения: `double` и `decimal`. `double` - использовать тип `Double`, `decimal` - `Decimal` с размерностью, заданной стандартом теста. | `double`
`--scale` | Задает процент от полного размера данных и нагрузки теста, который будет использоваться. | 1

`--clear` | Если по указанному пути таблица уже была создана, она будет удалена. |
<!-- endsource: ru/reference/ydb-cli/_includes/workload/init_options_tpc.md -->

## Загрузка данных в таблицу { #load }

Загрузите данные в таблицу. Данные будут сгенерированы непосредственно ydb:

```bash
ydb workload tpcds --path tpcds/s1 import generator --scale 1
```

Посмотрите описание команды для загрузки данных:

```bash
ydb workload tpcds import --help
```

### Доступные параметры {#load_files_options}

| Имя                                               | Описание                                                                                                                                       | Значение по умолчанию |
|---------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------|
| `--scale <значение>`                              | Масштаб данных. Обычно используются степени десяти. Так же поддерживается и дробный масштаб, неописанный в спецификации TPC-DS. Он может быть полезен для быстрого тестирования небольших баз YDB. Примеры: `0.1`, `0.3` |                       |
| `--tables <значение>`                             | Список таблиц для генерации, разделенный запятыми. Доступные таблицы: `customer`, `nation`, `order_line`, `part_psupp`, `region`, `supplier`.  | Все таблицы           |
| `--proccess-count <значение>` или `-C <значение>` | Генерация данных может быть разбита на несколько процессов, этот параметр задает количество процессов.                                      | 1                     |
| `--proccess-index <значение>` или `-i <значение>` | Генерация данных может быть разбита на несколько процессов, этот параметр задает номер процесса.                                            | 0.                    |
| `--state <путь>`                                  | Путь к файлу состояния загрузки. Если загрузка была прервана по какой-то причине, при новом запуске загрузка будет продолжена с того же места. |                       |
| `--clear-state`                                   | Актуально, если задан параметр `--state`. Очистить файл состояния и начать загрузку сначала.                                                   |                       |
| `--dry-run`                                       | Не выполнять загрузку данных в базу данных, только подготовить данные и вывести об этом сообщение.                                             |                       |

<!-- source: ru/reference/ydb-cli/_includes/workload/load_options.md -->
### Общие параметры команды import {#load_options}

Имя | Описание | Значение по умолчанию
---|---|---
`--upload-threads <значение>` или `-t <значение>` | Количество потоков исполнения для подготовки данных. | Рассчитывается автоматически и равно числу доступных ядер на клиентской машине.
`--bulk-size <значение>` | Размер порции для отправки данных в строках. | 10000
`--max-in-flight <значение>` | Максимальное количество порций данных, одновременно находящихся в обработке. | 128
`--file-output-path <значение>` или `-f <путь>` | Если эта опция установлена, данные не будут загружены в базу данных, а будут сохранены в каталоге <путь>. |
<!-- endsource: ru/reference/ydb-cli/_includes/workload/load_options.md -->

## Запуск нагрузочного теста { #run }

Запустите нагрузку:

```bash
ydb workload tpcds --path tpcds/s1 run
```

В течение теста на экран выводится статистика по нагрузке для каждого запроса.

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

```bash
ydb workload tpcds run --help
```

<!-- source: ru/reference/ydb-cli/_includes/workload/run_options.md -->
### Общие параметры для всех видов нагрузки {#run_options}

Имя | Описание | Значение по умолчанию
---|---|---
`--dry-run` | Не выполнять инициализационные запросы, а только вывести их текст. |  
`--check-canonical` или `-c` | Использовать специальную версию запросов (они имеют детерминированные ответы) и сверять результаты с каноническими. |
`--output <значение>` |  Имя файла, в котором будут сохранены результаты выполнения запросов. | `results.out`
`--iterations <значение>` | Количество выполнений каждого из запросов нагрузки. | `1`
`--json <имя>` | Имя файла, в котором будет сохранена статистика выполнения запросов в формате `json`. | Файл не сохраняется
`--ministat <имя>` | Имя файла, в котором будет сохранена статистика выполнения запросов в формате `ministat`. | Файл не сохраняется
`--csv <имя>` | Имя файла для сохранения CSV-версии таблицы с результатами. | Файл не сохраняется
`--plan  <имя>` | Имя файла для сохранения плана запроса. Если задано, то сохраняются файлы `<имя>.<номер запроса>.explain` и `<имя>.<номер запроса>.<номер итерации>` с планами в нескольких форматах: `ast`, `json`, `svg` и `table`. | Планы не сохраняются.
`--query-prefix <префикс>` | Префикс запроса. Каждый префикс будет добавлен отдельной строкой в начало каждого запроса. Если нужно указать несколько префиксов, используйте параметр несколько раз. | По умолчанию не задан
`--retries` | Количество повторных попыток выполнения каждого запроса | `0`
`--include` | Имена, номера или диапазоны номеров запросов, которые нужно выполнить в рамках нагрузки. Указываются через запятую, например: `1,2,4-6`. | Все запросы
`--exclude` | Имена, номера или диапазоны номеров запросов, которые нужно исключить из нагрузки. Указываются через запятую, например: `1,2,4-6`. |
`--verbose` или `-v` | Выводить больше информации на экран в процессе выполнения запросов. |
`--global-timeout <значение>` | Общий таймаут на выполнение всех запросов. Задаётся в текстовом формате, например: `0.5s`, `1m`, `100us` и т.д. | Отсутствует. Время не ограничено.
`--request-timeout <значение>` | Таймаут на выполнение каждой итерации каждого запроса. Задаётся в текстовом формате, например: `0.5s`, `1m`, `100us` и т.д. | Отсутствует. Время не ограничено.
`--threads <значение>` или `-t <значение>` | Количество потоков, генерирующих нагрузку. Ноль означает, что запросы будут выполняться в основном потоке; при ином значении запросы будут перемешаны. | `0`
<!-- endsource: ru/reference/ydb-cli/_includes/workload/run_options.md -->

### Опции, специфичные для TPC-DS { #run_tpcds_options }

| Имя                       | Описание                                                                                                                                                                                                                                                                                                                                                             | Значение по умолчанию |
|---------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------|
| `--syntax <значение>`     | Какой вариант синтаксиса запросов использовать: `yql`. Про работу с синтаксисом YQL можно прочитать [здесь](../../yql/reference/index.md).                                                                                                                                                     | `yql`                  |
| `--float_mode <значение>` | Режим работы с числами с плавающей точкой. Может быть `float`, `decimal` или `decimal_ydb`. Если установлено значение `float`, будет использоваться тип float; `decimal` означает использование Decimal с каноническим размером, указанным в спецификации TPC-DS (различается для разных полей и таблиц, см. спецификацию); `decimal_ydb` означает преобразование всех float в Decimal(22, 9). Подробнее про тип Decimal см. в [документации](../../yql/reference/types/primitive.md#numeric). | `float`                |
| `--scale <значение>`      | Scale factor. См. спецификацию TPC-DS, глава 3. Используется в запросах TPC-DS. Так же поддерживаются и дробные значения, неописанные в спецификации TPC-DS, например `0.1`, `0.3`. Для масштабов `1`, `10`, `100`, `1000` заданы канонические ответы (см. описание опции `--check-canonical`).                                                                                                                                                                        | 1                      |

## Очистка данных теста { #cleanup }

Запустите очистку:

```bash
ydb workload tpcds --path tpcds/s1 clean
```

Команда не имеет параметров.
