Содержание
ToggleЧасто задаваемые вопросы
Можно ли присоединять/запрашивать несколько таблиц одновременно
Не в пользовательском интерфейсе исследования или визуализации. Источник данных Superset SQLAlchemy может быть только одной таблицей или представлением.
При работе с таблицами решением было бы материализовать таблицу, содержащую все поля, необходимые для вашего анализа, скорее всего, посредством некоторого запланированного пакетного процесса.
Представление — это простой логический уровень, который абстрагирует произвольные SQL-запросы в виде виртуальной таблицы. Это может позволить вам объединять и объединять несколько таблиц, а также применять некоторые преобразования с использованием произвольных выражений SQL. Ограничением является производительность вашей базы данных, поскольку Superset эффективно запускает запрос поверх вашего запроса (представления). Хорошей практикой может быть ограничение присоединения вашей основной большой таблицы только к одной или нескольким небольшим таблицам и избегание использования GROUP BY , где это возможно, поскольку Superset будет выполнять свою собственную GROUP BY , а выполнение работы дважды может снизить производительность.
Используете ли вы таблицу или представление, важным фактором является то, достаточно ли быстра ваша база данных, чтобы обслуживать ее в интерактивном режиме, чтобы обеспечить хорошее взаимодействие с пользователем в Superset.
Однако, если вы используете SQL Lab, такого ограничения нет, вы можете написать sql-запрос для объединения нескольких таблиц, если ваша учетная запись db имеет доступ к таблицам.
Насколько БОЛЬШИМ может быть мой источник данных
Он может быть гигантским! Надмножество действует как тонкий слой над вашими базами данных или механизмами обработки данных.
Как упоминалось выше, основным критерием является то, может ли ваша база данных выполнять запросы и возвращать результаты в сроки, приемлемые для ваших пользователей. Многие распределенные базы данных могут выполнять запросы, которые сканируют терабайты в интерактивном режиме.
Как создать собственную визуализацию
Мы рекомендуем прочитать инструкции в разделе Создание плагинов визуализации .
Могу ли я загружать и визуализировать данные в формате CSV
Абсолютно! Прочтите инструкции здесь , чтобы узнать, как включить и использовать загрузку CSV.
Почему время ожидания моих запросов истекло ?
Есть много причин, которые могут привести к длительному тайм-ауту запроса.
Для выполнения длинного запроса из Sql Lab по умолчанию Superset позволяет ему выполняться до 6 часов, прежде чем он будет убит сельдереем. Если вы хотите увеличить время выполнения запроса, вы можете указать время ожидания в конфигурации. Например:
SQLLAB_ASYNC_TIME_LIMIT_SEC = 60 * 60 * 6
SUPERSET_WEBSERVER_TIMEOUT = 60
Почему карта не отображается в геопространственной визуализации
Вам необходимо зарегистрировать бесплатную учетную запись на Mapbox.com , получить ключ API и добавить его в .env и .env-non-dev по ключу MAPBOX_API_KEY:
MAPBOX_API_KEY = "longstringofalphanumer1c"
Как добавить динамические фильтры на панель инструментов
Используйте виджет «Поле фильтров» , создайте фрагмент и добавьте его на панель инструментов.
Виджет «Поле фильтра» позволяет определить запрос для заполнения раскрывающихся списков, которые можно использовать для фильтрации. Чтобы создать список различных значений, мы запускаем запрос и сортируем результат по предоставленной вами метрике, сортируя по убыванию.
В виджете также есть флажок «Фильтр по дате» , который включает возможности фильтрации по времени на панели инструментов. После установки флажка и обновления вы увидите раскрывающиеся списки от и до.
По умолчанию фильтрация будет применяться ко всем срезам, построенным поверх источника данных, который имеет то же имя столбца, на котором основан фильтр. Также требуется, чтобы этот столбец был отмечен как «фильтруемый» на вкладке столбца редактора таблицы.
Но что, если вы не хотите, чтобы определенные виджеты отфильтровывались на панели инструментов? Вы можете сделать это, отредактировав панель мониторинга и отредактировав в форме поле метаданных JSON, а точнее ключ filter_immune_slices
, который получает массив идентификаторов слайсов, на который никогда не должна влиять фильтрация на уровне панели мониторинга.
{
"filter_immune_slices": [324, 65, 92],
"expanded_slices": {},
"filter_immune_slice_fields": {
"177": ["country_name", "__time_range"],
"32": ["__time_range"]
},
"timed_refresh_immune_slices": [324]
}
Теперь обратите внимание на filter_immune_slice_fields
ключ. Это позволяет вам быть более конкретным и определить для конкретного slice_id, какие поля фильтра следует игнорировать.
Обратите внимание на использование ключевого __time_range
слова, зарезервированного для работы с упомянутой выше фильтрацией временных границ.
Но что происходит с фильтрацией при работе со срезами из разных таблиц или баз данных? Если имя столбца является общим, фильтр будет применен, это так просто.
Как ограничить время обновления на панели инструментов
По умолчанию функция обновления панели мониторинга по времени позволяет автоматически повторно запрашивать каждый фрагмент панели мониторинга в соответствии с установленным расписанием. Однако иногда вам не нужно обновлять все срезы, особенно если некоторые данные перемещаются медленно или выполняются тяжелые запросы. Чтобы исключить определенные фрагменты из процесса синхронизированного обновления, добавьте ключ timed_refresh_immune_slices
в поле метаданных JSON панели мониторинга:
{
"filter_immune_slices": [],
"expanded_slices": {},
"filter_immune_slice_fields": {},
"timed_refresh_immune_slices": [324]
}
Обновление фрагмента также будет происходить в течение указанного периода. Вы можете отключить это смещение, установив значение stagger_refresh
false, и изменить период сдвига, установив stagger_time
значение в миллисекундах в поле метаданных JSON:
{
"stagger_refresh": false,
"stagger_time": 2500
}
Почему «flask fab» или суперсет зависает/зависает/не отвечает при запуске (мой домашний каталог смонтирован по NFS)?
По умолчанию Superset создает и использует базу данных SQLite по адресу ~/.superset/superset.db
. Известно, что SQLite плохо работает при использовании в NFS из-за неработающей реализации блокировки файлов в NFS.
Вы можете переопределить этот путь, используя переменную среды SUPERSET_HOME .
Другой обходной путь — изменить место, где superset хранит базу данных sqlite, добавив следующее superset_config.py
:
SQLALCHEMY_DATABASE_URI = 'sqlite:////new/location/superset.db'
Что делать, если схема таблицы изменилась
Схемы таблиц развиваются, и Superset должен это отражать. В жизненном цикле панели мониторинга довольно часто возникает необходимость добавить новое измерение или показатель. Чтобы заставить Superset обнаружить ваши новые столбцы, все, что вам нужно сделать, это перейти в «Данные» -> «Наборы данных» , щелкнуть значок редактирования рядом с набором данных, схема которого изменилась, и нажать « Синхронизировать столбцы из источника» на вкладке « Столбцы ». За сценой новые столбцы будут объединены. После этого вы можете повторно отредактировать таблицу, чтобы настроить вкладку «Столбцы», установить соответствующие флажки и снова сохранить.
Какой механизм базы данных я могу использовать в качестве серверной части для Superset
Чтобы уточнить, серверная часть базы данных — это база данных OLTP, используемая Superset для хранения своей внутренней информации, такой как ваш список пользователей, срезов и определений панели мониторинга.
Superset тестируется с использованием Mysql, Postgresql и Sqlite для его серверной части. Рекомендуется установить Superset на один из этих серверов баз данных для производства.
Использование хранилища столбцов, баз данных без OLTP, таких как Vertica, Redshift или Presto, в качестве базы данных просто не будет работать, поскольку эти базы данных не предназначены для такого типа рабочей нагрузки. Установка в Oracle, Microsoft SQL Server или других базах данных OLTP может работать, но не тестировалась.
Обратите внимание, что практически любые базы данных с интеграцией SqlAlchemy должны отлично работать в качестве источника данных для Superset, но не в качестве бэкэнда OLTP.
Как настроить аутентификацию и авторизацию OAuth
Вы можете взглянуть на этот пример конфигурации Flask-AppBuilder .
Как установить фильтр по умолчанию на панели инструментов
Просто примените фильтр и сохраните панель мониторинга, пока фильтр активен.
Есть ли способ принудительно использовать определенные цвета
Это возможно для каждой информационной панели путем предоставления сопоставления меток с цветами в атрибуте метаданных JSON с использованием ключа label_colors
.
{
"label_colors": {
"Girls": "#FF69B4",
"Boys": "#ADD8E6"
}
}
Работает ли Superset с [какой-то database engine]
В разделе «Подключение к базам данных» представлен лучший обзор поддерживаемых баз данных. Механизмы баз данных, не указанные на этой странице, также могут работать. Мы полагаемся на то, что сообщество внесет свой вклад в эту базу знаний.
Чтобы механизм базы данных поддерживался в Superset через коннектор SQLAlchemy, необходимо наличие совместимого с Python диалекта SQLAlchemy , а также определенного драйвера DBAPI. База данных с ограниченной поддержкой SQL также может работать. Например, можно подключиться к Druid через коннектор SQLAlchemy, хотя Druid не поддерживает соединения и подзапросы. Еще один ключевой элемент поддержки базы данных — интерфейс спецификации Superset Database Engine. Этот интерфейс позволяет определять конфигурации и логику для конкретной базы данных, выходящие за рамки SQLAlchemy и DBAPI. Это включает в себя такие функции, как:
- функция SQL, связанная с датой, которая позволяет Superset извлекать разную степень детализации времени при выполнении запросов временных рядов.
- поддерживает ли движок подзапросы. Если false, Superset может выполнять двухэтапные запросы, чтобы компенсировать ограничение.
- методы обработки журналов и определения процента выполнения запроса
- технические сведения о том, как обрабатывать курсоры и соединения, если драйвер не является стандартным DBAPI
Помимо коннектора SQLAlchemy, также возможно, хотя и гораздо сложнее, расширить Superset и написать свой собственный коннектор. Единственным примером этого на данный момент является коннектор Druid, который заменяется растущей поддержкой SQL в Druid и недавней доступностью драйвера DBAPI и SQLAlchemy. Если база данных, которую вы планируете интегрировать, имеет какую-либо поддержку SQL, вероятно, предпочтительнее пойти по пути SQLAlchemy. Обратите внимание, что для того, чтобы собственный коннектор был возможен, база данных должна иметь поддержку выполнения запросов типа OLAP и должна иметь возможность выполнять действия, типичные для базового SQL:
- совокупные данные
- применять фильтры
- применять фильтры типа HAVING
- быть осведомленным о схеме, выставлять столбцы и типы
Предлагает ли Superset публичный API
Да, общедоступный REST API, и поверхность этого формального API неуклонно расширяется. Подробнее об этом API и взаимодействии с ним с помощью Swagger можно прочитать здесь .
Некоторые из первоначальных представлений о наборе конечных точек в /api/v1 изначально были указаны в SIP-17, и постоянно совершенствуется, чтобы охватить все больше и больше вариантов использования.
Доступный API задокументирован с помощью Swagger , и документацию можно сделать доступной в /swagger/v1 , включив следующий флаг в superset_config.py
:
FAB_API_SWAGGER_UI = True
- используя ORM (SQLAlchemy) напрямую
- с использованием внутреннего FAB ModelView API (устарело в Superset)
- изменение исходного кода в вашем форке
Что делает смещение часов (Hours Offset) в «Редактировать набор данных» ?
В представлении «Редактировать набор данных» можно указать смещение по времени. Это поле позволяет настроить количество часов, которое будет добавлено или вычтено из столбца времени. Это можно использовать, например, для преобразования времени UTC в местное время.
Leave a Reply