Блок SQL-запроса


Для SQL-запросов к источникам используется возможность добавить новый запрос в структуре иерархического дерева источников. Добавленный таким образом запрос отображается в левом верхнем углу схемы модели. Можно переместить его в необходимое положение на схеме.

Шаги создания SQL-запроса:

  1. наведите курсор мыши на источник, для которого необходимо создать SQL-запрос;

  2. нажмите на кнопку (Рисунок «Кнопка вызова меню»);

    Figure 1. Кнопка вызова меню

    Кнопка вызова меню

  3. в открывшемся меню выберите значение «Добавить SQL» (Рисунок «Значение «Добавить SQL»);

    Figure 2. Значение «Добавить SQL»

    Значение «Добавить SQL»

  4. откроется окно создания SQL-запроса, введите наименование и SQL-запрос (Рисунок «Окно создания SQL-запроса»);

    Примечание
    Для удобства настройки в поле ввода SQL-запроса при вводе первых букв отображаются значения справочников (IntelliSense) и подсветка синтаксиса. Справочники реализованы по полям модели, ключевым словам (select, from и др.), алиасам (при выборе алиаса в выпадающем списке в SQL-запросе указывается код выбранного поля для корректной работы запроса), таблицам (при выборе листов или таблиц файловых источников в выпадающем списке в SQL-запросе указывается его название в обратных кавычках ` ` для корректной работы запроса) (Рисунок «Пример отображения выпадающего списка при вводе SQL-скрипта»).

    Figure 3. Пример отображения выпадающего списка при вводе SQL-скрипта

    Пример отображения выпадающего списка при вводе SQL-скрипта

    Figure 4. Окно создания SQL-запроса

    Окно создания SQL-запроса

  5. нажмите на кнопку , результат отобразится в таблице ниже (Рисунок «Результат»);

    Figure 5. Результат

    Результат

  6. чтобы очистить окно ввода SQL-запроса, нажмите на кнопку ;

  7. нажмите на кнопку , созданный SQL-запрос сохранится и отобразится в левом верхнем углу схемы модели. При сохранении запроса реализована проверка на наличие всех используемых полей в уже созданных виджетах (в том числе и системных виджетов) на этой модели. В случае отсутствия нужных полей в запросе при сохранении отобразится уведомление типа: «Сохранить SQL-запрос невозможно, так как в нем отсутствует поле [недостающее поле]. Данное поле используется в следующих виджетах: [список виджетов]» (Рисунок «Отображение уведомления при сохранении запроса в случае отсутствия нужных полей»).

    Figure 6. Отображение уведомления при сохранении запроса в случае отсутствия нужных полей

    Отображение уведомления при сохранении запроса в случае отсутствия нужных полей

Примечание
Если в SQL-запросе будет наименование, введенное на кириллице, то оно автоматически будет переведено в латиницу. Новые наименования проверяются на уникальность.

При создании SQL-запроса к источнику данных с типом .xlsx выделяйте названия листов Excel-файла кавычками ` `, например, `Лист1`. При выполнении операции JOIN в запросе «select *» замените на конкретный список полей, например, «select `Лист1`.`Фамилия`, `Лист1`.`Имя`».

Пример
Запрос (Рисунок «Пример SQL-запроса к источнику данных с типом .xlsx»): select `Лист1`.`Фамилия`, `Лист1`.`Имя`, `Лист1`.`Отчество`, `Лист2`.`Ид страны`, `Лист1`.`Страна` from `Лист1` join `Лист2` on `Лист1`.`Страна`=`Лист2`.`Ид страны.

Figure 7. Пример SQL-запроса к источнику данных с типом .xlsx

Пример SQL-запроса к источнику данных с типом .xlsx

При создании SQL-запроса к источнику с типом JSON:

  • если JSON представлен в виде простого списка строк:

    [
      {...},
      {...} 
    ]

    то обращение выполняется к таблице default (т.к. данная структура файла представляет одну таблицу, по умолчанию ее наименование default). Пример: SELECT * FROM `default`;

  • если JSON представлен в виде нескольких вложенных таблиц:

    {
      " table 1": [{...}, {....}],
       " table 2": [{...}, {....}],  
    }

    то обращения к таблицам выполняются по именам из ключей словаря верхнего уровня. Пример: SELECT * FROM `table 1` INNER JOIN `table 2` ON `table 1`.`id 1`=`table 2`.`id 2`.

Примечание
SQL-запросы к файловым источникам выполняются через Spark SQL.