Шаблоны SQL
Шаблоны SQL - средство сохранения, настройки и повторного использования SQL запросов
Использование шаблонов SQL
Пример использования шаблона выглядит следующим образом:

Можно увидеть, что при помощи шаблонов у пользователя есть возможность получить данные из источника без написания запроса на SQL.
Для получения данных при помощи шаблона, необходимо, чтобы источник данных, к которому обращается шаблон SQL, был указан в графе "Источник данных".
Увидеть список всех доступных шаблонов можно перейдя по
Меню > Настройки > Шаблоны > Тип шаблона: SQL

Для использования шаблонов в визуализации необходимо:
- создать запрос
- перевести запрос в режим "Шаблон"
- выбрать источник данных
- выбрать шаблон из списка
Создание шаблонов SQL
В данном разделе рассмотрены примеры создания шаблонов SQL.
Для создания шаблона сначала необходимо задать его тип, имена, описание согласно разделу, посвящённому созданию шаблонов.
В качестве типа необходимо выбрать SQL.
Простейший пример
В данном примере рассмотрен процесс создания ненастраиваемого шаблона SQL и вызова данного шаблона из визуализации. Допустим, пользователю необходимо создать шаблон, выполняющий следующий запрос к источнику excelconnector1:
WITH moodmeter AS (
SELECT createtime, userlogin, uservalue
FROM sensortestcore1.moodmeter.qsndsr_moodmeter where uservaluetype = 'basic')
SELECT createtime, uservalue FROM moodmeterПри создании шаблона необходимо написать данный запрос в поле "Шаблон":

И нажать кнопку "Сохранить" или "Сохранить и закрыть". Шаблон будет создан.
После создания шаблона необходимо добавить его в визуализацию на которую он будет передавать данные, подобный процесс описан выше в текущем разделе. В данном примере источником данных является excelconnector1.
После нажатия кнопки "Выполнить запрос", шаблон получит данные из источника:

Продвинутый пример
В данном примере рассмотрен процесс создания настраиваемого шаблона SQL и вызова данного шаблона из визуализации.
Допустим, пользователю необходимо создать шаблон, выполняющий следующий запрос к источнику excelconnector1:
WITH moodmeter AS (
SELECT createtime, userlogin, uservalue
FROM sensortestcore1.moodmeter.qsndsr_moodmeter where uservaluetype = 'basic')
SELECT createtime, uservalue FROM moodmeterПользователю также необходимо каждый раз по-разному сортировать данные, полученные из шаблона на стороне базы данных.
Для того, чтобы пользователь не создавал несколько похожих запросов (отличающихся лишь порядками и типами сортировки), в шаблонах предусморен механизм создания и настройки подразделов и полей.
Более подробно компоненты шаблонов описаны в подразделе "Компоненты шаблонов".
В шаблонах SQL предусмотрены создание подразделов в виде выпадающих меню.
Шаблон без подразделов выглядит следующим образом:

Сначала необходимо определить подразделы, которые будут отвечать за группировку и сортировку:
##G1 Столбец сортировки
##G2 Тип сортировки
WITH moodmeter AS (
SELECT createtime, userlogin, uservalue
FROM sensortestcore1.moodmeter.qsndsr_moodmeter where uservaluetype = 'basic')
SELECT createtime, uservalue from moodmeterГде:
- G1 и G2 - системные имена подразделов
- "Группировка" и "Сортировка" - пользовательские имена подразделов
Системные имена подразделов обязательно задаются синтаксисом ##Gn, где n - натуральное число. Например G1, G2, G3 ...
Шаблон с определёнными подразделами выглядит так же, как и шаблон без определённый подразделов.
Для отображения подразделов необходимо определить внутри них поля и типы полей:
##G1 Столбец сортировки
##G2 Тип сортировки
##G1_ordercol1_b createtime
##G1_ordercol2_b uservalue
##G2_ordertypeasc_b По возрастанию
##G2_ordertypedesc_b По убыванию
WITH moodmeter AS (
SELECT createtime, userlogin, uservalue
FROM sensortestcore1.moodmeter.qsndsr_moodmeter where uservaluetype = 'basic')
SELECT createtime, uservalue from moodmeterШаблон с определёнными полями подразделов выглядит следующим образом:

После, необходимо наполнить шаблон условными конструкциями, для того, чтобы структура запроса менялось, в зависимости от выбранного поля шаблона:
##G1 Столбец сортировки
##G2 Тип сортировки
##G1_ordercol1_b createtime
##G1_ordercol2_b uservalue
##G2_ordertypeasc_b По возрастанию
##G2_ordertypedesc_b По убыванию
with moodmeter as (
SELECT createtime, userlogin, uservalue
FROM sensortestcore1.moodmeter.qsndsr_moodmeter where uservaluetype = 'basic')
SELECT createtime, uservalue from moodmeter
#if(${G1_ordercol1_b})ORDER BY createtime #if(${G2_ordertypeasc_b})ASC#elseif(${G2_ordertypedesc_b})DESC#end
#elseif(${G1_ordercol2_b})ORDER BY uservalue #if(${G2_ordertypeasc_b})ASC#elseif(${G2_ordertypedesc_b})DESC#end
#endПосле наполнения шаблона, при просмотре результата SQL , можно увидеть - в зависимости от выбранных полей подразделов шаблона изменяется структура запроса:

with moodmeter as (
SELECT createtime, userlogin, uservalue
FROM sensortestcore1.moodmeter.qsndsr_moodmeter where uservaluetype = 'basic')
SELECT createtime, uservalue from moodmeter
ORDER BY uservalue DESC
with moodmeter as (
SELECT createtime, userlogin, uservalue
FROM sensortestcore1.moodmeter.qsndsr_moodmeter where uservaluetype = 'basic')
SELECT createtime, uservalue from moodmeter
ORDER BY createtime ASC