# Vega - show Gantt

**URL:** <https://discuss.elastic.co/t/vega-show-gantt/280212>\
**Category:** Kibana\
**Tags:** vega\
**Created:** [August 2, 2021, 11:03am UTC](https://discuss.elastic.co/t/vega-show-gantt/280212 "2021-08-02T11:03:55Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![Guy\_Levinhr](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/guy_levinhr/32/92427_2.png) [@Guy\_Levinhr](https://discuss.elastic.co/u/Guy_Levinhr)\
**Post date:** [August 2, 2021, 11:03am UTC](https://discuss.elastic.co/t/vega-show-gantt/280212/1 "2021-08-02T11:03:55Z")

</div>

Hii,

I have index with data and I want to show the data as Gantt.

The data contains :  
session\_id - Unique Id for the session  
date\_created/time - When the session start (same for all the rows of the session)  
Phase\_type - Phase\_type  
name - phase name  
start\_time\_ms - time as millisecond for date\_created  
end\_time\_ms - time as millisecond for date\_created  
duration\_ms - phase duration as millisecond (end\_time\_ms - start\_time\_ms)

As you can see there is three Phase\_type:  
1.platform - its contains the time of all the phases  
2. phase - its part of the platform and have start and end time  
3. milestone - its Point in time of the platform and the start\_time = end\_time (duration is 0)

I need to build tow gantt:  
1. show gantt of one session.  
2. show gantt of average of all session (time of each phase will be the avg of start\_time,end\_tme from all sessions).

I tried to do it in Vega, But I did not succeed ☹

I would love to get help on the subject

link to [google sheet](https://docs.google.com/spreadsheets/d/1-CADWWfX_wUyyqGApZ8B0Lfx6ppUwReRsbatboj2E-E/edit?usp=sharing) of the data

 ![Screen Shot 2021-08-02 at 13.54.15](https://us1.discourse-cdn.com/elastic/original/3X/2/3/23250e68bad2542c77094a850bd44197e24e0d75.png)

Code to create the Index:

```auto
import ssl
from elasticsearch import Elasticsearch, helpers
from elasticsearch.connection import create_ssl_context

jsn = [
  {
    "Time": "18/07/2021 11:34:56",
    "session_id": 123,
    "date_created": "Jul 18, 2021 @ 11:34:56.000",
    "Phase_type": "platform",
    "name": "platform",
    "start_time_ms": 94,
    "end_time_ms": 2660,
    "duration_ms": 2565
  },
  {
    "Time": "18/07/2021 11:34:56",
    "session_id": 123,
    "date_created": "Jul 18, 2021 @ 11:34:56.000",
    "Phase_type": "phase",
    "name": "dom_ready",
    "start_time_ms": 689,
    "end_time_ms": 1224,
    "duration_ms": 540
  },
  {
    "Time": "18/07/2021 11:34:56",
    "session_id": 123,
    "date_created": "Jul 18, 2021 @ 11:34:56.000",
    "Phase_type": "phase",
    "name": "component_loader",
    "start_time_ms": 690,
    "end_time_ms": 710,
    "duration_ms": 19
  },
  {
    "Time": "18/07/2021 11:34:56",
    "session_id": 123,
    "date_created": "Jul 18, 2021 @ 11:34:56.000",
    "Phase_type": "phase",
    "name": "load_environment",
    "start_time_ms": 691,
    "end_time_ms": 705,
    "duration_ms": 14
  },
  {
    "Time": "18/07/2021 11:34:56",
    "session_id": 123,
    "date_created": "Jul 18, 2021 @ 11:34:56.000",
    "Phase_type": "phase",
    "name": "load_renderer",
    "start_time_ms": 706,
    "end_time_ms": 1073,
    "duration_ms": 367
  },
  {
    "Time": "18/07/2021 11:34:56",
    "session_id": 123,
    "date_created": "Jul 18, 2021 @ 11:34:56.000",
    "Phase_type": "phase",
    "name": "client",
    "start_time_ms": 1074,
    "end_time_ms": 2451,
    "duration_ms": 1376
  },
  {
    "Time": "18/07/2021 11:34:56",
    "session_id": 123,
    "date_created": "Jul 18, 2021 @ 11:34:56.000",
    "Phase_type": "phase",
    "name": "init_page",
    "start_time_ms": 1195,
    "end_time_ms": 2441,
    "duration_ms": 1246
  },
  {
    "Time": "18/07/2021 11:34:56",
    "session_id": 123,
    "date_created": "Jul 18, 2021 @ 11:34:56.000",
    "Phase_type": "phase",
    "name": "client_render",
    "start_time_ms": 2458,
    "end_time_ms": 2617,
    "duration_ms": 160
  },
  {
    "Time": "18/07/2021 11:34:56",
    "session_id": 123,
    "date_created": "Jul 18, 2021 @ 11:34:56.000",
    "Phase_type": "milestone",
    "name": "hidden",
    "start_time_ms": 3736,
    "end_time_ms": 3736,
    "duration_ms": 0
  },
  {
    "Time": "18/07/2021 11:34:56",
    "session_id": 123,
    "date_created": "Jul 18, 2021 @ 11:34:56.000",
    "Phase_type": "milestone",
    "name": "visible",
    "start_time_ms": 1578,
    "end_time_ms": 1578,
    "duration_ms": 0
  },
  {
    "Time": "18/07/2021 11:35:42",
    "session_id": 456,
    "date_created": "Jul 18, 2021 @ 11:34:58.000",
    "Phase_type": "platform",
    "name": "platform",
    "start_time_ms": 790,
    "end_time_ms": 2009,
    "duration_ms": 1221
  },
  {
    "Time": "18/07/2021 11:35:42",
    "session_id": 456,
    "date_created": "Jul 18, 2021 @ 11:34:58.000",
    "Phase_type": "phase",
    "name": "dom_ready",
    "start_time_ms": 1718,
    "end_time_ms": 1864,
    "duration_ms": 147
  },
  {
    "Time": "18/07/2021 11:35:42",
    "session_id": 456,
    "date_created": "Jul 18, 2021 @ 11:34:58.000",
    "Phase_type": "phase",
    "name": "component_loader",
    "start_time_ms": 1718,
    "end_time_ms": 1724,
    "duration_ms": 6
  },
  {
    "Time": "18/07/2021 11:35:42",
    "session_id": 456,
    "date_created": "Jul 18, 2021 @ 11:34:58.000",
    "Phase_type": "phase",
    "name": "load_environment",
    "start_time_ms": 1718,
    "end_time_ms": 1723,
    "duration_ms": 4
  },
  {
    "Time": "18/07/2021 11:35:42",
    "session_id": 456,
    "date_created": "Jul 18, 2021 @ 11:34:58.000",
    "Phase_type": "phase",
    "name": "load_renderer",
    "start_time_ms": 1723,
    "end_time_ms": 1838,
    "duration_ms": 115
  },
  {
    "Time": "18/07/2021 11:35:42",
    "session_id": 456,
    "date_created": "Jul 18, 2021 @ 11:34:58.000",
    "Phase_type": "phase",
    "name": "client",
    "start_time_ms": 1838,
    "end_time_ms": 1982,
    "duration_ms": 144
  },
  {
    "Time": "18/07/2021 11:35:42",
    "session_id": 456,
    "date_created": "Jul 18, 2021 @ 11:34:58.000",
    "Phase_type": "phase",
    "name": "init_page",
    "start_time_ms": 1859,
    "end_time_ms": 1979,
    "duration_ms": 119
  },
  {
    "Time": "18/07/2021 11:35:42",
    "session_id": 456,
    "date_created": "Jul 18, 2021 @ 11:34:58.000",
    "Phase_type": "phase",
    "name": "client_render",
    "start_time_ms": 1983,
    "end_time_ms": 2005,
    "duration_ms": 22
  },
  {
    "Time": "18/07/2021 11:35:42",
    "session_id": 456,
    "date_created": "Jul 18, 2021 @ 11:34:58.000",
    "Phase_type": "milestone",
    "name": "hidden",
    "start_time_ms": 2451,
    "end_time_ms": 2451,
    "duration_ms": 0
  },
  {
    "Time": "18/07/2021 11:35:42",
    "session_id": 456,
    "date_created": "Jul 18, 2021 @ 11:34:58.000",
    "Phase_type": "milestone",
    "name": "visible",
    "start_time_ms": 1480,
    "end_time_ms": 1480,
    "duration_ms": 0
  }
]

# ElasticSearch configs and connection
ssl_context = create_ssl_context()
ssl_context.check_hostname = False
ssl_context.verify_mode = ssl.CERT_NONE
ELASTICSEARCH_USER = "UserName"
ELASTICSEARCH_PASS = "Password"
es = Elasticsearch(['https://LinkToES'],
                   verify_certs=False,
                   ssl_context=ssl_context,
                   timeout=600)
print(es.cluster.health())

Gantt_Index = 'session_gantt_idx'
if es.indices.exists(index=Gantt_Index):
  es.indices.delete(index=Gantt_Index)

if not es.indices.exists(index=Gantt_Index):
    es.indices.create( index=Gantt_Index,
                    ignore=400, # ignore 400 already exists code
                    include_type_name=True
                 )
es.transport.close()

es = Elasticsearch(['https://LinkToES'],
                   verify_certs=False,
                   ssl_context=ssl_context,
                   timeout=600)

helpers.bulk(es, jsn, index=Gantt_Index)
es.indices.refresh(index=Gantt_Index)

es.transport.close()

```

---

<div class="post-metadata">

**Author:** ![Marius\_Dragomir](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/marius_dragomir/32/42087_2.png) [@Marius\_Dragomir](https://discuss.elastic.co/u/Marius_Dragomir)\
**Post date:** [August 3, 2021, 6:55pm UTC](https://discuss.elastic.co/t/vega-show-gantt/280212/2 "2021-08-03T18:55:59Z")

</div>

I'm not a big Vega expert, but I do hope that this example helps: [Gantt Chart in Vega for tracing time spent per label (kubernetes.container\_name.keyword) for a given search · GitHub](https://gist.github.com/rahilb/8b64c1df6014d83eedefb667cca120da)

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/elastic/original/3X/1/a/1ac57faf039f6b580b3f104ef42a2a89e41014de.png) [@system](https://discuss.elastic.co/u/system)\
**Post date:** [August 31, 2021, 6:56pm UTC](https://discuss.elastic.co/t/vega-show-gantt/280212/3 "2021-08-31T18:56:27Z")

</div>

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.
