[Документация Yandex Cloud](../../../index.md) > [Yandex DataLens](../../index.md) > Чарты > QL-чарты > Создание QL-чарта

# Создание QL-чарта в Yandex DataLens



Создать QL-чарт можно одним из способов:

* [через главную страницу](#main-page);
* [через подключение](#connection).

{% note warning %}

Управление правами для QL-чартов по данным Monitoring и Prometheus выполняется не только на стороне DataLens, но и в самих сервисах Monitoring и Prometheus.

Для просмотра графика в DataLens пользователю необходимы права на чарт и подключение, а также на чтение данных из конкретного Prometheus API или проекта в Monitoring.

{% endnote %}

Для QL-чартов доступны те же [общие настройки](../../concepts/chart/settings.md#common-settings) и [настройки секций](../../concepts/chart/settings.md#section-settings), что и для чартов на основе датасета. Для полей чарта доступны только некоторые [настройки показателей](../../concepts/chart/settings.md#indicator-settings).

На каждом шаге можно [отменить или повторно выполнить](../../concepts/chart/settings.md#undo-redo) внесенные изменения в пределах текущей версии.

## Создание QL-чарта через главную страницу {#main-page}


{% note warning %}

Если вы работаете с новой объектной моделью DataLens, включающей [воркбуки и коллекции](../../workbooks-collections/index.md):

1. Перейдите на [главную страницу](https://datalens.ru/?skipPromo=true) DataLens. На панели слева выберите ![collections](../../../_assets/console-icons/rectangles-4.svg) **Коллекции и воркбуки**.
1. Откройте воркбук, в правом верхнем углу нажмите **Создать** и выберите нужный объект.

Продолжайте инструкцию с шага 3.

{% endnote %}



1. Перейдите на [главную страницу](https://datalens.ru/?skipPromo=true) DataLens.


1. На рабочей панели слева выберите ![image](../../../_assets/console-icons/chart-column.svg) **Чарты**.
1. Нажмите кнопку **Cоздать чарт** → **QL-чарт**.
1. В открывшемся окне выберите **Тип чарта**:

   {% list tabs %}

   - SQL

     1. Нажмите **Выбрать подключение**.
     1. Выберите из списка подключение БД, к которому у вас есть доступ. Убедитесь, что в подключении активирована настройка **Уровень доступа SQL-запросов** → **SQL на чтение**.
     1. Нажмите **Создать**.
     1. На вкладке **Запрос** укажите запрос, используя SQL-диалект БД, к которой вы обращаетесь.
     1. В левом нижнем углу нажмите кнопку **Запустить**.

     После выполнения запроса появится визуализация на основе ваших данных.

     {% cut "Пример запроса для БД ClickHouse®" %}
     
     ```sql
     SELECT Category, Month, ROUND(SUM(Sales))
     FROM samples.SampleLite
     WHERE Category in not_var{{category}} -- переменная, используемая в селекторе
     GROUP BY Category, Month -- группировка по категории и месяцу
     ORDER BY Category, Month -- сортировка по категории и месяцу
     ```
     
     {% endcut %}

   - Prometheus

     1. Нажмите **Выбрать подключение**.
     1. Выберите из списка подключение Prometheus, к которому у вас есть доступ.
     1. Нажмите **Создать**.
     1. Нажмите **Добавить запрос** и укажите запрос на языке Prometheus.
     1. В левом нижнем углу нажмите кнопку **Запустить**.

     После выполнения запроса появится визуализация на основе ваших данных.

     {% cut "Пример запроса для Prometheus" %}
     
     ```sql
     sum by (name) (rate(container_cpu_user_seconds_total{container_label_org_label_schema_group="monitoring"}[1m]) * 100  / scalar(count(node_cpu_seconds_total{mode="user"})))
     ```
     
     {% endcut %}

     QL-чарты по данным Prometheus можно параметризовать так же, как и чарты типа SQL. Также для этого типа чартов предопределены обязательные глобальные параметры, которые создаются автоматически при создании QL-чарта. Вы можете отредактировать значения по умолчанию для этих параметров.

     | Параметр | Тип данных | Описание |
     |---|---|---|
     | from | datetime | Нижняя временная граница. |
     | to | datetime | Верхняя временная граница. |
     | step | number | Шаг по временной шкале в секундах. |

     {% note info %}

     На дашборде вы можете использовать один селектор для даты со специальным именем `interval` вместо двух селекторов `from` и `to`.

     {% endnote %}

   - Monitoring

     
     1. Нажмите **Выбрать подключение**.
     1. Выберите из списка подключение Monitoring, к которому у вас есть доступ.
     1. Нажмите **Создать**.
     1. Нажмите **Добавить запрос** и укажите запрос на языке Monitoring.
     1. В левом нижнем углу нажмите кнопку **Запустить**.


     После выполнения запроса появится визуализация на основе ваших данных.

     {% cut "Пример запроса для Monitoring" %}
     
     ```json
     {project="monitoring", sensor="nodejs.heap_space.size.bytes"}
     ```
     
     {% endcut %}

     QL-чарты по данным Monitoring можно параметризовать так же, как и чарты типа SQL. Также для этого типа чартов предопределены обязательные глобальные параметры, которые создаются автоматически при создании QL-чарта. Вы можете отредактировать значения по умолчанию для этих параметров.

     | Параметр | Тип данных | Описание |
     |---|---|---|
     | from | datetime | Нижняя временная граница. |
     | to | datetime | Верхняя временная граница. |

     {% note info %}

     На дашборде вы можете использовать один селектор для даты со специальным именем `interval` вместо двух селекторов `from` и `to`.

     {% endnote %}

   {% endlist %}

## Создание QL-чарта через подключение {#connection}

1. Перейдите к уже созданному подключению БД.
1. Убедитесь, что в подключении активирована настройка **Уровень доступа SQL-запросов** → **SQL на чтение**.
1. В правом верхнем углу нажмите **Создать QL-чарт**.
1. На вкладке **Запрос** укажите запрос, используя SQL-диалект БД, к которой вы обращаетесь.
1. В левом нижнем углу нажмите кнопку **Запустить**.

После выполнения запроса появится визуализация на основе ваших данных.


## Добавление параметров селектора {#selector-parameters}

Для [QL-чартов](../../concepts/chart/index.md#sql-charts) в области редактирования чарта на вкладке **Параметры** можно управлять параметрами селектора, а на вкладке **Запрос** указывать переменную в самом запросе в формате `not_var{{variable}}`.

Чтобы добавить параметр:

1. Перейдите на вкладку **Параметры** при создании чарта.
1. Нажмите **Добавить параметр**.
1. Установите тип значения для параметра. Например, `date-interval`.
1. Задайте имя параметру. Например, `interval`.
1. Установите значения по умолчания. Например, `2017-01-01 — 2019-12-31`.

   ![image](../../../_assets/datalens/parameters/date-interval.png =450x167)

   Для параметров типа `date`, `datetime`, `date-interval` и `datetime-interval` значения можно указать несколькими способами:

   * **Точная дата** — чтобы указать точное значение.
   * **Смещение от текущей даты** — чтобы указать относительное значение, которое будет обновляться автоматически.
   
   Для быстрого заполнения значений используйте пресеты.

Чтобы управлять значениями параметра на дашборде, [создайте селектор](../dashboard/add-selector.md) с ручным вводом и в поле **Имя поля или параметра** укажите имя параметра.

### Интервалы {#params-interval}

Параметры типа `date-interval` и `datetime-interval` можно использовать в коде запроса только с постфиксами `_from` и `_to`. Например, для параметра `interval` со значением `2017-01-01 — 2019-12-31` нужно указать:

* `interval_from` — для получения начала интервала (`2017-01-01`);
* `interval_to` — для получения конца интервала (`2019-12-31`).

{% cut "Пример запроса" %}

```sql
SELECT toDate(Date) as datedate, count ('Oreder ID')
FROM samples.SampleLite
WHERE not_var{{interval_from}} < datedate AND datedate < not_var{{interval_to}}
GROUP BY datedate
ORDER BY datedate
```

{% endcut %}

### Подстановка параметра в запрос QL-чарта {#params-in-select}

Значения для параметра из селектора в QL-чарт приходят в виде:

* единичного значения — если выбран один элемент;
* кортежа ([tuple](https://docs.python.org/3/library/stdtypes.html#tuples)) — если выбрано несколько элементов.

Если в тексте запроса для подключений ClickHouse® или PostgreSQL перед параметром указан оператор `in`, то подставляемое значение всегда преобразовывается в кортеж. Для остальных подключений автоматического преобразования в кортеж не происходит. Запрос с оператором `in` отработает корректно, если выбрано одно или несколько значений.

{% cut "Пример запроса с оператором `in`" %}

```sql
SELECT sum (Sales) as Sales, Category
FROM samples.SampleLite
WHERE Category in not_var{{category}} 
GROUP BY Category
ORDER BY Category
```

{% endcut %}

Если в тексте запроса перед параметром указан оператор `=`, запрос отработает корректно, только если будет выбрано одно значение.

{% cut "Пример запроса с оператором `=`" %}

```sql
SELECT sum (Sales) as Sales, Category
FROM samples.SampleLite
WHERE Category = not_var{{category}} 
GROUP BY Category
ORDER BY Category
```

{% endcut %}

### Пустой выбор в селекторе и параметры {#empty-selector}

Если в селекторе не выбрано ни одного значения и для параметра не задано значение по умолчанию, то в запрос передается пустое значение. В [чартах на основе датасета](../../concepts/chart/dataset-based-charts.md) в этом случае выбираются все значения, а в генерации запроса фильтр по соответствующему столбцу пропадает.

Чтобы обеспечить аналогичное поведение в QL-чартах, можно использовать в запросе конструкцию вида:

```sql
AND
CASE
    WHEN LENGTH(not_var{{param}}::VARCHAR)=0 THEN TRUE
    ELSE column IN not_var{{param}}
END
```

## Отмена и восстановление изменений в чартах {#undo-redo}

При редактировании QL-чарта можно [отменить или повторно выполнить](../../concepts/chart/settings.md#undo-redo) внесенные изменения в пределах текущей версии.

#### Полезные ссылки {#see-also}

* [Чарт в Yandex DataLens](../../concepts/chart/index.md)
* [Добавление чарта на дашборд в Yandex DataLens](../dashboard/add-chart.md)

_ClickHouse® является зарегистрированным товарным знаком [ClickHouse, Inc](https://clickhouse.com)._