SQL-таблица

Collection: SQLCommunity Edition+

Введение

SQL-таблица формируется с помощью SQL-запроса и не создаёт настоящую таблицу в базе данных. Она считывает результаты SQL-запроса, чтобы их можно было использовать в таблицах, подробной информации, диаграммах и рабочих процессах. Подходящие сценарии: сводные данные и статистические отчёты.

Внимание

SQL-таблица поддерживает только инструкции SELECT или инструкции WITH ... SELECT, поддерживает только просмотр результатов запросов и не поддерживает добавление, редактирование и удаление данных.

Создание SQL-таблицы

  1. В меню источников данных в системных функциях перейдите на главную страницу источников данных.
  2. Выберите источник данных Main в списке источников данных и нажмите «Configure», чтобы перейти к основной базе данных.
  3. В разделе управления основной базой данных нажмите «Create collection» и выберите «SQL collection».

настройка основного источника данных создание SQL-коллекции настройка SQL-коллекции

НастройкаОписание
Collection display nameНазвание SQL-таблицы, отображаемое в интерфейсе, например «Сводка продаж» или «Предупреждение о запасах». Рекомендуется использовать название, отражающее смысл результатов запроса.
Collection nameИдентификатор SQL-таблицы в NocoBase, используемый для внутренних ссылок в API, полях связей, правах доступа, рабочих процессах и других компонентах. Он генерируется автоматически, но его можно изменить вручную; поддерживаются только буквы, цифры и символы подчёркивания, при этом имя должно начинаться с буквы.
CategoriesКатегория таблицы данных. Влияет только на организацию интерфейса управления таблицами данных и не изменяет SQL-запрос.
DescriptionОписание таблицы данных. Рекомендуется указать, какие данные извлекает этот SQL-запрос, кто его поддерживает и для какой страницы или отчёта он используется.
Record unique keyУникальный идентификатор записи. Результаты SQL-запроса не имеют настоящего первичного ключа, поэтому необходимо выбрать поле или комбинацию полей, однозначно идентифицирующих запись, иначе просмотр записей в блоках может работать некорректно.
SQLЗапрос, используемый SQL-таблицей. NocoBase выполнит этот SQL, настроит поля на основе результатов запроса, а затем будет использовать результаты как таблицу данных.
Source collectionsИсточники полей в результатах SQL-запроса. Используются для связи полей результатов запроса с полями существующих таблиц данных, помогая NocoBase определить источник полей и тип интерфейса.
FieldsНастройка сопоставления полей. Используется для подтверждения имени, источника, типа интерфейса и отображаемого имени каждого поля.
PreviewПредварительный просмотр результатов SQL-запроса. Перед отправкой можно проверить, соответствуют ли сопоставление полей и отображение ожидаемому результату.

Написание SQL-запроса

Введите SQL-запрос и нажмите «Execute», чтобы выполнить запрос и попытаться проанализировать возвращаемые поля и исходные таблицы данных. Нажатие «Execute» используется только для предварительного выполнения и анализа полей. После того как вы убедитесь, что SQL-запрос работает, нажмите «Confirm», чтобы форма могла отправить этот SQL как подтверждённый запрос.

выполнение SQL-запроса

Подсказка

Source collections — это исходные таблицы данных, определённые на основе SQL-запроса. Система определяет, из каких существующих таблиц данных в основном происходят поля результатов запроса, и при сопоставлении полей ограничивает доступные значения Field source.

Результат определения предназначен для быстрой настройки. Если SQL-запрос содержит псевдонимы, подзапросы, вычисляемые поля, агрегатные функции или сложные join, результат может быть неточным или определить источник не удастся. В этом случае можно вручную указать Source collections.

Сопоставление полей

Сопоставление полей — обязательная настройка после создания SQL-таблицы. Результаты SQL-запроса сообщают NocoBase только о том, какие столбцы были возвращены. Чтобы использовать эти столбцы в интерфейсе как обычные поля, необходимо подтвердить Field source или настроить Field interface и отображаемое имя поля. Подробнее о настройке полей

настройка источника поля SQL настройка интерфейса поля SQL

НастройкаОписание
Field sourceВыбор существующей таблицы данных и поля, из которых происходит поле в результатах SQL-запроса. После выбора источника NocoBase может повторно использовать Field interface исходного поля.
Field interfaceОпределение способа отображения и ввода поля на странице, например однострочный текст, число, дата или вариант из выпадающего списка.
Field display nameНазвание поля, отображаемое в интерфейсе. Рекомендуется использовать название, понятное бизнес-пользователям.

Например, если SQL-запрос возвращает customers.name as customer_name и это поле происходит из поля «Название клиента» таблицы клиентов, его можно сопоставить с соответствующим полем таблицы клиентов. Тогда NocoBase сможет использовать заголовок и настройки интерфейса исходного поля.

Если поле является результатом вычисления, например count(*) as total или sum(amount) as amount_total, у него обычно нет однозначного исходного поля, поэтому необходимо вручную выбрать подходящий Field interface.

Подсказка

Field source зависит от Source collections. Только после выбора исходной таблицы данных в таблице сопоставления полей появятся доступные исходные поля этой таблицы.

Если при определении полей найден Field source, NocoBase в первую очередь повторно использует Field interface исходного поля. Если определить исходное поле не удалось, можно вручную указать Field source; если результат определения не соответствует смыслу данных, необходимо удалить Field source, после чего можно вручную указать Field source либо вручную выбрать Field interface и настроить Field display name.

Уникальный идентификатор записи

Для SQL-таблицы необходимо настроить Record unique key, иначе невозможно создать блок на странице и корректно просматривать записи. В качестве уникального идентификатора можно выбрать одно поле или комбинацию нескольких полей. Поля, подходящие для Record unique key, обычно соответствуют следующим условиям:

  • Каждая строка в результатах запроса уникальна
  • Значение поля стабильно и не изменяется из-за пагинации, сортировки или изменения условий статистики
  • Поле не пустое
  • Поле всегда возвращается в результатах запроса

Если результаты запроса получены из одной таблицы, рекомендуется в первую очередь возвращать первичный ключ исходной таблицы. Если результаты получены из объединения нескольких таблиц или агрегации, можно сохранить в SQL стабильный бизнес-ID либо вернуть несколько полей, которые совместно однозначно определяют запись.

Внимание

Не используйте такие значения, как row_number(), которые изменяются в зависимости от сортировки, фильтрации или диапазона статистики, в качестве долгосрочного стабильного Record unique key. После изменения уникального идентификатора записи блоки страниц, права доступа, рабочие процессы и внешние API могут перестать находить ту же запись.

Предварительный просмотр результатов запроса

Перед отправкой используйте Preview, чтобы просмотреть результаты SQL-запроса. Во время предварительного просмотра проверьте:

  • SQL выполняется без ошибок
  • Все возвращаемые поля присутствуют
  • Field interface и отображаемое имя соответствуют смыслу данных
  • Record unique key существует, а данные уникальны
  • Результаты запроса подходят для отображения на странице

предварительный просм�отр SQL-коллекции

Настройка полей

После создания SQL-таблицы в списке таблиц данных нажмите «Configure fields» справа от SQL-таблицы, чтобы перейти на страницу настройки полей. Настройка полей используется для управления списком полей SQL-таблицы, способом их отображения в интерфейсе и сопоставлением результатов SQL-запроса с Field interface в NocoBase. Подробнее о настройке полей

Изменение типа интерфейса

После создания SQL-таблицы настройки интерфейса полей по-прежнему можно изменить в разделе настройки полей. Страница настройки полей предназначена главным образом для изменения Field interface, отображаемого имени, описания и специальных настроек поля. настройка поля SQL

Здесь можно обработать следующие ситуации:

  • При создании SQL-таблицы был выбран неправильный Field interface
  • Отображаемое имя поля не соответствует принятой в организации терминологии и требует замены на более понятное
  • Изменился смысл поля в результатах запроса, поэтому необходимо заново подтвердить способ его отображения
  • Требуется изменить описание поля или его специальные настройки, например варианты выпадающего списка

Синхронизация с базой данных

Если SQL-запрос не изменился, но изменилась структура исходной таблицы или её поля, перейдите в раздел «Configure fields» и нажмите «Sync from database», чтобы заново выполнить SQL и синхронизировать поля. Сопоставление полей описано в разделе «Создание SQL-таблицы».

синхронизация полей SQL-коллекции

Редактирование поля

Нажмите «Edit» справа от поля, чтобы изменить его настройки. Редактирование поля подходит для изменения способа его отображения и использования в NocoBase, например отображаемого имени, описания, правил проверки или специальных настроек поля. Подробнее о настройке полей

Внимание

Редактирование настроек поля не изменяет SQL-запрос, имя поля в исходной таблице, определение поля в исходной таблице или индексы базы данных. Если необходимо изменить фактический столбец в результатах запроса, сначала измените SQL-запрос, а затем повторно выполните его и синхронизируйте поля.

Удаление поля

Нажмите «Delete» справа от поля, чтобы удалить отдельное поле. Удаление поля удаляет только сохранённое в NocoBase поле, но не изменяет SQL-запрос и не удаляет фактический столбец в исходной таблице данных. Подробнее о настройке полей

Внимание

Удаление поля может повлиять на блоки страниц, условия фильтрации, сортировку, права доступа, рабочие процессы, API и существующие настройки. Перед удалением убедитесь, что поле больше нигде не используется. Если SQL-запрос по-прежнему возвращает этот столбец, при последующем выполнении «Sync from database» NocoBase может снова обнаружить это поле.

Редактирование SQL-таблицы

В списке таблиц данных нажмите «Edit» справа от нужной SQL-таблицы, чтобы изменить её метаданные и настройки выполнения в NocoBase. Набор настроек при редактировании почти такой же, как при создании SQL-таблицы, и изменить нельзя только Collection name.

Если SQL-запрос изменился, необходимо снова нажать «Execute» и подтвердить сопоставление полей, Record unique key и результаты предварительного просмотра.

редактирование SQL-коллекции

Внимание

Изменение SQL-запроса может привести к изменению имён полей, сопоставления полей или Record unique key. После изменения повторно проверьте работоспособность блоков страниц, диаграмм, прав доступа и рабочих процессов.

Удаление SQL-таблицы

В списке таблиц данных нажмите «Delete» справа от SQL-таблицы, чтобы удалить только конфигурацию SQL-таблицы и её поля в NocoBase. Исходная таблица и содержащиеся в ней данные удалены не будут. Также можно выбрать несколько таблиц и удалить их одновременно. Перед удалением проверьте, не используются ли эта SQL-таблица блоками страниц, диаграммами, правами доступа, рабочими процессами и внешними API.