Запросы Redash
Создание и редактирование запросов
Синтаксис запроса
Ранее мы уже рассмотрели, как создать запрос. В большинстве случаев используется язык запросов, родной для источника данных. В некоторых случаях имеются различия или дополнения (https://redash.io/help/data-sources/querying).
Сочетания клавиш
- Выполнить запрос: Ctrl/Cmd + Enter
- Сохранить запрос: Ctrl/Cmd + S
- Включить автозаполнение: Ctrl + Space
- Переключение браузера Схем Alt/Option + D
Браузер схем
Слева от редактора запросов находится браузер схем, где находится список всех таблиц, а при нажатии на таблицу отобразятся ее столбцы. Чтобы вставить элемент в запрос, следует щелкнуть двойную стрелку справа. Вы можете отфильтровать схему с помощью окна поиска и обновить ее, нажав на кнопку обновить (в противном случае она периодически обновляется в фоновом режиме).
Браузер схем можно скрыть с помощью сочетания клавиш или двойным щелчком по дескриптору панели в интерфейсе. Это может быть полезно, когда вы хотите максимально увеличить реальное состояние экрана при составлении запроса.
Автоматическое завершение
Редактор запросов также включает функцию автозаполнения, которая упрощает написание сложных запросов. Автоматическое заполнение в режиме реального времени включено по умолчанию. Таким образом, вы увидите предложения по таблицам и столбцам по мере ввода. Вы можете отключить автоматическое заполнение в режиме реального времени, щелкнув значок молнии под редактором запросов. Если автоматическое заполнение в режиме реального времени отключено, вы все равно можете его активировать, нажав CTRL + Space.
Опубликованные и Неопубликованные запросы
По умолчанию каждый запрос начинается как неопубликованный черновик с именем New Query. Его нельзя включать в информационные панели или использовать с оповещениями.
Чтобы опубликовать запрос, измените его название или нажмите кнопку “Published”. Вы можете переключить статус публикации, нажав кнопку “Published”. Отмена публикации запроса не приведет к удалению его с информационных панелей или оповещений. Но это помешает вам добавить его в какие-либо другие.
Архивирование запроса
Вы не можете удалять запросы в Redash. Но вы можете архивировать их. Архивирование похоже на удаление, за исключением того, что прямые ссылки на запрос все еще работают. Чтобы заархивировать запрос, откройте вертикальное меню с многоточием в правом верхнем углу редактора запросов и нажмите кнопку Архивировать.
Дублирование (разветвление) запроса
Если вам нужно создать копию существующего запроса (созданного вами или кем-либо еще), вы можете разветвить его. Чтобы разветвить запрос, просто нажмите на кнопку “Fork”.
Управление разрешениями на запросы
По умолчанию сохраненные запросы могут быть изменены только пользователем, который их создал, и членами группы администраторов. Но Redash включает экспериментальную поддержку для предоставления прав на редактирование пользователям, не являющимся администраторами. Сначала администратору в вашей организации необходимо включить это. Откройте настройки вашей организации и установите флажок “Включить экспериментальную поддержку нескольких владельцев”.
Теперь в меню параметров редактора запросов есть опция Manage Permission. Нажав на нее, откроется диалоговое окно, в котором вы можете добавить других пользователей в качестве редакторов к вашему запросу или информационной панели.
Обратите внимание, что в настоящее время добавленные вами пользователи не будут получать уведомления, поэтому вам нужно будет уведомить их вручную.
Запрос существующих результатов запроса
Источник данных результатов запроса (Query Results Data Source - QRDS) позволяет выполнять запросы к результатам из других ваших источников данных. Используйте его для объединения данных из нескольких баз данных или выполнения последующей обработки. Redash использует базу данных SQLite в памяти, чтобы сделать это возможным. В результате запросы к большим наборам результатов могут завершаться ошибкой, если Redash исчерпывает память.
Настройка
Вы можете включить результаты запроса на вкладке Data Source в меню настроек. Настройка проста: просто укажите имя источника.
Это имя будет отображаться в исходном выпадающем списке в левой части редактора запросов. Источник данных называется “Query Results”, как на скриншоте ниже.
Запрос
QRDS принимает синтаксис запроса SQLite:
SELECT
a.name,
b.count
FROM query_123 AS a
JOIN query_456 AS b
ON a.id = b.id
Остальные запросы для QRDS - это как "таблицы". Каждый из них имеет псевдоним query_, за которым следует query_id, который можно увидеть в строке URL браузера из редактора запросов. Например, запрос по адресу /queries/49588 имеет псевдоним query_49588.
Кэшированные результаты запроса
При запросе к источнику данных Query Results Data Source компания Redash сначала выполняет базовые запросы. Это гарантирует получение свежих результатов в случае планирования запроса QRDS. Ускорить выполнение QRDS-запросов можно, используя для псевдонимов запросов вместо query_ значение cached_query_. Это указывает Redash на использование кэшированных результатов последнего выполнения данного запроса. Это повышает производительность за счет использования более старых данных. В одном запросе можно также смешивать оба синтаксиса.
SELECT
a.name,
b.count
FROM cached_query_123 AS a
JOIN query_456 AS b
ON a.id = b.id
Права доступа к результатам запроса
Доступ к источнику данных Query Results регулируется группами, с которыми он связан, как и к любому другому источнику данных. Однако Redash также проверяет, есть ли у пользователя разрешение на выполнение запросов к источникам данных, которые используются в исходных запросах.
Например, пользователь с доступом к QRDS не сможет выполнить SELECT * FROM query_123, если запрос 123 использует источник данных, к которому у него нет доступа. Пользователь увидит последний кэшированный результат запроса QRDS на экране запросов в Redash. Но повторно выполнить запрос они не смогут.
Параметры запроса
С помощью параметров можно подставлять значения в запрос во время выполнения, не прибегая к редактированию исходного текста. Любая строка между двойными фигурными скобками {{ }} будет рассматриваться как параметр. При изменении значения параметра над панелью результатов появится виджет.
В режиме редактирования можно нажать на значок шестеренки для каждого виджета параметров, чтобы изменить его настройки. Значки шестеренок исчезают при нажатии кнопки Show Data Only, чтобы пользователи, не владеющие запросом, не могли изменить поведение параметров.
Добавление параметра из пользовательского интерфейса
Вставить параметр в запрос и сразу же активизировать панель его настроек можно с помощью кнопки Add Parameter или связанного с ней сочетания клавиш. Параметр будет вставлен в любом месте запроса, где появится текстовая рамка. Если вы обнаружили, что вставили параметр не в ту часть запроса, можно выделить весь параметр (включая фигурные скобки!) и вырезать/вставить его в нужное место.
Настройки параметров
Щелкните на значке шестеренки рядом с каждым виджетом параметра, чтобы изменить его настройки:
- Название: по умолчанию название параметра будет соответствовать ключевому слову в тексте запроса. Если вы хотите дать ему более дружелюбное название, вы можете изменить его здесь.
- Тип: каждый параметр начинается с типа Text. Поддерживаются следующие типы: текст, число, дата, дата и время, дата и время (с секундами) и выпадающий список.
Параметры даты и диапазона дат
Параметры даты используют привычный интерфейс выбора календаря и могут по умолчанию устанавливать текущую дату и время. Можно выбрать один из трех уровней точности: Дата, Дата и время, Дата и время с секундами.
Параметры диапазона дат вставляют два маркера .start и .end, которые обозначают начало и конец выбранного диапазона дат.
SELECT a, b c
FROM table1
WHERE
relevant_date >= '{{ myDate.start }}'
AND table1.relevant_date <= '{{ myDate.end }}'
В параметрах Date Range для упрощения выбора диапазона используется комбинированный виджет.
При добавлении в запрос параметра даты или диапазона дат в виджете выбора появляется значок в виде синей молнии. Щелкните по нему, чтобы увидеть динамические значения, например, "Сегодня" или "Вчера".
Существуют также варианты динамического диапазона дат. Полный список динамических диапазонов дат: на этой неделе, тот месяц, этот год, прошлая неделя, последний месяц, последний год, последние 7 дней, последние 14 дней, последние 30 дней, последние 60 дней, последние 90 дней, последние 12 месяцев.
Выпадающие списки
Если необходимо ограничить область возможных значений параметров при выполнении запроса, можно использовать тип параметра Redash Dropdown List. При его выборе на панели настроек параметров появляется текстовое поле, в которое можно ввести допустимые значения, каждое из которых отделяется новой строкой. Выпадающие списки являются текстовыми параметрами, поэтому если вы хотите использовать в них даты/время, то вводите их в том формате, который требует ваш источник данных.
Выпадающие списки также могут быть привязаны к результатам существующего запроса. Для этого достаточно выбрать пункт Query Based Dropdown List в разделе Type на панели настроек. Найдите целевой запрос в строке Query to load dropdown values from. Производительность снизится, если целевой запрос вернет большое количество записей.
Если целевой запрос возвращает более одного столбца, Redash использует первый. Если целевой запрос возвращает столбцы name и value, Redash заполняет виджет выбора параметров столбцом name, но выполняет запрос со связанным значением.
Например, представим такой запрос:
ВЫБЕРИТЕ user_uuid как 'значение', username как 'имя' ИЗ СПИСКА пользователи
Были возвращены следующие данные:
|
value |
name |
|
1001 |
John Smith |
|
1002 |
Jane Doe |
|
1003 |
Bobby Tables |
Виджет выпадающего списка Redash будет выглядеть следующим образом:
Но когда Redash выполнит запрос, значение, переданное в базу данных, будет 1001, 1002 или 1003.
Выпадающие списки также могут быть сериализованы для обеспечения возможности множественного выбора. Для этого достаточно переключить опцию Allow multiple values и выбрать, следует ли заключать параметры в одинарные или двойные кавычки.
В запросе измените предложение WHERE, чтобы использовать ключевое слово IN.
SELECT ...
FROM ...
WHERE field IN ( {{Multi Select Parameter }} )
Виджет мультивыбора параметров позволяет передавать в базу данных дополнительные значения.
Как запланировать запрос
Выполнение запросов по расписанию можно использовать для обновления информационных панелей или для работы с обычными оповещениями. По умолчанию запросы не имеют расписания. Но это легко настраивается. В левом нижнем углу редактора запросов находится область расписания:
При нажатии на кнопку “Never”, тогда откроется окно выбора допустимых интервалов расписания.
После установки расписания запрос будет выполняться автоматически.
В Redash V8 добавлена возможность раз в час отправлять владельцам запросов сообщения о неудаче одного или нескольких запросов. Эти письма будут отправляться до тех пор, пока не прекратятся сбои. Отправка сообщений о сбоях выполняется независимо от расписания выполнения запросов. После неудачного выполнения запроса может пройти до часа, прежде чем Redash отправит отчет о неудаче.
Отключить отправку отчетов о сбоях можно в настройках организации. В разделе Feature Flags установите флажок Email owners query when scheduled queries fail.
Избранное и тегирование
Пользователи Redash пишут много запросов и приборных панелей. Избранное и тегирование облегчают их поиск по мере того, как ваша коллекция запросов и приборных панелей увеличивается с нескольких сотен до нескольких тысяч.
Избранное
Вы можете выбрать приборную панель или запрос, нажав на звездочку слева от его названия в любом месте Redash. Звезда станет желтой, что свидетельствует об успехе. Избранное отображается в нескольких местах Redash. Они появляются на главной странице, в выпадающих меню на панели навигации и в качестве фильтров при просмотре списка запросов или приборных панелей.
Теггирование
Запросы и запросы можно помечать по тематике, местоположению, пользователю или любому параметру, значимому для вашей организации. Метки добавляются в редакторе запросов или в редакторе приборных панелей. Наведите курсор мыши на заголовок запроса или приборной панели, и появится кнопка +Add Tag. В появившемся модальном окне можно выбрать необходимое количество тегов. Модальное окно будет предлагать ранее использованные теги по мере ввода. Нажмите кнопку Save, когда закончите, или Esc, чтобы прервать создание тегов.
Как загрузить результат запроса
Перейдите на страницу любого запроса и нажмите на вертикальное многоточие (⋮) под панелью результатов. Затем выберите вариант загрузки файла CSV, TSV или Excel. Это действие позволяет загрузить текущий результат запроса.
Зайдите на страницу любого запроса и нажмите на горизонтальное многоточие (...) над редактором запроса. Затем выберите пункт Показать ключ API. Ссылки в появившемся модальном окне всегда будут указывать на последний результат запроса. Вы можете выбрать форматы CSV или JSON, которые будут возвращены в результате вызова API.
Фильтры запросов
Фильтры запросов позволяют интерактивно уменьшить объем данных, отображаемых в визуализации, подобно параметрам запросов, но с некоторыми ключевыми отличиями. Фильтры запросов ограничивают данные после их загрузки в браузер. Это делает их идеальными для небольших наборов данных и сред, в которых выполнение запросов требует много времени, ограничено по скорости или дорогостояще.
Использование
В отличие от параметров запроса, здесь нет кнопки для добавления фильтра. Вместо этого, если вы хотите сфокусироваться на конкретном значении, просто присвойте колонке <columnName>::filter.
SELECT action AS "action::filter", COUNT(0) AS "actions count" FROM events GROUP BY action
Если вам нужен фильтр с множественным выбором, то присвойте колонке <columnName>::multi-filter.
SELECT action AS "action::multi-filter", COUNT(0) AS "actions count" FROM events GROUP BY action
Фильтры запросов можно использовать и на инструментальных панелях. По умолчанию виджет фильтра будет отображаться рядом с каждой визуализацией, где фильтр был добавлен к запросу.
Ограничения
Фильтры запросов не подходят для особо больших наборов данных или результатов запросов, содержащих сотни или тысячи различных значений полей. В зависимости от конфигурации компьютера и браузера избыток данных может ухудшить качество работы пользователя.
Сниппеты запросов
Копирование и вставка являются важной частью составления запросов к базам данных. Ведь гораздо проще продублировать предыдущую работу, чем писать ее с нуля. Это особенно актуально для обычных операторов JOIN или сложных CASE-выражений. Однако по мере роста списка запросов в Redash бывает трудно вспомнить, в каких запросах содержится оператор, необходимый в данный момент. На помощь приходят сниппеты запросов.
Сниппеты запросов - это сегменты запросов, которые могут использоваться всей командой и запускаться через автозаполнение. Вы создаете их в разделе Settings -> Query Snippets.
Приведем пример для простого фрагмента:
JOIN organizations org ON org.id = ${1:table}.org_id
Точки вcтавки
${1:table} - это точка вставки с текстом-заполнителем. Когда Redash отобразит этот сниппет, знак доллара $ и фигурные скобки {} будут удалены, а слово table будет выделено для замены.
Точки вставки обозначаются путем обертывания целочисленного порядка табуляции одним знаком доллара и фигурными скобками ${}. Текстовая вставка, предваряемая двоеточием :, не обязательна, но полезна для пользователей, не знакомых с вашим сниппетом.
Когда Redash отображает этот сниппет:
AND (invoices.complete IS NULL OR invoices.complete <> '${2}')
AND (invoices.canceled IS NULL OR invoices.canceled <> '${1}')
AND (invoices.modified IS NULL OR invoices.modified_date <> '${0: this_date}')
При вставке текста каретка переходит на вторую строку между кавычками ''. При нажатии клавиши Tab каретка перейдет на первую строку. При повторном нажатии клавиши Tab каретка перейдет на третью строку, а this_date будет выделена, чтобы предложить пользователю ввести желаемое значение.
Вставка сниппета запроса
Если у вас включена функция Live Auto Complete, вы можете вызвать сниппет из редактора запросов, набрав триггерное слово, заданное в редакторе Query Snippet. Auto Complete предложит его, как и любое другое ключевое слово в вашей базе данных.
Если функция Live Auto Complete отключена, вы все равно можете вызывать фрагменты запросов, нажав CTRL + Space и набрав триггерное слово для фрагмента запроса.

























