====== Датасеты (Datasets)======
**Датасет (источник данных)** – описание набора данных, которые хранятся в базе данных. Сами данные не хранятся в Superset, а только загружаются при запросе. Раздел с перечнем всех датасетов в разделе **Датасеты**. \\ \\
Справа располагаются кнопки для **множественного выбора** из существующих датасетов, **добавления датасета** из базы данных и из файла.
Ниже располагаются окно **поиска** и окна для **фильтрации** загруженных датасетов по таким полям, как:
* **Владелец** датасета;
* Используемая **база данных**;
* Используемая **схема**;
* **Тип** датасета: физический {{:superset:work_in_superset:datasets:datasets_3.png?nolink&20|}} или виртуальный {{:superset:work_in_superset:datasets:datasets_4.png?nolink&18|}};
* **Утверждено**- сертифицирован ли датасет.
Для датасетов отображаются следующие атрибуты:
* **Имя** – название датасета;
* **Тип** – физический или виртуальный;
* **База данных** – используемая база данных;
* **Схема** – используемая схема;
* **Изменено** – когда последний раз был изменен датасет;
* **Кем изменено** – кем в последний раз был изменен датасет;
* **Владельцы** – пользователи, которые могут изменять датасет;
* **Действия** – доступные действия, которые можно выполнитьс базой данных.
* Удалить;
* Экспортировать;
* Редактировать
* Дублировать (только для виртуальных датасетов).
{{:superset:work_in_superset:datasets:ds_1.png?nolink|}}
===== Создание датасета на основе таблицы =====
В разделе Датасеты справа нажимаем на кнопку **+ ДАТАСЕТ**. В диалоговом окне выбираем базу данных, схему и таблицу.\\ \\
После выбора таблицы справа появятся столбцы таблицы и их тип. Нажмите внизу на кнопку **Create dataset and create chart**. Такой созданный датасет будет называться физическим, так как данные датасета физически хранятся в указанной таблице. Физический датасет в списке выделяется черно-белым {{:superset:work_in_superset:datasets:datasets_3.png?nolink&20|}}.\\
Так как при создании можно создать только физический датасет, у которого нельзя изменить название (т.к. название датасета= название таблицы), то два физических датасета с одинаковыми именами таблиц не могут быть созданы (даже если они в разных схемах и базах данных).
Если нужно создать несколько датасетов ссылающихся на одну таблицу, то сделайте два виртуальных датасета, где вручную пропишите выборку SQL-запросом к одной и той же таблице (см. подробнее следующий раздел).
{{:superset:work_in_superset:datasets:ds_2.png?nolink&500|}}
===== Настройка датасета =====
Каждый датасет после создания можно изменить. У выбранного датасета в столбце **Действия** выбираем значок карандаша.\\
==== Источник ====
На вкладке **Источник** можно просмотреть текущий источник данных. Редактирование на вкладке защищено от случайного изменения. \\
==== Меры ====
На вкладке **Меры** можно настроить показатели (метрики) датасета. Метрики используются для выполнения операций с набором данных (т.е. применяются более чем к одной строке), например, с агрегатными функциями в Pivot-таблицах. \\ Чтобы добавить показатель нажмите кнопку **+ ДОБАВИТЬ ЗАПИСЬ**. В новой строке в поле **Metric Key** введите название метрики, которое будет отображаться в списке. В поле **Метка** введите название, которое будет отображаться в конструкторе графика. **Выражение SQL** должно содержать агрегатные или иные функции. Корректность выражения не проверяется в данном окне. \\ Слева по нажатию на {{:superset:work_in_superset:datasets:dataset_setting_11.png?nolink&10|}} у каждой метрики можно раскрыть область дополнительных параметров, ввести описание, формат вывода данных, информацию об утверждении данных и предупреждающее сообщение (появляется в поле выбора метрики в конструкторе графиков), параметры валюты и др. Чтобы **удалить** строку с метрикой, нажмите справа значок корзины.
==== Столбцы ====
Вкладка **Столбцы** содержит описание столбцов, определенные таблицей или SQL-запросом источника. **Тип данных** содержит тип данных столбца (например, integer, float, variable character, timestamp и т.д.), это поле не редактируемое. \\ Столбец **Содержит дату/время** указывает, что данные содержать дату или время в каком-либо формате (date, time, timestamp и т.д.). \\ **Дата и время по умолчанию** указывает на столбец, который будет выбран по умолчанию, как дата и время. \\ Флаг **Фильтруемый** разрешает включать столбец датасета в фильтр на графиках/дашбордах. \\ Флаг **Является измерением** указывает, можно ли по данному столбцу применять «GROUP BY» в запросе, то есть можно ли группировать в pivot-таблицах. \\ Значок корзины для **удаления** столбца. \\ У каждого столбца датасета можно настроить дополнительный параметры, нажав на стрелку {{:superset:work_in_superset:datasets:dataset_setting_11.png?nolink&10|}}:
* **Метка** – отображаемое название столбца в графиках (там можно переопределить);
* **Описание** – краткое описание столбца, появляется при наведении курсора;
* **Формат даты/времени** – если у столбца выставлен флаг **Содержит дату/время**, то дата и время будут преобразовываться для вывода по заданному формату. Формат задается в соответствии с форматом Python (например, %m-%d-%Y= 02-27-2020);
* **Кем утверждено** – пользователь(ли), утвердивший данный показатель;
* **Детали утверждения**.
==== Вычисляемые столбцы ====
Вкладка **Вычисляемые столбцы** содержит столбцы, которые автор датасета может сам задать. Эти столбцы физически не хранятся ни в базе данных, ни в superset, они вычисляются “на лету” при выполнении SQL-запроса. Настройки у вычисляемых столбцов такие же, как и на вкладке **Столбцы**, однако добавляются поля **Выражение SQL** и **Тип данных**.
* Например, из двух значений физических столбцов //department// и //owner// нужно получить одну строку с помощью их конкатенации, тогда расчётный столбец будет задан следующим образом, в Выражение SQL прописываем соответствующие операторы, Метка будет определять понятное название на русском языке, а в поле Таблица данных (прим. тип данных) выбираем типа string.
==== Настройки ====
На вкладке **Настройки** можно изменить описание датасета, время обновления данных, часовой пояс для смещения времени относительно UTC, владельцев (пользователей, которые могут изменять датасет).
\\ \\ \\
После настроки датасета нажмите кропку **Сохранить** для применения изменений.
{{:superset:work_in_superset:datasets:ds_4.png?nolink&400|}} \\ \\
{{:superset:work_in_superset:datasets:ds_6.png?nolink|}}
{{:superset:work_in_superset:datasets:ds_7.png?nolink|}}
{{:superset:work_in_superset:datasets:ds_8.png?nolink&400|}}
{{:superset:work_in_superset:datasets:ds_9.png?nolink|}}
{{:superset:work_in_superset:datasets:ds_10.png?nolink|}}
===== Изменение датасета на произвольный SQL-запрос =====
Создать датасет сразу с произвольным SQL-запросом нельзя (или воспользуйтесь [[superset:work_in_superset:queries_and_analysis|Лабораторией SQL]]). Можно изменить таблицу на произвольный запрос только в уже существующем датасете.\\
Датасет основанный на произвольном SQL-запросе называется __виртуальным__, потому что с помощью запроса данные датасета могут быть получены, как и обычной выборкой реальных данных из физической таблицы, так и с помощью разных инструментов (например, агрегатные, аналитические или оконные функции) из разных таблиц разных схем. Виртуальный датасет в списке выделяется синим {{:superset:work_in_superset:datasets:datasets_4.png?nolink&15|}}.\\ \\
Для смены типа датасета на виртуальный нажмите на значок карандаша в действиях.\\
В диалоговом окне настроек на вкладке **Источник** заблокировано изменение в целях случайного изменения. Нажмите на {{:superset:work_in_superset:datasets:changing_dataset_to_query_6.png?nolink&15|}}, чтобы разблокировать редактирование полей и выберите ниже **Виртуальный (SQL)**. В поле SQL можно ввести любой SQL-запрос. При вводе запроса никаких проверок на корректность синтаксиса и выборки данных не производится. \\ \\
После ввода запроса нажимаем снизу кнопку **Сохранить** и подтверждаем применение изменений. Появится сообщение {{:superset:work_in_superset:datasets:changing_dataset_to_query_2.png?nolink&200|}}, что значит удаление старого датасета и создание нового. \\
По сути, предыдущий датасет удаляется и создается новый, поэтому еще раз подумайте, возможно не стоит трогать уже существующий, а лучше создать новый.
Чтобы обновились столбцы таблицы в соответствии с результатом запроса, снова из списка датасетов заходим в окно редактирования, сверху выбираем вкладку Столбцы. По кнопке **Синхронизировать столбцы из источника** столбцы ниже обновятся, добавятся новые (если были в запросе).
{{:superset:work_in_superset:datasets:changing_dataset_to_query_1.png?nolink|}}
Также появится сообщение в углу об обновлении столбцов датасета, что говорит о правильном выполнении SQL-запроса. \\ \\
Если SQL-запрос синтаксически неправильно написан или произошла ошибка при синхронизации, будет показано соответствующее сообщение с описанием ошибки.
{{:superset:work_in_superset:datasets:changing_dataset_to_query_4.png?nolink|}}
{{:superset:work_in_superset:datasets:changing_dataset_to_query_5.png?nolink|}}
===== Удаление датасета =====
В списке датасетов наведите курсор мыши на строку нужного датасета в области столбца **Действия**. Появится значки взаимодействия с датасетом. Нажмите на значок **корзины**. \\
В появившемся диалоговом окне будет указано к какому количеству графиков и дашбордов привязан выбранный датасет. После удаления датасета графики станут нерабочими. \\ \\
Для удаления введите в строке __удалить__ и нажмите на кнопку **Удалить**, которая станет доступна после ввода.
Восстановить удаленный датасет будет невозможно, только создать/добавить заново!
{{:superset:work_in_superset:datasets:ds_11.png?nolink|}}