Перейти к содержанию

Статическое встраивание

Также известно как: автономное встраивание или подписанное встраивание.

В общем случае встраивание работает так: вы отображаете URL Glarus BI внутри iframe на вашем сайте. Статическое встраивание (или подписанное) — это iframe, который загружает URL Glarus BI, защищённый подписанным JSON Web Token (JWT). Glarus BI загрузит URL только если запрос содержит подписанный JWT, общий для вашего приложения и Glarus BI. JWT также содержит ссылку на ресурс, который нужно загрузить (например, ID дашборда), и значения для заблокированных параметров.

Вы не сможете использовать статические встройки вместе с RLS, drill-through (документация Metabase, англ.), и данные о конкретных пользователях не будут попадать в аналитику использования, потому что подписанные JWT не создают пользовательские сессии.

Чтобы ограничить данные в подписанных встраиваниях для определённых людей или групп, настройте заблокированные параметры.

Как работает статическое встраивание

Если вы хотите настроить интерактивные фильтры Glarus BI в своём iframe, ваш веб-сервер должен будет запрашивать обновлённые данные каждый раз, когда посетитель веб-сайта обновляет виджет фильтра.

Чтобы запросить обновлённые данные из Glarus BI, ваш веб-сервер создаст новый URL для встраивания. Например, если посетитель веб-сайта вводит значение «true» во встроенный виджет фильтра, ваш сервер сгенерирует новый URL для встраивания с дополнительным параметром:

your_glarusbi_embedding_url?filter=true

Чтобы люди не могли редактировать URL для встраивания для получения несанкционированного доступа к другим частям вашей Glarus BI (например, изменив параметр на filter=company_secrets), ваш веб-сервер добавит подписанный JWT к новому URL для встраивания:

your_glarusbi_embedding_url/your_signed_jwt?filter=true

Подписанный JWT создаётся с использованием вашего секретного ключа Glarus BI. Этот ключ сообщает Glarus BI, что запросу отфильтрованных данных можно доверять, поэтому отображать результаты по новому URL безопасно. Обратите внимание: этот секретный ключ общий для всех статических встраиваний, поэтому любой, у кого есть доступ к ключу, сможет получить доступ ко всем встроенным артефактам.

Включение статического встраивания в Glarus BI

  1. Перейдите в Управление > Настройки > Встраивание.
  2. Нажмите Включить.

Подготовка запроса или дашборда к встраиванию

Кнопка «Поделиться» для встраивания дашборда

Чтобы создать статическое встраивание:

  1. Перейдите к запросу или дашборду, которые вы хотите встроить на свой веб-сайт.
  2. Нажмите на значок общего доступа (квадрат со стрелкой, "Поделиться").
  3. Выберите Встраивание.
  4. Выберите Статическое встраивание.
  5. Опционально: настройте внешний вид встраивания.
  6. Опционально: добавьте параметры во встраивание.
  7. Нажмите Опубликовать.

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

Добавление URL для встраивания на ваш сайт

URL для встраивания запроса или дашборда — это URL Glarus BI, который будет отображаться в iframe вашего веб-сайта. Он генерируется вашим веб-сервером с использованием URL сайта Glarus BI, подписанного JWT и параметров:

glarusbi_site_url/embed/question/your_jwt_token?parameter_name=value

После того как вы сделали запрос или дашборд встраиваемым, вам необходимо разместить URL для встраивания этого запроса или дашборда на свой веб-сайт:

  1. Перейдите к запросу или дашборду > значок общего доступа ("Поделиться") > Встраивание.
  2. Нажмите Получить код для встраивания.
  3. Необязательно: Предварительный просмотр кода сервера.
  4. Добавьте код сервера в файл, который создаёт ваш веб-сайт.
  5. Добавьте код внешнего интерфейса в HTML-файл, где вы хотите, чтобы ваша подписанная вставка отображалась.

Дополнительные примеры см. в open source-репозитории Metabase.

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

  1. Перейдите к запросу или дашборду > значок общего доступа ("Поделиться")> Встроить этот элемент в приложение.
  2. Нажмите Код.
  3. В верхнем блоке кода вы найдёте пример кода для вашего веб‑сервера, а также iframe‑фрагмент для HTML‑шаблона или одностраничного приложения.

Когда вы вносите изменения в настройки стиля, внешнего вида или предварительного просмотра параметров, образец кода сервера также обновляется. Обязательно скопируйте эти изменения в ваш фактический код сервера.

Примеры кода для встраивания

Glarus BI генерирует пример серверного кода для:

  • Clojure
  • Node.js
  • Python
  • Ruby

И для iframe‑фрагментов:

  • ERB
  • JSX
  • Mustache
  • Pug/Jade

Если вы используете сериализацию, применяйте Entity IDs в статических встройках

Использование Entity IDs в статических встройках помогает гарантировать, что идентификаторы останутся стабильными при экспорте из одного окружения Glarus BI и импорте в другое.

Чтобы использовать Entity ID в статическом встраивании, достаточно отредактировать map resource в payload, который вы подписываете. Замените автоподставленный ID элемента на его Entity ID.

То есть в примере ниже вы замените { question: <ID> } на:

const payload = {
  resource: { question: <Entity ID goes here> },
  params: {},
  exp: Math.round(Date.now() / 1000) + (10 * 60) // 10 minute expiration
};

Если вы не используете сериализацию, оба ID будут работать.

Редактирование встроенного запроса или дашборда

Если вы измените параметры встроенного элемента:

  1. После изменений скопируйте код, который сгенерировал Glarus BI.
  2. Нажмите Опубликовать ещё раз.
  3. Обновите код на вашем сервере так, чтобы он соответствовал коду, сгенерированному Glarus BI.

Отключение встраивания для запроса или дашборда

Вы можете найти список всех встроенных запросов и дашбордов в Управление > Настройки > Встраивание.

  1. Перейдите к встраиваемому запросу или дашборду.
  2. Нажмите на значок общего доступа (квадрат со стрелкой, "Поделиться").
  3. Выберите Встраивание > Статическое встраивание.
  4. Нажмите Отменить публикацию.

Настройка внешнего вида статических встраиваний

См. настройку внешнего вида статических встраиваний.

Автообновление результатов встроенного дашборда

Чтобы обновлять результаты дашборда с заданной частотой, добавьте параметр refresh в URL встраивания. Например, чтобы обновлять встроенный дашборд каждые 60 секунд, добавьте refresh=60 к URL.

Автообновление доступно только для дашбордов, не для запросов.

Например, следующий код генерации iframe URL для дашборда будет показывать заголовок дашборда и обновлять результаты каждые 60 секунд.

var iframeUrl =
  METABASE_SITE_URL + "/embed/dashboard/" + token + "#titled=true&refresh=60";

Полный список опций, которые можно задавать через параметры, см. в разделе настройки внешнего вида статического встраивания.

Повторная генерация секретного ключа статического встраивания

Ваш секретный ключ используется для подписи JWT для всех ваших URL встраивания.

  1. Перейдите в Управление > Встраивание > Статическое встраивание.
  2. В блоке Секретный ключ для встраивания нажмите Перегенерировать ключ.

Этот ключ общий для всех статических встраиваний. Любой, у кого есть доступ к ключу, сможет получить доступ ко всем встроенным артефактам, поэтому храните ключ в секрете. Если вы повторно генерируете ключ, вам нужно обновить серверный код, чтобы он использовал новый ключ.

Изменение размера дашборда в соответствии с содержимым

Дашборды имеют фиксированное соотношение сторон, поэтому если вы хотите, чтобы они автоматически изменялись по вертикали в соответствии с их содержимым, вы можете использовать скрипт iFrame Resizer (ссылка на github.com):

<script src="{your-glarus-bi-url}/app/iframeResizer.js"></script>

<iframe
  src="https://glarus-bi.example.com/embed/dashboard/TOKEN"
  onload="iFrameResize({}, this)"
></iframe>

Из‑за изменений лицензии iframe-resizer рекомендуем использовать iframe-resizer версии 4.3.2 или ниже.

Пользовательские destinations на дашбордах в статических встройках

Для пользовательских destinations на дашбордах со статическим встраиванием можно использовать только опцию URL. Внешние URL будут открываться в новой вкладке или окне.

Вы можете пробрасывать значения фильтров в внешний URL, если фильтр не заблокирован.

Дополнительная информация