SQL-фрагменты¶
SQL-фрагменты — это повторно используемые фрагменты SQL или собственные запросы. Каждый пользователь с разрешениями на редактор SQL может создавать и редактировать фрагменты, которые затем становятся доступными для всех авторов SQL.
Например, если вы часто выполняете запросы, включающие несколько таблиц, вы можете сохранить код SQL, соединяющий эти таблицы, в виде фрагмента, чтобы вы (и другие сотрудники вашей организации) могли повторно использовать этот код в нескольких вопросах.
Как создать фрагмент¶
Вот простой запрос с соединением с использованием образца базы данных, входящего в состав Glarus BI.
SELECT *
FROM orders AS o
LEFT JOIN products AS p
ON o.product_id = p.id
Давайте сохраним всё после FROM как фрагмент для повторного использования в других запросах.
В SQL редакторе:
Выделите раздел SQL, который вы хотите сохранить. В этом случае мы выберем следующий код SQL:
orders AS o LEFT JOIN products AS p ON o.product_id = p.id
Щёлкните правой кнопкой мыши выделенный раздел.
Выберите «Сохранить как фрагмент», чтобы создать фрагмент. Появится модальное окно с выделенным оператором SQL.
Редактируйте, назовите и опишите свой фрагмент. Имена фрагментов должны быть уникальными. Нажмите кнопку «Сохранить», чтобы создать фрагмент.
В данном случае мы назвали фрагмент «Заказы и товары». Фрагмент теперь будет доступен для всех. Вот как выглядит фрагмент в редакторе SQL:
SELECT *
FROM {% raw %}{{snippet: Orders and Products}}{% endraw %}
При написании в редакторе SQL теперь вы можете начать вводить {% raw %}{{snippet:}}{% endraw %}
, и Glarus BI предложит варианты автозаполнение для доступных фрагментов.
Примечание. Если вы используете псевдонимы во фрагменте, вам также необходимо соблюдать эти псевдонимы за пределами фрагмента. Например, если задан псевдоним
products AS p
для фрагмента кода, код вне фрагмента должен будет использовать псевдонимp
для ссылки на столбцы в этой таблице (как вp.column_name
).
Меню фрагментов¶
Боковая панель редактора SQL содержит меню Фрагменты SQL, в котором перечислены доступные и архивированные фрагменты.
Щёлкните значок фрагмента в правой части редактора SQL под значком справочника данных и значком переменных χ. Glarus BI выдвинет боковое меню со списком доступных фрагментов.
В меню фрагментов SQL вы можете:
Создать фрагмент. Нажмите «+» в правом верхнем углу боковой панели «Фрагменты SQL», чтобы создать новый фрагмент.
Предварительно просмотреть фрагменты. Нажмите на стрелку вниз справа от фрагмента, чтобы увидеть его описание и предварительный просмотр кода SQL. Также есть возможность редактировать фрагмент.
Вставить фрагмент. Нажмите на название фрагмента, чтобы вставить его в ваш запрос в текущем местоположении курсора.
Осуществить поиск фрагментов. Если вы сохранили более 15 фрагментов, слева от кнопки «+» появится значок Поиск (классическое увеличительное стекло). Обратите внимание, что результаты поиска включают только фрагменты, на которые у пользователя есть разрешения. Папки фрагментов SQL не заполняют результаты поиска.
Редактировать фрагмент Вы можете изменить название, описание и код фрагмента.
Архивировать и разархивировать фрагмент В модальном окне «Правка» можно заархивировать фрагмент, что удаляет его из меню фрагментов и параметров автозаполнения в редакторе SQL.
Редактирование фрагментов¶
Вы можете редактировать фрагмент кода в любое время, выбрав его в боковом меню SQL «фрагменты» в редакторе SQL. Нажмите стрелку вниз справа от фрагмента, затем нажмите Изменить. Вы можете изменить код SQL, название и описание фрагмента.
Редактирование фрагментов — отличный способ внести изменения сразу во многие вопросы. Если, например, вы сохранили код SQL для извлечения пользовательских данных из таблиц X, Y и Z как фрагмент «Данные пользователя», но вам нужно изменить способ извлечения этих данных (например, добавив данные из другого столбца или таблицы), вы можете обновить код SQL во фрагменте, и все вопросы, в которых используется фрагмент «Данные пользователя», получат обновлённый код.
Редактирование названия фрагмента. Изменение названия фрагмента приведёт к обновлению названия фрагмента в каждом вопросе, в котором используется этот фрагмент. Это не нарушит существующие вопросы (базовый SQL остается неизменным), но имейте в виду, что другие пользователи могут быть застигнуты врасплох, обнаружив, что вы переименовали фрагмент, который они часто используют, например, с «Заказы и продукты» на «Все вещи».
Редактирование SQL-фрагмента. Здесь следует напомнить, что с большой силой приходит большая ответственность. Есть одно важное предостережение при редактировании фрагментов, достойное выноски:
Внимание: если вы отредактируете фрагмент и включите неработающий код, вы нарушите все вопросы, в которых используется этот фрагмент. Обязательно протестируйте свой код, прежде чем сохранять его в существующем фрагменте.
Архивация фрагментов¶
Архивация фрагментов поможет убрать устаревшие или менее релевантные фрагменты. Когда вы архивируете фрагмент, он больше не отображается в раскрывающемся списке автозаполнения фрагмента и в основном списке фрагментов на боковой панели редактора SQL.
Архивация фрагмента не влияет на существующие запросы, использующие этот фрагмент, поэтому вы можете безопасно архивировать фрагмент, не затрагивая вопросы.
Вы можете получить доступ к архивированному фрагменту из меню боковой панели фрагментов, нажав кнопку «Архив» в левом нижнем углу боковой панели.
Хотя фрагмент нельзя удалить, его можно архивировать и разархивировать в любое время.
Примечание: два фрагмента не могут иметь одно и то же название, так как даже если фрагмент архивирован, он может быть активен в вопросах.
Разрешения фрагментов¶
Любой пользователь, у которого есть права редактирования SQL хотя бы в одной из ваших подключенных баз данных, сможет просматривать боковую панель фрагментов, а также сможет создавать, редактировать, архивировать или разархивировать любые фрагменты — даже фрагменты, предназначенные для использования с базами данных. У пользователя нет прав на редактирование SQL.
Некоторые планы содержат дополнительные функции для организации фрагментов в папки и настройки разрешений для этих папок. См. нашу документацию по папкам и разрешениям фрагментов SQL.
Дополнительная информация¶
SQL-фрагменты, сохранённые вопросы и просмотры. Документация Metabase.
Если у вас возникли проблемы с SQL-запросом, перейдите к руководству по устранению неполадок с SQL.