Общие сведения
Функциональность добавления колонки в датасет позволяет:
Чтобы добавить колонку, нажмите в блоке настройки колонок датасета кнопку «». По клику кнопки открывается окно «Добавление колонки» для выбора типа добавляемой колонки.
Функциональность добавления колонки доступна только для объединенного датасета, который создан на основе одного SQL-датасета из локального хранилища или одной таблицы из внешнего хранилища. Во всех остальных случаях – когда объединенный датасет создан на основе любого другого датасета (не SQL-датасета) из локального хранилища, или двух и более SQL-датасетов из локального хранилища, или двух и более таблиц из внешнего хранилища – добавление колонки приводит к некорректной работе объединенного датасета: данные не отображаются при просмотре такого датасета, а его использование в виджетах приводит к некорректным результатам. |
Чтобы добавить в датасет колонку, кликните на шаге выбора типа колонки «Локальная колонка». По клику кнопки открывается окно добавления колонки.
Окно добавления колонки состоит из следующих полей.
Если выбран неподходящий тип данных, значения в добавленной колонке отображаются некорректно или не отображаются.
|
Значения для расчетной колонки рассчитываются по заданному пользовательскому алгоритму.
Чтобы добавить в датасет расчетную колонку, кликните на шаге выбора типа колонки «Расчетная колонка». По клику кнопки открывается страница настройки расчетной колонки.
Страница состоит из полей и элементов, сверху вниз, слева направо:
Блоки «Переменные», «Формула», «Датасет», «Превью» позволяют взаимозависимо изменять свои размеры. Чтобы изменить размер блока, зажмите и перетащите мышью вертикальную или горизонтальную границу между блоками. |
Тип данных должен соответствовать типу данных, который возвращает формула расчета, для корректного отображения и использования рассчитанных значений.
Для расчетной колонки, на странице настройки датасета, в настройках колонки, поле «Тип данных» недоступно для редактирования. Тип данных можно задать только на странице настройки расчетной колонки. |
Переменные создаются из колонок датасета и позволяют обращаться к значениям в колонке. Так, через переменную City из колонки «Городское», для каждой строки расчетной колонки будет получено значение из соответствующей строки колонки «Городское».
Чтобы создать переменную, зажмите и перетащите мышью колонку датасета из блока «Датасет» в блок «Переменные». После перетаскивания блок «Переменные» автоматически переключается в режим редактирования. Чтобы включить режим редактирования вручную, кликните в блоке кнопку «Редактировать».
В режиме редактирования вы можете задать имя переменной, следуя указанным в подсказке ограничениям, а также метод агрегации перед расчетом.
Агрегация перед расчетом применяется только в специальных условиях, о которых сказано в соответствующем разделе. В примере выше метод агрегации SUM, заданный для переменной City, не применяется перед расчетом. |
Чтобы удалить переменную, кликните для соответствующей переменной кнопку «».
Обратите внимание, что формула расчетной колонки позволяет также объявлять переменные дополнительно к тем, которые созданы из колонок датасета. Идентификаторы объявляемых переменных не должны совпадать с идентификаторами переменных, заданных в блоке «Переменные». |
Блок «Формула» предназначен для написания алгоритма расчета на языке Python. Ключевое слово return используется для передачи значения в расчетную колонку.
Чтобы получить результат расчета, напишите алгоритм и кликните в блоке кнопку «Рассчитать».
|
—
В следующем примере используются дополнительные переменные, объявленные в блоке.
По клику кнопки «Рассчитать» в блоке превью отображается расчетная колонка с результатом расчета, а также колонки, которые вынесены в блок «Переменные», независимо от того, используются ли они в алгоритме расчета. Это может быть использовано для удобства предпросмотра.
Сообщения об ошибках в настройке расчетной колонки или при сохранении отображаются во всплывающем блоке. Блок отображается на странице до его закрытия.
Параметр управляет записью результата расчета в датасет.
Когда параметр включен, результат расчета записывается в датасет и такая расчетная колонка:
Когда параметр выключен, результат расчета НЕ записывается в датасет, а запрашивается во время обращения к данным датасета и такая расчетная колонка:
Для расчетной колонки, сохраненной с включенным параметром, на странице настройки датасета в блоке колонок, отображается пиктограмма «». Для расчетной колонки с выключенным параметром – пиктограмма «
».
|
Применение агрегации перед расчетом позволяет рассчитывать значения для любого уровня детализации. Без применения агрегации расчет выполняется построчно.
Чтобы расчетная колонка применяла агрегацию перед расчетом, требуется совместное выполнение условий:
Агрегация перед расчетом НЕ применяется в любом плоском представлении данных:
Пусть есть набор данных:
Колонка 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».
При удалении колонки датасета, используемой в расчетной колонке, никакое системное предупреждение не выводится.