Использование Looker SDK для запроса информационной панели Looker, передачи фильтров информационной панели плиткам и возврата элемента информационной панели в виде файла .png.

Решения бизнес-аналитики, такие как Looker, должны быть динамичными и интерактивными. Однако бизнес-пользователям часто необходимо создать статическую версию всей информационной панели или определенных элементов информационной панели. В этом примере я покажу, как использовать Looker SDK для запроса информационной панели Looker, передачи фильтров информационной панели плиткам (то есть элементам информационной панели) и возврата элемента информационной панели в виде файла .png. Затем эти файлы можно использовать для создания отчетов в других приложениях. Я буду создавать следующую статью, в которой я расскажу, как использовать Python для вставки этих изображений в файл PowerPoint.

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

Интерактивную версию этого пошагового руководства также можно найти в созданном мной файле Google Colab: ImagesFromLookerSDK.

Подключиться к Looker SDK

Сначала установите Looker SDK с помощью pip install looker-sdk. Затем соберите информацию, которая потребуется для подключения к Looker API.

Базовый URL-адрес Looker: https://your.looker.com:port (не добавляйте порт, если используете Looker онлайн)

идентификатор клиента и секрет клиента: Получите это у администратора своего поискового устройства. Если вы являетесь администратором, найдите свою информацию о пользователе и выберите «Создать API», чтобы сгенерировать идентификатор клиента и секрет.

Информация о подключении может быть сохранена в файле looker.ini или назначена переменным среды. Полная инструкция по установке и настройке Looker SDK доступна здесь.

Создайте скрипт для просмотра элементов панели

Импорт необходимых библиотек

import looker_sdk #access looker objects
from looker_sdk import models
import base64 #encode looker image into .png file
import os #only necessary if assigning Looker SDK connection information to environment variables

Создайте подключение Looker SDK

sdk = looker_sdk.init31()

Откройте информационную панель, из которой вы хотите извлечь изображения информационной панели. Идентификатор информационной панели можно найти в URL-адресе информационной панели в формате https://your.looker.com/dashboards/dashboard_id?‹dashboard_filters›. Это будет целое число, если только это не панель мониторинга LookML, которая будет представлена ​​строкой.

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

dashboard_id = 216
dashboard = sdk.dashboard(dashboard_id)
for key in dashboard.keys():
  print(key)

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

Получить список элементов панели

Взгляните на элементы панели мониторинга, чтобы убедиться, что все плитки, которые вы ожидаете увидеть, присутствуют.

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

Теперь взгляните на фильтры приборной панели. В этом примере я создам словарь фильтров панели мониторинга, который будет применяться к элементам панели мониторинга по мере их запуска. Значения измерений фильтра будут использоваться для создания словаря фильтров.

for filter in dashboard.dashboard_filters:
  print(filter.name, filter.dimension)

Теперь создайте словарь значений фильтров для фильтров, которые вы хотите применить.

filter_dict = {'model_name.city_name': 'ABC Town',
               'model_name.year': '2021, 2022'}

Отобразить запрос как изображение

Теперь давайте соберем все это вместе, чтобы просмотреть каждый элемент на панели инструментов, применить фильтры панели и создать файл .png.

dashboard_id = 216
sdk = looker_sdk.init31()
dashboard = sdk.dashboard(dashboard_id)
#run each element in the dashboard and apply the dashboard filters. Then, save the file in .png format.
for element in dashboard.dashboard_elements:
  #create a copy of the tile query to apply filters to
  altered_query = element.query
  title = element.title
  #if the query has existing filters, append the dashboard filters
  if 'filters' in altered_query:
    altered_query.filters.update(filter_dict)
  if 'filters' not in altered_query:
    altered_query['filters']=filter_dict
#remove the client id and id from the query to create a new query
altered_query.client_id = None
altered_query.id = None
#run the query with applied filters inline (doesn't create a new query object) and save as .png file
query_image = sdk.run_inline_query(body=altered_query, result_format='png')
image_string = base64.b64encode(query_image)
image_file = '.'.join([title, 'png'])
with open(image_file, "wb") as fh:
  fh.write(base64.decodebytes(image_string)

Это сохранит файл .png в рабочем каталоге для каждой плитки на панели инструментов, названный в честь названия плитки. Есть много форматов, в которые можно вставлять изображения для полированного статического отчета. В моем примере я буду использовать эти изображения для автоматического создания файла PowerPoint с помощью Python. Затем, на последнем этапе, я объединю шаги Looker SDK и PowerPoint для создания пакетных отчетов из информационных панелей Looker.

Дополнительные материалы на PlainEnglish.io. Подпишитесь на нашу бесплатную еженедельную рассылку новостей. Подпишитесь на нас в Twitter и LinkedIn. Присоединяйтесь к нашему сообществу Discord.