Giter Site home page Giter Site logo

redash-tools's Introduction

redash_tools

Пакет содержит функции для работы с Redash через API, а также классы RedashSession, Query, Dashboard, QueryTemplate, DashboardTemplate, которые можно использовать для создания новых функций / инструментов.

Основные возможности redash_tools:

  • считывание запросов / дашбордов из заданного инстанса Redash
  • загрузка запросов / дашбордов в заданный инстанс Redash
  • считывание запросов / дашбордов из файловой системы и сохранение в файловую систему
  • перенос запросов / дашбордов с одного инстанса на другой
  • преобразование запроса / дашборда в шаблон с указанием параметров, по которым будет произведена шаблонизация
  • рендер запроса / дашборда из шаблона, используя заданные значения параметров
  • батч-редактирование на уровне запросов / дашбордов:
    • простановка тегов по списку id
    • установка расписания по списку id
    • архивирование/восстановление запросов по списку id
    • автозамена в теле запроса по точному соответствию/регулярному выражению
    • изменение типа параметров дашборда с widget-level на dashboard-level

Установка пакета на локальный компьютер

Установить пакет можно с помощью pip install

pip install redash-tools

После установки все имеющиеся функции и классы можно использовать в консоли Python и при создании новых скриптов. В будущем планируется создание CLI для данного пакета.

Начало работы

Для использования инструментов redash_tools нужно импортировать соответствующий пакет.

import redash_tools as rt

Затем нужно инициализировать сессию подключения к Redash. Для этого надо в качестве аргументов указать URL инстанса Redash (включая http:// или https://) и API-ключ пользователя. Либо можно оставить скобки пустыми, для интерактивного ввода

redash = rt.RedashSession()

Если url и API-ключ не указаны, будет запрошено ввести url и API-ключ пользователя. API-ключ можно найти в профиле зарегистрированного пользователя Redash, он обладает теми же правами, что и данный пользователь.

Используя объект RedashSession, можно отправлять в данную сессию GET, POST, DELETE запросы, а также выполнять более специализированные методы:

Метод RedashSession().get_query() возвращает объект класса Query.

query = rt.RedashSession().get_query(1)

Метод RedashSession().get_dashboard() возвращает объект класса Dashboard.

dashboard = rt.RedashSession().get_dashboard('test')

Объекты классов Query, Dashboard имеют методы to_file(path), to_redash(redash_session) для отправки содержимого, соответственно, в файловую систему либо для загрузки в нужный инстанс Redash.

Объект класса Query или Dashboard можно превратить в шаблон с помощью метода to_template(param_names). Метод возвращает объект класса QueryTemplate или DashboardTemplate соответственно.

Объект класса QueryTemplate / DashboardTemplate можно отрендерить в Query / Dashboard указав конкретные значения параметров в виде словаря:

template = rt.RedashSession().get_query(1).to_template(['param_name'])
query = template.render({'param_name': param_value})

Шаблоны также можно сохранять в файловой системе с помощью метода to_file, но нельзя непосредственно заливать в Redash (сначала их нужно отрендерить). Данные сущности можно импортировать из пакета и использовать в интерактивном режиме или для создания своих скриптов.

Пример кода для создания в редаше нового запроса/нового дашборда:

...

Пример кода для создания серии шаблонизированных дашбордов:

import redash_tools as rt
rs = rt.RedashSession('<url>', '<API_KEY>')
db = rs.get_dashboard('test')
t = db.to_template(['country'])
for c in ['Russia', 'France', 'Italy']:
    d = t.render({'country': c}, slug = f'dashboard_{c}', name = f'{c}: Dashboard')  # example of custom naming
    d.to_redash(rs)

tools

redash-tools's People

Contributors

pavlova-marina avatar

Stargazers

 avatar  avatar

Watchers

 avatar

Forkers

mfilin

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.