Значения для расчетной колонки рассчитываются по заданному пользовательскому алгоритму.
Чтобы добавить в датасет расчетную колонку, кликните на кнопку в строке «Расчетные колонки» над списком колонок. По клику кнопки открывается страница настройки расчетной колонки.
Страница состоит из полей и элементов, сверху вниз, слева направо:
Блоки «Переменные», «Формула», «Датасет», «Превью» позволяют взаимозависимо изменять свои размеры. Чтобы изменить размер блока, зажмите и перетащите мышью вертикальную или горизонтальную границу между блоками. |
Тип данных должен соответствовать типу данных, который возвращает формула расчета, для корректного отображения и использования рассчитанных значений.
Для расчетной колонки на странице настройки датасета, в настройках колонки, поле «Тип данных» недоступно для редактирования. Тип данных можно задать только на странице настройки расчетной колонки. |
Переменные создаются из колонок датасета и позволяют обращаться к значениям в колонке. Так, через переменную District из колонки «Федеральный округ» для каждой строки расчетной колонки будет получено значение из соответствующей строки колонки «Федеральный округ».
Чтобы создать переменную, зажмите и перетащите мышью колонку датасета из блока «Датасет» в блок «Переменные». После перетаскивания блок «Переменные» автоматически переключается в режим редактирования. Чтобы включить режим редактирования вручную, кликните в блоке кнопку «Редактировать».
В режиме редактирования вы можете задать имя переменной, следуя указанным в подсказке ограничениям, а также метод агрегации данных.
Чтобы удалить переменную, кликните для соответствующей переменной кнопку .
Обратите внимание, что формула расчетной колонки позволяет также объявлять переменные дополнительно к тем, которые созданы из колонок датасета. Идентификаторы объявляемых переменных не должны совпадать с идентификаторами переменных, заданных в блоке «Переменные». |
Блок «Формула» предназначен для написания алгоритма расчета на языке 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»:
При удалении колонки датасета, используемой в расчетной колонке, никакое системное предупреждение не выводится.