====== Базы данных (Databases)======
**Базы данных** – упорядоченный набор структурированной информации или данных, которые обычно хранятся в электронном виде. База данных обычно управляется системой управления базами данных (СУБД). \\
Раздел настройки подключения к разным базам данных находится **Настройки -> Данные -> Базы данных**.
{{:superset:work_in_superset:databases:db_1.png?nolink&200|}}
\\
Интерфейс раздела **Базы данных** выглядит следующим образом:\\
\\
Справа расположены кнопки для добавления базы данных и таблицы из файлов (CSV, Excel, столбчатый формат).\\
Ниже - окно **поиска** и окна для **фильтрации** загруженных баз данных:\\
* возможно ли использовать базу данных в SQL редакторе;
* возможно ли использовать асинхронный режим работы.\\
Для загруженных баз данных отображаются следующие атрибуты:\\
* **База данных** – имя базы данных (как вы ее назвали при добавлении);
* **Драйвер** – используемая система управления базами данных;
* **Асинхронные запросы (AQE, Asynchronous Query Execution)** – поддерживается ли асинхронный режим работы;
* **DML (Data Manipulation Language)** – поддерживается ли язык манипулирования данными (вставка, изменение, удаление);
* **Загрузить CSV** – поддерживается ли загрузка CSV-файлов;
* **Доступен в SQL редакторе** – разрешено ли использовать в SQL редакторе;
* **Кем создано** – кем создана база данных;
* **Последнее изменение** – когда было сделано последнее изменение;
* **Действия** – доступные действия, которые можно произвести с базой данных:
* Удалить;
* Экспортировать;
* Редактировать.
{{:superset:work_in_superset:databases:db_2.png?nolink|}}
===== Подключение базы данных =====
==== Шаг 1. Создание новой базы данных. ====
В разделе **Базы данных** нажимаем справа кнопку **+ БАЗА ДАННЫХ**.
==== Шаг 2. Выбор базы данных. ====
* Выбираем в диалоговом окне PostgreSQL или SQLite.
* Для подключения другой базы данных воспользуйтесь выпадающим списком ниже «Поддерживаемые базы данных».
* Или импортируйте свою базу данных из файла.
==== Шаг 3. Настройка базы данных. ====
=== Для баз данных Postgres и SQLite нужно ввести следующие параметры: ===
* **Хост** – IP-адрес или доменное имя;
* **Порт** – порт хоста (5432, по умолчанию для PostgreSQL);
* **Имя базы данных** – имя базы данных;
* **Имя пользователя** – пользователь СУБД, у которого выданы права на подключения к базе данных;
* **Пароль** – пароль пользователя;
* **Отображаемое имя** – имя подключения, отображаемое в списке подключения;
* **Дополнительные параметры** – добавление дополнительных пользовательских параметров;
* **SSL** – включает ssl-шифрование подключения (если поддерживается);
* **SSH Tunnel** – включает SSH-туннели.
=== Для других поддерживаемых баз данных введите следующие параметры: ===
* **Отображаемое имя** – имя подключения, отображаемое в списке подключения;
* **SQLAlchemy URI** в виде диалект+драйвер://пользователь:пароль@хост:порт/схема
, где
* **Диалект+Драйвер** – например, Oracle;
* **Пользователь** – пользователь СУБД, у которого выданы права на подключения к базе данных;
* **Пароль** – пароль пользователя;
* **Хост** – IP-адрес или доменное имя;
* **Порт** – порт хоста (1521, по умолчанию для Oracle);
* **Схема** – используемая схема базы данных.
Нажмите кнопку **Тестовое соединение**. При успешном соединении, нажмите внизу кнопку **Подключить**.
{{:superset:work_in_superset:databases:db_4.png?nolink&300|}}
{{:superset:work_in_superset:databases:db_3.png?nolink&300|}}
{{:superset:work_in_superset:databases:db_5.png?nolink|}}
==== Шаг 4. Продвинутая настройка ====
* **Лаборатория SQL** – настройка взаимодействия базы данных с Лабораторией SQL:
* **Предоставить доступ к базе в Лаборатории SQL** – разрешить запросы к этой базе дынных;
* **Разрешить CREATE TABLE AS** – разрешить создавать таблицы на основе запросов;
* **Разрешить CREATE VIEW AS** – разрешить создавать представления на основе запросов;
* **Разрешить DML** – разрешить команды UPDATE, DELETE, CREATE и пр. над базой данных;
* **Разрешить оценку стоимости запроса** – показывать кнопку подсчета стоимости запроса перед его выполнением (для Bigquery, Presto и Postgres);
* **Разрешить изучение этой базы данных** – пользователям разрешено смотреть ответ на запрос к этой базе в Лаборатории SQL;
* **Отключить предпросмотр данных в Лаборатории SQL** – отключить предпросмотр данных при извлечении метаданных таблицы в Лаборатории SQL (полезно для избежания проблем с производительностью браузера при использовании баз данных с очень широкими таблицами);
* **Производительность** – параметры производительности для базы данных:
* **Время жизни кэша графика** – длительность (сек.) таймаута кэша для графиков, использующих эту базу данных;
* **Время жизни кэша схемы** – длительность (сек.) таймаута кэша для схем, использующих эту базу данных;
* **Время жизни кэша таблицы** – длительность (сек.) таймаута кэша для таблиц, использующих эту базу данных;
* **Асинхронное выполнение запросов** – работа с базой данных в асинхронном режиме означает, что запросы выполняются на удаленных серверах, а не на веб-сервере Superset (подразумевается, что у вас есть установка с Celery);
* **Отменять запрос при закрытии вкладки** – завершать выполнение запросов после закрытия браузерной вкладки или после того, как пользователь переключится на другую вкладку (доступно для Presto, Hive, MySQL, Postgres, Snowflake);
* **Безопасность** – дополнительная информация по подключению:
* **Безопасность** – JSON-строка, содержащая дополнительную информацию о соединении;
* **Корневой сертификат**;
* **Имперсонировать пользователя**;
* **Разрешить загрузку файлов в базу данных**;
* **Прочее**:
* **Параметры метаданных**;
* **Параметры драйвера**;
* **Версия**.
====Шаг 5. После всех настроек нажмите кнопку Завершить.====
{{:superset:work_in_superset:databases:db_6.png?nolink&300|}}
{{:superset:work_in_superset:databases:db_7.png?nolink&300|}}
\\
{{:superset:work_in_superset:databases:db_8.png?nolink&300|}}
{{:superset:work_in_superset:databases:db_9.png?nolink&300|}}
===== Импорт из файлов =====
==== Импорт данных из CSV в базу данных ====
В разделе **Базы данных**, нажимаем справа на выпадающий список **Загрузить файл в базу данных** (рядом с кнопкой **+ БАЗА ДАННЫХ**). Из списка выбираем **Загрузить CSV**. \\ \\
Далее необходимо заполнить следующее:
* **Загрузка CSV** - прикрепите сюда CSV-файл, который будет загружен в базу данных;
* **Имя таблицы** - имя таблицы, которая будет сформирована из данных csv;
* **База данных** – база данных, в которую будет добавляться таблица;
* **Схема** – схема, в которую будет добавлена таблица (если это поддерживается базой данных);
* **Разделитель** – разделитель, используемый в CSV-файле;
* **File Settings**:
* **Если таблица уже существует** – что должно произойти, если таблица уже существует: Ошибка (Fail) – ничего не делать, Заменить (Replace) – удалить и заново создать таблицу или Добавить (Append) - добавить данные;
* **Пропуск начального пробела** – пропустить пробелы после разделителя;
* **Пропуск пустых строк** – пропустите пустые строки, а не интерпретировать их как значения NaN;
* **Список столбцов, которые должны быть интерпретированы как даты** – разделённый запятыми список столбцов, которые должен быть интерпретированы как даты;
* **Автоматически интерпретировать форматы даты и времени** – автоматическая интерпретация формата даты и времени;
* **Day First** – формат даты, где сначала день, потом месяц (международный и Европейский формат);
* **Десятичный разделитель** - символ, который интерпретируется как десятичная точка;
* **Пустые значения** – JSON-список значений, который нужно интерпретировать как Пусто (null);
* **Columns**:
* **Индексный столбец** – столбец для использования в качестве меток строк данных. Оставьте пустым, если столбец индекса отсутствует;
* **Индекс датафрейма** – сделать индекс датафрейма столбцом;
* **Метка(и) столбца(ов)** – метка для индексного(ых) столбца(ов). Если не задано и задан индекс датафрейма, будут использованы имена индексов;
* **Столбцы для чтения** – JSON-список имен столбцов, которые будут использоваться;
* **Перезаписать повторяющиеся столбцы** – если повторяющиеся столбцы не перезаписываются, они будут представлены в формате «X.0, X.1»;
* **Расширенный тип данных** – словарь с именами столбцов и их тип данных, на который нужно изменить. Например, {‘user_id’: ‘integer’};
* **Rows**:
* **Строка заголовка** – строка, содержащая заголовки для использования в качестве имен столбцов (0 - первая строка данных). Оставьте пустым, если строка заголовка отсутствует;
* **Строки для чтения** – количество строк файла для чтения;
* **Пропуск строк** – количество первых строк, которые нужно пропустить.
После заполнения необходимых параметров, нажмите внизу кнопку **Сохранить**.
{{:superset:work_in_superset:databases:db_10.png?nolink|}}
==== Импорт данных из Excel в базу данных ====
В разделе **Базы данных**, нажимаем справа на выпадающий список **Загрузить файл в базу данных** (рядом с кнопкой **+ БАЗА ДАННЫХ**). Из списка выбираем **Загрузить файл Excel**. \\ \\
Далее необходимо заполнить следующие параметры:
* **Имя таблицы** – имя таблицы, которая будет сформирована из данных Excel;
* **Excel-файл** – прикрепите сюда Excel-файл, который будет загружен в БД;
* **Имя листа** – имя листа (по умолчанию первый лист);
* **База данных** – база данных, в которую будет добавляться таблица;
* **Схема** – схема, в которую будет добавлена таблица (если это поддерживается базой данных);
* **Таблица существует** – что должно произойти, если таблица уже существует: Ошибка (Fail) – ничего не делать, Заменить (Replace) – удалить и заново создать таблицу или Добавить (Append) – добавить данные;
* **Строка заголовка** – строка, содержащая заголовки для использования в качестве имен столбцов (0 - первая строка данных); оставьте пустым, если строка заголовка отсутствует;
* **Индексный столбец** – столбец для использования в качестве меток строк данных; оставьте пустым, если столбец индекса отсутствует;
* **Управление повторяющимися столбцами** – обозначить повторяющиеся столбцы как «X.0, X.1»;
* **Пропуск строк** – количество первых строк, которые нужно пропустить;
* **Строки для чтения** - количество строк файла для чтения;
* **Парсинг дат** – разделённый запятыми список столбцов, которые должен быть интерпретированы как даты;
* **Десятичный символ** – символ, который интерпретируется как десятичная точка;
* **Индекс датафрейма** – записать индекс датафрейма, как отдельный столбец;
* **Метка(и) столбца(ов)** – обозначение столбца для столбцов с индексами. Если поле пустое, а настройка [Индекс] включена, то используются имена индексов;
* **Пустые значения** – JSON-список значений, который нужно интерпретировать как Пусто (null).
После заполнения необходимых параметров, нажмите внизу кнопку **Сохранить**.
==== Импорт данных столбчатого формата ====
В разделе **Базы данных**, нажимаем справа на выпадающий список **Загрузить файл в базу данных** (рядом с кнопкой **+ БАЗА ДАННЫХ**). Из списка выбираем **Загрузить файл столбчатого формата**. \\ \\
Далее необходимо заполнить следующие:
* **Имя таблицы** – имя таблицы, которая будет сформирована из данных;
* **Файл столбчатого формата** – прикрепите сюда файл, который будет загружен в базу данных;
* **База данных** – база данных, в которую будет добавляться таблица;
* **Схема** – схема, в которую будет добавлена таблица (если это поддерживается базой данных);
* **Таблица существует** – что должно произойти, если таблица уже существует: Ошибка (Fail) – ничего не делать, Заменить (Replace) – удалить и заново создать таблицу или Добавить (Append) – добавить данные;
* **Используемые столбцы** – JSON-список имен столбцов, которые будут использоваться. Например, ["id", "name", "gender", "age"]. Если ничего не указано, то все столбцы из файла будут добавлены;
* **Индекс датафрейма** – записать индекс датафрейма, как отдельный столбец;
* **Метка(и) столбца(ов)** – обозначение столбца для столбцов с индексами. Если поле пустое, а настройка [Индекс] включена, то используются имена индексов.
После заполнения необходимых параметров, нажмите внизу кнопку **Сохранить**.
{{:superset:work_in_superset:databases:db_10.png?nolink|}}