Шаблоны 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