Изменение отображения в выражении

Автор Patrick1968, декабря 17, 2020, 04:57:35 pm

« предыдущая - следующая »

Patrick1968

Добрый день.
Подскажите, пожалуйста, можно ли в диаграмме изменить отображение значения выражения, например есть у меня в диаграмме выражение "Длительность события" (изначально представлено в секундах), в выражении прописал =SUM([Длительность события]), для применения фильтров и т.д. Итоговое значение может быть достаточно большим, и мне на диаграмме хотелось бы видеть следующий формат DD дней hh:mm:ss, можно ли этого добиться. Спасибо.

Uunit

декабря 18, 2020, 01:09:21 pm #1 Последнее редактирование: декабря 18, 2020, 01:13:08 pm от Uunit
Можно всё ;D  ;D
Насколько я понимаю, у вас целые числа.
Чтобы отобразить время, вам нужно преобразовать ваше значение в дробную часть.
При загрузке данных нужно следующее:
Time([Длительность события]/86400) as [Длительность события]
Если [Длительность события] изначально выражена в секундах, то делим число на 86400
Если [Длительность события] изначально выражена в минутах, то делим на 1440.


Patrick1968

В данном случае показываются только представление в виде ЧЧ:ММ:СС - это подходит, когда итоговая длительность события менее суток, а когда более, тут либо часовую составляющую как-то показывать более 24 часов, либо как-то формировать выходную строку типа "5 дней 22:45:15" - вот только как это сделать?

Uunit

Целая часть числа, это дни, а дробная, это время.
Значит нужно разделить их на две части.
Чтобы не мучатся с "Дней", "День", "Дня", будем использовать просто "д.".
Но чтобы всё не было слитно, добавляем пробелы " д. ".
Осталось преобразовать дробную часть во время, используя функцию Time().
Итого получаем:
=Floor(SUM([Длительность события])) &' д. '&Time(Frac(SUM([Длительность события])))

Patrick1968

В выражении такая конструкция работать не хочет - видимо по как символьная строка
даже вот такая
=Floor(Sum(
{1<
[Филиал]={"$(= if(getselectedcount([Филиал])=1, getfieldselections([Филиал]), '*'))"},
[Год]={"$(= if(getselectedcount([Год])=1, getfieldselections([Год]), '*'))"}
>}
Time([Длительность сек.]/86400)))
 &
 ' д. '

а без

 &
 ' д. '
отображает график

Uunit

формула рабочая, значит что то не так делаете. проверил перд тем как написать.
подскажите, вы используете sense или view?

Patrick1968


Uunit

В диаграмме создаём два выражение:
1) Используете свою изначальную формулу.
2) Во втором выражение используем =Floor(SUM([Длительность события])) &' д. '&Time(Frac(SUM([Длительность события])))

Первое выражение будет создавать нам график. Его не трогаем.
Во втором выражение, необходимо УБРАТЬ галочку с "Полоска","Символ" и"Линии" (Если не убрать, выражение работать не будет), а так же ПОСТАВИТЬ галочку на "Значение на точках графика".

Итог:
Первые выражение строит график, а второе выводит нужный нам текст.

Uunit

Ах да, этот вариант не сработает, если у вас несколько линий/полосок на одной диаграмме.
надписи будут выходить на последней по счёту линии/полоске.

Может есть какие то ещё варианты и это я такой ламер  ;D

Яндекс.Метрика