26.08.2020
Шаг №1: Создаем строковый параметр
Настройки для параметра следующие:
Чтобы изменить эти значения, нам нужно построить вычисляемые поля, которые могут изменить значения этого параметра.
Шаг № 2: Построим вычисляемые поля для анализа отдельных значений
Чтобы проанализировать эти значения, мы будем использовать вычисление SPLIT (), а также вычисление INT () и ROUND ().
Вот три вычисляемых поля:
// value 1
ROUND(FLOAT(SPLIT([string param], «,», 1)),0)/300
// value 2
ROUND(FLOAT(SPLIT([string param], «,», 2)),0)/300
// value 3
ROUND(FLOAT(SPLIT([string param], «,», 3)),0)/300
Как можно увидеть, что в каждом вычисляемом поле мы разделяем значение, затем преобразуем значение в целое число, а затем округляем значение. Нам нужен ROUND, потому что в 99% случаев преобразование работает нормально, но иногда что-то идет не так, и нам нужно контролировать, когда появится потенциальное десятичное значение.
Шаг № 3: Создаем три отдельных листа, каждый со своим собственным значением (value 1, value 2, value 3) на карточке текста на каждом отдельном листе
Это очень простой шаг. Нужно убедиться, что форматирование одинаково для всех листов.
Ниже представлен скриншот экрана с рабочим листом для [value 1] . Обязательно проделайте то же самое для [value 2] и [value 3] .
Шаг №4: Создаем вычисляемое поле для добавления значений из нашего параметра
Для наших дополнительных вычислений мы собираемся добавить две единицы к одному из значений параметра и вычесть одну единицу из каждого из двух других значений.
Вот вычисляемое поле для value 1 в строковом параметре (мы назовем вычисляемое поле [+ v1] )
// +v1
IF [value1] = 1
THEN [string param]
ELSEIF INT([value1]*300) = 299 AND [value2] != 0
THEN STR(ROUND([value1]*300,0) + 1) + «,» +
STR(ROUND([value2]*300,0) — 1) + «,» +
STR(ROUND([value3]*300,0))
ELSEIF INT([value1]*300) = 299 AND [value2] == 0
THEN STR(ROUND([value1]*300,0) + 1) + «,» +
STR(ROUND([value2]*300,0)) + «,» +
STR(ROUND([value3]*300,0) — 1)
ELSE STR(ROUND([value1]*300,0) + 2) + «,» +
STR(ROUND([value2]*300,0) — 1) + «,» +
STR(ROUND([value3]*300,0) — 1)
END
Вот вычисляемое поле для value 2 ( [+ v2] ):
// +v2
IF [value2] = 1
THEN [string param]
ELSEIF INT([value2]*300) = 299 AND [value3] != 0
THEN STR(ROUND([value1]*300,0)) + «,» +
STR(ROUND([value2]*300,0) + 1) + «,» +
STR(ROUND([value3]*300,0) — 1)
ELSEIF INT([value2]*300) = 299 AND [value3] == 0
THEN STR(ROUND([value1]*300,0) — 1) + «,» +
STR(ROUND([value2]*300,0) + 1) + «,» +
STR(ROUND([value3]*300,0))
ELSE STR(ROUND([value1]*300,0) — 1) + «,» +
STR(ROUND([value2]*300,0) + 2) + «,» +
STR(ROUND([value3]*300,0) — 1)
END
И вычисляемое поле для value 3 ( [+ v3] ):
// +v3
IF [value3] = 1
THEN [string param]
ELSEIF INT([value3]*300) = 299 AND [value1] != 0
THEN STR(ROUND([value1]*300,0) — 1) + «,» +
STR(ROUND([value2]*300,0)) + «,» +
STR(ROUND([value3]*300,0) + 1)
ELSEIF INT([value3]*300) = 299 AND [value1] == 0
THEN STR(ROUND([value1]*300,0)) + «,» +
STR(ROUND([value2]*300,0) — 1) + «,» +
STR(ROUND([value3]*300,0) + 1)
ELSE STR(ROUND([value1]*300,0) — 1) + «,» +
STR(ROUND([value2]*300,0) — 1) + «,» +
STR(ROUND([value3]*300,0) + 2)
END
Шаг № 5: Создаем три рабочих листа со знаком «+» и добавим по одному из вышеперечисленных вычисляемых полей на каждый рабочий лист.
Создаем три отдельных рабочих листа со знаком «+» на карточке text каждого листа. Перетаскиваем вычисляемое поле [+v1] на карточку detail. Вот рабочий лист со знаком “+” для value 1:
Повторите это для второго и третьего рабочих листов со знаком «+».
Шаг № 6: Создаем вычисляемое поле для вычитания значений из нашего базового параметра
Нам необходимо произвести противоположные вычисления которые мы производили ранее в шаге № 4, где мы сосредоточены на вычитании из определенного значения. Эти вычисляемые поля назовем [-v1] , [-v2] и [-v3] .
Вот вычисляемое поле для вычитания из value 1.
// -v1
IF [value1] = 0
THEN [string param]
ELSEIF INT([value1]*300) = 1 AND [value2] != 0
THEN STR(ROUND([value1]*300,0) — 1) + «,» +
STR(ROUND([value2]*300,0) + 1) + «,» +
STR(ROUND([value3]*300,0))
ELSEIF INT([value1]*300) = 1 AND [value2] == 0
THEN STR(ROUND([value1]*300,0) — 1) + «,» +
STR(ROUND([value2]*300,0)) + «,» +
STR(ROUND([value3]*300,0) + 1)
ELSE STR(ROUND([value1]*300,0) — 2) + «,» +
STR(ROUND([value2]*300,0) + 1) + «,» +
STR(ROUND([value3]*300,0) + 1)
END
И вычисляемые поля для value 2 и value 3:
// -v2
IF [value2] = 0
THEN [string param]
ELSEIF INT([value2]*300) = 1 AND [value3] != 0
THEN STR(ROUND([value1]*300,0)) + «,» +
STR(ROUND([value2]*300,0) — 1) + «,» +
STR(ROUND([value3]*300,0) + 1)
ELSEIF INT([value2]*300) = 1 AND [value3] == 0
THEN STR(ROUND([value1]*300,0) + 1) + «,» +
STR(ROUND([value2]*300,0) — 1) + «,» +
STR(ROUND([value3]*300,0))
ELSE STR(ROUND([value1]*300,0) + 1) + «,» +
STR(ROUND([value2]*300,0) — 2) + «,» +
STR(ROUND([value3]*300,0) + 1)
END
// -v3
IF [value3] = 0
THEN [string param]
ELSEIF INT([value3]*300) = 1 AND [value1] != 0
THEN STR(ROUND([value1]*300,0) + 1) + «,» +
STR(ROUND([value2]*300,0)) + «,» +
STR(ROUND([value3]*300,0) — 1)
ELSEIF INT([value3]*300) = 1 AND [value1] == 0
THEN STR(ROUND([value1]*300,0)) + «,» +
STR(ROUND([value2]*300,0) + 1) + «,» +
STR(ROUND([value3]*300,0) — 1)
ELSE STR(ROUND([value1]*300,0) + 1) + «,» +
STR(ROUND([value2]*300,0) + 1) + «,» +
STR(ROUND([value3]*300,0) — 2)
END
Шаг № 7: Создаем три рабочих листа с знаком «-» и добавим по одному из вышеперечисленных вычисляемых полей на каждый рабочий лист.
Как и в шаге № 5, создаем три листа, на которых стоит знак «-». Далее добавим отдельные вычисляемые поля на каждый из рабочих листов, чтобы вычисляемые поля [-v1] , [-v2] и [-v3] были подробно описаны на отдельных рабочих листах. Ниже показано, как будет выглядеть лист для value 1. Повторим это для value 2 и value 3.
Шаг № 8: Создаем визуализации, которые будут использовать связанные вычисляемые поля ([value 1], [value 2] и [value 3]).
Для этого примера была построена очень простая гистограмма, показывающая значения (value 1, value 2, value 3)
Шаг № 9: Создаем дашборд.
Для интерактивных параметров необходимо добавить три горизонтальных контейнера внутри вертикального контейнера. Внутри горизонтальных контейнеров нужно добавить рабочий лист — «-», рабочий лист — «+» и лист со значением. Убедитесь, что все они соответствуют одинаковым значениям (value 1, value 2, value 3). рекомендуем установить высоту горизонтального контейнера на 50 пикселей и ширину рабочих листов «-» и «+» также на 50 пикселей.
Шаг № 10: Создаем экшен с параметрами на листы «+» и «-», чтобы изменить наш базовый параметр.
После добавления рабочих листов добавим экшен на дашборд. Создаем экшен параметра для листа, которое соответствует вычисляемому полю [+ v1] — на карточке detail.
Настроим экшен следующим образом:
Повторим эти действия для каждого из листов «+» и «-», которые включают [+ v2] , [+ v3] , [-v1] , [-v2] и [-v3] . Всего у нас будет шесть отдельных экшенов.
Шаг № 11: Добавим экшен фильтра к каждому листу «+» и «-», чтобы автоматически отменить выбор листа после клика
Это один из простых приемов автоматического снятия выделения с текста. Чтобы отменить выбор листов, нам нужно создать отдельные экшены фильтра для каждого листа, то есть 6 экшен фильтров в нашем случае.
Сначала создадим два вычисляемых поля. Один назовем [TRUE] со значением, TRUE а другой — вычислением [FALSE] со значением FALSE. Добавим эти вычисляемые поля к каждой визуализации.
Вот пример для рабочего листа [-v3] на дашборде связанных параметров. Создадим экшен фильтра. Выберем рабочий лист для [-v3] . Установим следующие настройки:
Итак, у нас получился параметр, который обновляет три значения (value 1, value 2, value 3) одним кликом мыши. Этот параметр связывает три отдельных значения, поэтому при увеличении одного значения два других уменьшаются.