# Kibana визуализация суммы часов

**URL:** <https://discuss.elastic.co/t/kibana/262041>\
**Category:** Вопросы на русском языке\
**Created:** [January 24, 2021, 6:22pm UTC](https://discuss.elastic.co/t/kibana/262041 "2021-01-24T18:22:48Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![artem33region](https://avatars.discourse-cdn.com/v4/letter/a/f07891/32.png) [@artem33region](https://discuss.elastic.co/u/artem33region)\
**Post date:** [January 24, 2021, 6:22pm UTC](https://discuss.elastic.co/t/kibana/262041/1 "2021-01-24T18:22:49Z")

</div>

Всем привет! Есть задача, считать сумму времени.  
Например, есть поле содержащее время, изначально время в формате UNIX.  
Нужно чтобы была визуализация, на которой будет показанна сумма времени полей за определённое время. Что-то я даже не могу представить как это реализовать? Есть ли в визуализациях Kibana такой функционал или нужно что-то своё писать?

---

<div class="post-metadata">

**Author:** ![Igor\_Motov](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/igor_motov/32/45193_2.png) [@Igor\_Motov](https://discuss.elastic.co/u/Igor_Motov)\
**Post date:** [January 25, 2021, 2:50pm UTC](https://discuss.elastic.co/t/kibana/262041/2 "2021-01-25T14:50:28Z")

</div>

> [@artem33region](#):
>
> есть поле содержащее время, изначально время в формате UNIX.

т.е. количество миллисекунд прошедших с 1-го января 1970г?

> [@artem33region](#):
>
> Нужно чтобы была визуализация, на которой будет показанна сумма времени полей за определённое время.

То есть сумма количества часов прошедшее с 1-го января 1970г по нескольким полям? Что это будет представлять?

---

<div class="post-metadata">

**Author:** ![artem33region](https://avatars.discourse-cdn.com/v4/letter/a/f07891/32.png) [@artem33region](https://discuss.elastic.co/u/artem33region)\
**Post date:** [January 25, 2021, 4:47pm UTC](https://discuss.elastic.co/t/kibana/262041/3 "2021-01-25T16:47:16Z")

</div>

> [@Igor\_Motov](#):
>
> т.е. количество миллисекунд прошедших с 1-го января 1970г?

Да.

> [@Igor\_Motov](#):
>
> То есть сумма количества часов прошедшее с 1-го января 1970г по нескольким полям? Что это будет представлять?

Есть логи, в кажном сообщение есть поле "Duration" продолжительность разговора, еще в сообщении есть поле "User name", нужно суммарную продолжительность разговора данного пользователя или например несколькох пользователей за определенное время.  
Впринципе как это будет выглядеть не важно, самая простая визуализация.

То есть, например, чтобы увидить сумму сколько Вася Пупкин поговорил по телефону за 1 или несколько дней.

---

<div class="post-metadata">

**Author:** ![Igor\_Motov](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/igor_motov/32/45193_2.png) [@Igor\_Motov](https://discuss.elastic.co/u/Igor_Motov)\
**Post date:** [January 25, 2021, 4:49pm UTC](https://discuss.elastic.co/t/kibana/262041/4 "2021-01-25T16:49:28Z")

</div>

Duration в чем измеряется? И в чем визуализировать надо?

---

<div class="post-metadata">

**Author:** ![artem33region](https://avatars.discourse-cdn.com/v4/letter/a/f07891/32.png) [@artem33region](https://discuss.elastic.co/u/artem33region)\
**Post date:** [January 25, 2021, 6:23pm UTC](https://discuss.elastic.co/t/kibana/262041/5 "2021-01-25T18:23:45Z")

</div>

> [@Igor\_Motov](#):
>
> Duration в чем измеряется?

Миллисекунды

> [@Igor\_Motov](#):
>
> И в чем визуализировать надо?

В кибане.

---

<div class="post-metadata">

**Author:** ![Igor\_Motov](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/igor_motov/32/45193_2.png) [@Igor\_Motov](https://discuss.elastic.co/u/Igor_Motov)\
**Post date:** [January 25, 2021, 6:30pm UTC](https://discuss.elastic.co/t/kibana/262041/6 "2021-01-25T18:30:51Z")

</div>

Я все-равно не понимаю, в чем проблема. Помечаем поле как [duration](https://www.elastic.co/guide/en/kibana/current/field-formatters-numeric.html) (через Меню \> Stack Management \> Index Patterns). Потом добавляем его как Metrics с типом Sum в любую визуализацию.

---

<div class="post-metadata">

**Author:** ![artem33region](https://avatars.discourse-cdn.com/v4/letter/a/f07891/32.png) [@artem33region](https://discuss.elastic.co/u/artem33region)\
**Post date:** [January 25, 2021, 6:32pm UTC](https://discuss.elastic.co/t/kibana/262041/7 "2021-01-25T18:32:33Z")

</div>

> [@Igor\_Motov](#):
>
> Помечаем поле как [duration](https://www.elastic.co/guide/en/kibana/current/field-formatters-numeric.html) (через Меню \> Stack Management \> Index Patterns). Потом добавляем его как Metrics с типом Sum в любую визуализацию.

Вот этого не знал, не было еще пока задачи такое делать. То есть не нужно для этого делать отдельный индекс, просто в шаблоне тип поля сделать?

---

<div class="post-metadata">

**Author:** ![Igor\_Motov](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/igor_motov/32/45193_2.png) [@Igor\_Motov](https://discuss.elastic.co/u/Igor_Motov)\
**Post date:** [January 25, 2021, 6:37pm UTC](https://discuss.elastic.co/t/kibana/262041/8 "2021-01-25T18:37:12Z")

</div>

Если у вас уже продолжительность звонка в записи лежит - то не нужно делать отдельный индекс, просто дать знать кибане с какими данными надо работать.

Если время начала звонка хранится в одной записи, а время окончание - в другой, или что-то в этом роде - то тут надо смотреть, что конкретно где лежит и как.

---

<div class="post-metadata">

**Author:** ![artem33region](https://avatars.discourse-cdn.com/v4/letter/a/f07891/32.png) [@artem33region](https://discuss.elastic.co/u/artem33region)\
**Post date:** [January 25, 2021, 6:38pm UTC](https://discuss.elastic.co/t/kibana/262041/9 "2021-01-25T18:38:28Z")

</div>

> [@Igor\_Motov](#):
>
> Если время начала звонка хранится в одной записи, а время окончание - в другой, или что-то в этом роде - то тут надо смотреть, что конкретно где лежит и как.

Нет, просто в каждом сообщении есть поля с временем, вот их нужно суммировать.

---

<div class="post-metadata">

**Author:** ![artem33region](https://avatars.discourse-cdn.com/v4/letter/a/f07891/32.png) [@artem33region](https://discuss.elastic.co/u/artem33region)\
**Post date:** [January 25, 2021, 6:43pm UTC](https://discuss.elastic.co/t/kibana/262041/10 "2021-01-25T18:43:34Z")

</div>

Что-то нет типа duration

 ![image](https://us1.discourse-cdn.com/elastic/original/3X/4/4/4427f27f1d7c0280e1af49e3af78343eab510646.png)

---

<div class="post-metadata">

**Author:** ![Igor\_Motov](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/igor_motov/32/45193_2.png) [@Igor\_Motov](https://discuss.elastic.co/u/Igor_Motov)\
**Post date:** [January 25, 2021, 6:47pm UTC](https://discuss.elastic.co/t/kibana/262041/11 "2021-01-25T18:47:29Z")

</div>

У вас это поле проиндексировано как string.

---

<div class="post-metadata">

**Author:** ![artem33region](https://avatars.discourse-cdn.com/v4/letter/a/f07891/32.png) [@artem33region](https://discuss.elastic.co/u/artem33region)\
**Post date:** [January 25, 2021, 6:48pm UTC](https://discuss.elastic.co/t/kibana/262041/12 "2021-01-25T18:48:31Z")

</div>

> [@Igor\_Motov](#):
>
> У вас это поле проиндексировано как string.

То есть нужно индексировать в logstash или шаблон переделывать?

---

<div class="post-metadata">

**Author:** ![Igor\_Motov](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/igor_motov/32/45193_2.png) [@Igor\_Motov](https://discuss.elastic.co/u/Igor_Motov)\
**Post date:** [January 25, 2021, 6:50pm UTC](https://discuss.elastic.co/t/kibana/262041/13 "2021-01-25T18:50:39Z")

</div>

Надо изменить маппинг (в шаблоне если шаблон используется) и переиндексировать индекс.

---

<div class="post-metadata">

**Author:** ![artem33region](https://avatars.discourse-cdn.com/v4/letter/a/f07891/32.png) [@artem33region](https://discuss.elastic.co/u/artem33region)\
**Post date:** [January 25, 2021, 7:14pm UTC](https://discuss.elastic.co/t/kibana/262041/14 "2021-01-25T19:14:02Z")

</div>

> [@Igor\_Motov](#):
>
> (в шаблоне если шаблон используется)

Если шаблона нет, то его нужно создать?

---

<div class="post-metadata">

**Author:** ![Igor\_Motov](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/igor_motov/32/45193_2.png) [@Igor\_Motov](https://discuss.elastic.co/u/Igor_Motov)\
**Post date:** [January 25, 2021, 7:30pm UTC](https://discuss.elastic.co/t/kibana/262041/15 "2021-01-25T19:30:52Z")

</div>

Я не знаю структуру вашей системы. Конечный результат - должен быть long или integer как тип для этого поля. Это можно сделать многими способами - например, через шаблон, заданием маппинга перед началом индексации, либо динамически - индексацией значения с правильным типом (то есть `42` а не `"42"`) и т.д.

---

<div class="post-metadata">

**Author:** ![artem33region](https://avatars.discourse-cdn.com/v4/letter/a/f07891/32.png) [@artem33region](https://discuss.elastic.co/u/artem33region)\
**Post date:** [January 25, 2021, 7:40pm UTC](https://discuss.elastic.co/t/kibana/262041/16 "2021-01-25T19:40:19Z")

</div>

Изменил mapping в шаблоне для поля "Acct\_Session\_Time", сделал его "integer"

```auto
  "properties": {
    "@timestamp": {
      "type": "date"
    },
    "geoip": {
      "dynamic": true,
      "properties": {
        "ip": {
          "type": "ip"
        },
        "latitude": {
          "type": "half_float"
        },
        "location": {
          "type": "geo_point"
        },
        "longitude": {
          "type": "half_float"
        }
      }
    },
    "@version": {
      "type": "keyword"
    },
    "Acct_Session_Time": {
      "type": "integer"
    }
  }
}

```

После нужно сделать "Refresh field list"?

---

<div class="post-metadata">

**Author:** ![Igor\_Motov](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/igor_motov/32/45193_2.png) [@Igor\_Motov](https://discuss.elastic.co/u/Igor_Motov)\
**Post date:** [January 25, 2021, 7:42pm UTC](https://discuss.elastic.co/t/kibana/262041/17 "2021-01-25T19:42:03Z")

</div>

Надо сделать новый индекс.

---

<div class="post-metadata">

**Author:** ![artem33region](https://avatars.discourse-cdn.com/v4/letter/a/f07891/32.png) [@artem33region](https://discuss.elastic.co/u/artem33region)\
**Post date:** [January 25, 2021, 7:59pm UTC](https://discuss.elastic.co/t/kibana/262041/18 "2021-01-25T19:59:48Z")

</div>

> [@Igor\_Motov](#):
>
> Надо сделать новый индекс.

Сделал, всё хорошо, теперь "duration" есть, но вот только как теперь сделать, чтобы формат был, наример HH:MM:SS? Такой формат необходим в визуализации.

---

<div class="post-metadata">

**Author:** ![Igor\_Motov](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/igor_motov/32/45193_2.png) [@Igor\_Motov](https://discuss.elastic.co/u/Igor_Motov)\
**Post date:** [January 25, 2021, 8:11pm UTC](https://discuss.elastic.co/t/kibana/262041/19 "2021-01-25T20:11:52Z")

</div>

> [@artem33region](#):
>
> чтобы формат был, наример HH:MM:SS?

С этого и надо было начинать. В этом случае, миллисекунды надо в секунды в этом поле переводить либо при индексации, либо через [scripted field](https://www.elastic.co/guide/en/kibana/current/scripted-fields.html) и использовать numeric тип с форматом `'00:00:00'`.

---

<div class="post-metadata">

**Author:** ![artem33region](https://avatars.discourse-cdn.com/v4/letter/a/f07891/32.png) [@artem33region](https://discuss.elastic.co/u/artem33region)\
**Post date:** [January 25, 2021, 8:19pm UTC](https://discuss.elastic.co/t/kibana/262041/20 "2021-01-25T20:19:19Z")

</div>

А как тогда сумму выводить в визуализации? Тип sum уже не работает.

PS: всё работает!  
Спасибо большое!!!!

[Next page](https://discuss.elastic.co/t/kibana/262041.md?page=2)
