Общие сведения
Функциональность добавления колонки в датасет позволяет:
- добавлять в объединенный датасет колонки, которые были отключены при создании объединенного датасета;
- добавлять в объединенный датасет колонки, добавленные в исходный датасет после создания объединенного датасета (добавляемая в исходный датасет колонка не отображается в объединенном датасете автоматически);
- добавлять в датасет колонки, значения в которых рассчитываются по заданному алгоритму.
Чтобы добавить колонку, нажмите в блоке настройки колонок датасета кнопку «». По клику кнопки открывается окно «Добавление колонки» для выбора типа добавляемой колонки.
Добавление колонки источника
Обратите внимание!
Функциональность добавления колонки доступна только для объединенного датасета, который создан на основе одного SQL-датасета из локального хранилища или одной таблицы из внешнего хранилища. Во всех остальных случаях – когда объединенный датасет создан на основе любого другого датасета (не SQL-датасета) из локального хранилища, или двух и более SQL-датасетов из локального хранилища, или двух и более таблиц из внешнего хранилища – добавление колонки приводит к некорректной работе объединенного датасета: данные не отображаются при просмотре такого датасета, а его использование в виджетах приводит к некорректным результатам.
Чтобы добавить в датасет колонку, кликните на шаге выбора типа колонки «Локальная колонка». По клику кнопки открывается окно добавления колонки.
Окно добавления колонки состоит из следующих полей.
- «Название» – название колонки для отображения.
- «Латинское название» – игнорируется и будет упразднено.
- «Путь в источнике» – название колонки в исходном SQL-датасете или таблице внешнего хранилища.
- «Тип» – тип данных добавляемой колонки:
- Строка;
- Число;
- Дата;
- Булевое значение.
Если выбран неподходящий тип данных, значения в добавленной колонке отображаются некорректно или не отображаются.
Обратите внимание!
- Если в объединенный датасет добавлена колонка, в поле «Путь в источнике» которой указано название несуществующей колонки, данные не отображаются при просмотре такого датасета, а его использование в виджетах приводит к некорректным результатам.
- Если в исходном SQL-датасете название колонки отличается от того, которое возвращает SQL-запрос, то есть было изменено в свойствах колонки, то в поле «Путь в источнике» при добавлении такой колонки следует указывать название колонки как в запросе.
Добавление расчетной колонки
Значения для расчетной колонки рассчитываются по заданному пользовательскому алгоритму.
Чтобы добавить в датасет расчетную колонку, кликните на шаге выбора типа колонки «Расчетная колонка». По клику кнопки открывается страница настройки расчетной колонки.
Страница состоит из полей и элементов, сверху вниз, слева направо:
- «Название колонки» – название для отображения;
- «Тип данных» – тип данных, который соответствует возвращаемому значению расчетной колонки;
- «Переменные» – блок для создания переменных из колонок датасета, чтобы использовать их значения в расчете;
- «Формула» – блок для написания алгоритма расчета на языке Python;
- «Датасет» – блок с колонками датасета;
- «Превью» – блок для предпросмотра результата расчета;
- «Ошибка» – всплывающий в правой части страницы блок с сообщением об ошибке в настройках расчетной колонки;
- «Записать расчет в датасет» – параметр для управления записью результата расчета, который изменяет логику проведения расчета.
Обратите внимание
Тип данных
Тип данных должен соответствовать типу данных, который возвращает формула расчета, для корректного отображения и использования рассчитанных значений.
Обратите внимание
Переменные
Переменные создаются из колонок датасета и позволяют обращаться к значениям в колонке. Так, через переменную City из колонки «Городское», для каждой строки расчетной колонки будет получено значение из соответствующей строки колонки «Городское».
Чтобы создать переменную, зажмите и перетащите мышью колонку датасета из блока «Датасет» в блок «Переменные». После перетаскивания блок «Переменные» автоматически переключается в режим редактирования. Чтобы включить режим редактирования вручную, кликните в блоке кнопку «Редактировать».
В режиме редактирования вы можете задать имя переменной, следуя указанным в подсказке ограничениям, а также метод агрегации перед расчетом.
Обратите внимание!
Агрегация перед расчетом применяется только в специальных условиях, о которых сказано в соответствующем разделе. В примере выше метод агрегации SUM, заданный для переменной City, не применяется перед расчетом.
Чтобы удалить переменную, кликните для соответствующей переменной кнопку «».
Формула
Блок «Формула» предназначен для написания алгоритма расчета на языке Python. Ключевое слово return используется для передачи значения в расчетную колонку.
Чтобы получить результат расчета, напишите алгоритм и кликните в блоке кнопку «Рассчитать».
Обратите внимание
- Агрегация перед расчетом, метод которой задается для переменной в блоке «Переменные», применяется только в специальных условиях, о которых сказано в соответствующем разделе, и не может быть использована в расчете явно.
- Механизм расчета не может использовать в вычислениях NULL. Для обработки NULL в переменной используйте условие проверки на NULL с заменой на ноль, например:
return a1 if a1 else 0 + a2 if a2 else 0
—
В следующем примере используются дополнительные переменные, объявленные в блоке.
Превью
По клику кнопки «Рассчитать» в блоке превью отображается расчетная колонка с результатом расчета, а также колонки, которые вынесены в блок «Переменные», независимо от того, используются ли они в алгоритме расчета. Это может быть использовано для удобства предпросмотра.
Ошибка
Сообщения об ошибках в настройке расчетной колонки или при сохранении отображаются во всплывающем блоке. Блок отображается на странице до его закрытия.
Записать расчет в датасет
Параметр управляет записью результата расчета в датасет.
Когда параметр включен, результат расчета записывается в датасет и такая расчетная колонка:
- выполняет расчет построчно, игнорируя методы агрегации, задаваемые для переменных в блоке «Переменные»;
- может быть использована для сортировки и фильтрации;
- обновляется только с обновлением датасета, изменением SQL-запроса, удалением или добавлением колонки датасета, а также после её редактирования и сохранения изменений;
- позволяет управлять агрегацией через настройки полей данных с агрегацией.
Когда параметр выключен, результат расчета НЕ записывается в датасет, а запрашивается во время обращения к данным датасета и такая расчетная колонка:
- применяет для каждой переменной агрегацию перед расчётом, используя методы агрегации, задаваемые для переменных в блоке «Переменные»;
- не может быть использована для фильтрации;
- не позволяет управлять агрегацией через настройки полей данных с агрегацией.
Для расчетной колонки, сохраненной с включенным параметром, на странице настройки датасета в блоке колонок, отображается пиктограмма «». Для расчетной колонки с выключенным параметром – пиктограмма «».
Обратите внимание!
- Параметр не может быть включен для расчетной колонки объединенного датасета.
- Расчетную колонку с выключенным параметром невозможно выбрать при создании объединенного датасета.
- При редактировании расчетной колонки запрещается изменение состояния параметра на выключенное – чекбокс параметра блокируется во включенном состоянии при сохранении в таком состоянии.
Агрегация
Применение агрегации перед расчетом позволяет рассчитывать значения для любого уровня детализации. Без применения агрегации расчет выполняется построчно.
Чтобы расчетная колонка применяла агрегацию перед расчетом, требуется совместное выполнение условий:
- параметр «Записать расчет в датасет» выключен;
- расчетная колонка используется в поле данных с агрегацией.
Агрегация перед расчетом НЕ применяется в любом плоском представлении данных:
- в блоке «Превью» страницы настройки расчетной колонки;
- при просмотре датасета;
- для расчетной колонки, вынесенной в поле данных, не поддерживающее агрегацию;
Пусть есть набор данных:
Колонка 1 | Колонка 2 | Колонка 3 | Значение 1 | Значение 2 |
---|---|---|---|---|
А | Б | а | 10 | 2 |
А | Б | б | 20 | 2 |
А | В | в | 30 | 2 |
А | В | г | 40 | 2 |
А | В | д | 50 | 2 |
—
Создадим расчетную колонку с формулой «Значение 1 / Значение 2» с записью в датасет. Без применения агрегации перед расчетом результат расчета выполняется построчно и записывается в датасет:
Колонка 1 | Колонка 2 | Колонка 3 | Результат расчета (Значение 1 / Значение 2) |
---|---|---|---|
А | Б | а | 5 |
А | Б | б | 10 |
А | В | в | 15 |
А | В | г | 20 |
А | В | д | 25 |
—
Детализация по такой колонке использует агрегацию уже рассчитанных значений. Пример с методом агрегации SUM:
Колонка 1 | Результат расчета (Значение 1 / Значение 2) | Колонка 2 | Результат расчета (Значение 1 / Значение 2) | Колонка 3 | Результат расчета (Значение 1 / Значение 2) |
---|---|---|---|---|---|
А | 5 + 10 + 15 + 20 + 25 = 75 | Б | 5 + 10 = 15 | а | 5 |
А | Б | б | 10 | ||
А | В | 15 + 20 + 25 = 60 | в | 15 | |
А | В | г | 20 | ||
А | В | д | 25 |
—
Создадим вторую колонку, с такой же формулой, без записи в датасет. Детализация по такой колонке вызывает агрегацию перед расчетом значений. Пример с методом агрегации SUM для переменных «Значение 1» и «Значение 2»:
Колонка 1 | Результат расчета (Значение 1 / Значение 2) | Колонка 2 | Результат расчета (Значение 1 / Значение 2) | Колонка 3 | Результат расчета (Значение 1 / Значение 2) |
---|---|---|---|---|---|
А | (10 + 20 + 30 + 40 + 50) / (2 * 5) = 15 | Б | (10 + 20) / (2 * 2) = 7,5 | а | 5 |
А | Б | б | 10 | ||
А | В | (30 + 40 + 50) / (2 * 3) = 20 | в | 15 | |
А | В | г | 20 | ||
А | В | д | 25 |
—
—
Сравнение колонок на виджете.
—
—
—
—
Пример с методом агрегации SUM для переменной «Значение 1» и COUNT для переменной «Значение 2»:
Колонка 1 | Результат расчета (Значение 1 / Значение 2) | Колонка 2 | Результат расчета (Значение 1 / Значение 2) | Колонка 3 | Результат расчета (Значение 1 / Значение 2) |
---|---|---|---|---|---|
А | (10 + 20 + 30 + 40 + 50) / 5 = 30 | Б | (10 + 20) / 2 = 15 | а | 10 / 1 = 10 |
А | Б | б | 20 / 1 = 20 | ||
А | В | (30 + 40 + 50) / 3 = 40 | в | 30 / 1 = 30 | |
А | В | г | 40 / 1 = 40 | ||
А | В | д | 50 / 1 = 50 |
—
—
Сравнение колонок на виджете.
—
—
—
—
Пример с методом агрегации MAX для переменной «Значение 1» и COUNT DISTINCT для переменной «Значение 2»:
Колонка 1 | Результат расчета (Значение 1 / Значение 2) | Колонка 2 | Результат расчета (Значение 1 / Значение 2) | Колонка 3 | Результат расчета (Значение 1 / Значение 2) |
---|---|---|---|---|---|
А | 50 / 1 = 50 | Б | 20 / 1 = 20 | а | 10 / 1 = 10 |
А | Б | б | 20 / 1 = 20 | ||
А | В | 50 / 1 = 50 | в | 30 / 1 = 30 | |
А | В | г | 40 / 1 = 40 | ||
А | В | д | 50 / 1 = 50 |
—
—
Сравнение колонок на виджете.
—
—
—
—
Создадим на том же наборе данных расчетную колонку с формулой «(Значение 2) if (Колонка 1) == "А" else 0» с записью в датасет. Без применения агрегации перед расчетом результат расчета выполняется построчно и записывается в датасет:
Колонка 1 | Значение 2 | Результат расчета (return (Значение 2) if (Колонка 1) == "А" else 0) |
---|---|---|
А | 2 | 2 |
А | 2 | 2 |
А | 2 | 2 |
А | 2 | 2 |
А | 2 | 2 |
—
Детализация по такой колонке использует агрегацию уже рассчитанных значений. Пример с методом агрегации SUM:
Колонка 1 | Результат расчета (return (Значение 2) if (Колонка 1) == "А" else 0) | Колонка 2 | Результат расчета (return (Значение 2) if (Колонка 1) == "А" else 0) | Колонка 3 | Результат расчета (return (Значение 2) if (Колонка 1) == "А" else 0) |
---|---|---|---|---|---|
А | 2 + 2 + 2 + 2 + 2 = 10 | Б | 2 + 2 = 4 | а | 2 |
А | Б | б | 2 | ||
А | В | 2 + 2 + 2 = 6 | в | 2 | |
А | В | г | 2 | ||
А | В | д | 2 |
—
Создадим вторую колонку, с такой же формулой, без записи в датасет. Детализация по такой колонке вызывает агрегацию перед расчетом значений. Пример с методом агрегации COUNT для переменной «Значение 1» и SUM для переменной «Значение 2»:
Колонка 1 | Результат расчета (return (Значение 2) if (Колонка 1) == "А" else 0) | Колонка 2 | Результат расчета (return (Значение 2) if (Колонка 1) == "А" else 0) | Колонка 3 | Результат расчета (return (Значение 2) if (Колонка 1) == "А" else 0) |
---|---|---|---|---|---|
А | 0 | Б | 0 | а | 0 |
А | Б | б | 0 | ||
А | В | 0 | в | 0 | |
А | В | г | 0 | ||
А | В | д | 0 |
—
Поскольку для каждого уровня детализации выполнялась агрегация перед расчетом, то в переменную Column1 перед каждым расчетом передавалось значение «5», то есть агрегированное значение по колонке «Колонка 1». В результате выражение везде вернуло результат «0», так как «5» не равно «А».
В настройках колонки, в блоке превью видим ожидаемый результат по причине того, что агрегация перед расчетом НЕ применяется в любом плоском представлении данных.
—
Но на виджете видим, что значение для колонки без записи – «0».
Удаление колонки датасета, используемой в расчете
При удалении колонки датасета, используемой в расчетной колонке, никакое системное предупреждение не выводится.