# Graphing median from United MultiStream Shifted Data

**URL:** <https://community.influxdata.com/t/graphing-median-from-united-multistream-shifted-data/29884>\
**Category:** InfluxDB 2\
**Tags:** influxdb, query, flux, union\
**Created:** [May 11, 2023, 11:42am UTC](https://community.influxdata.com/t/graphing-median-from-united-multistream-shifted-data/29884 "2023-05-11T11:42:56Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![Azimuth](https://sea1.discourse-cdn.com/flex023/user_avatar/community.influxdata.com/azimuth/32/13218_2.png) [@Azimuth](https://community.influxdata.com/u/Azimuth)\
**Post date:** [May 11, 2023, 11:42am UTC](https://community.influxdata.com/t/graphing-median-from-united-multistream-shifted-data/29884/1 "2023-05-11T11:42:56Z")

</div>

Hi to the Community!

As a new at Flux lang I have some quandaries with queries.  
Now I have 2 streams to make them united and in seems like this:

```auto

data1 = from(bucket: v.bucket)
  |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
  |> filter(fn: (r) => r["host"] == "monitoring")
  |> filter(fn: (r) => r["_field"] == "usage_user")
  |> filter(fn: (r) => r["cpu"] == "cpu-total")
  
   |> yield(name: "now")

data2 = from(bucket: v.bucket)
  |> range(start: -1h15m, stop: -1h)
  |> filter(fn: (r) => r["host"] == "monitoring")
  |> filter(fn: (r) => r["_field"] == "usage_user")
  |> filter(fn: (r) => r["cpu"] == "cpu-total")
  |> timeShift(duration: 1h) 
  |> yield(name: "old")

  union(tables: [data1, data2] )

```

Unfortunately, I have a strange line instead of something I had expected:

 ![image](https://us1.discourse-cdn.com/flex023/uploads/influxdata/original/2X/4/444b5b78b41a253acc894a27a6f296cab7680661.png)

Ideally, I’m looking for a way to combine two (maybe more) different periods and make a graph from the figures taken by a function like median(), mean(), etc.

I’d appreciate any help to point me to a mistake I made or function I missed.  
Influxdb 2.7

---

<div class="post-metadata">

**Author:** ![Anaisdg](https://sea1.discourse-cdn.com/flex023/user_avatar/community.influxdata.com/anaisdg/32/6401_2.png) [@Anaisdg](https://community.influxdata.com/u/Anaisdg)\
**Post date:** [May 31, 2023, 5:12pm UTC](https://community.influxdata.com/t/graphing-median-from-united-multistream-shifted-data/29884/2 "2023-05-31T17:12:56Z")

</div>

Hello @Azimuth,  
You might want to order by time with the sort() function after union.  
I don’t know if time order is preserved which might be causing the weird line.  
Does that help?

---

<div class="post-metadata">

**Author:** ![Azimuth](https://sea1.discourse-cdn.com/flex023/user_avatar/community.influxdata.com/azimuth/32/13218_2.png) [@Azimuth](https://community.influxdata.com/u/Azimuth)\
**Post date:** [July 3, 2023, 2:31pm UTC](https://community.influxdata.com/t/graphing-median-from-united-multistream-shifted-data/29884/3 "2023-07-03T14:31:10Z")

</div>

Thanks for a suggestion. I overcame this issue by Group fn in Grafana. Also I enlarged my query for a few time periods and took a median from. Also I apply time subtraction. I hope this helps somebody:

```auto
import "date"

daysago0 = 7d
daysago1 = 14d
daysago2 = 21d

data1 = from(bucket: "monitoring")
  |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
  |> filter(fn: (r) => r["host"] == "monitoring")
  |> filter(fn: (r) => r["_field"] == "usage_user")
  |> filter(fn: (r) => r["cpu"] == "cpu-total")
  |> group()
   
data2 = from(bucket: "monitoring")
  |> range(start: date.sub(d: daysago0, from: v.timeRangeStart) , stop: date.sub(d: daysago0, from: v.timeRangeStop))
  |> filter(fn: (r) => r["host"] == "monitoring")
  |> filter(fn: (r) => r["_field"] == "usage_user")
  |> filter(fn: (r) => r["cpu"] == "cpu-total")
  |> timeShift(duration: daysago0) 
  |> group()

data3 = from(bucket: "monitoring")
  |> range(start: date.sub(d: daysago1, from: v.timeRangeStart), stop: date.sub(d: daysago1, from: v.timeRangeStop))
  |> filter(fn: (r) => r["host"] == "monitoring")
  |> filter(fn: (r) => r["_field"] == "usage_user")
  |> filter(fn: (r) => r["cpu"] == "cpu-total")
  |> timeShift(duration: daysago1) 
  |> group()

data4 = from(bucket: "monitoring")
  |> range(start: date.sub(d: daysago2, from: v.timeRangeStart), stop: date.sub(d: daysago2, from: v.timeRangeStop))
  |> filter(fn: (r) => r["host"] == "monitoring")
  |> filter(fn: (r) => r["_field"] == "usage_user")
  |> filter(fn: (r) => r["cpu"] == "cpu-total")
  |> timeShift(duration: daysago2) 
  |> group()

  union(tables: [data1, data2, data3, data4])
  |> aggregateWindow(every: v.windowPeriod,fn: median, column: "_value", createEmpty: false)

```

 ![2023-07-03_17-32](https://us1.discourse-cdn.com/flex023/uploads/influxdata/original/2X/4/4f062871461e288025aa66b301efc4ed869eb811.png)

---

<div class="post-metadata">

**Author:** ![Azimuth](https://sea1.discourse-cdn.com/flex023/user_avatar/community.influxdata.com/azimuth/32/13218_2.png) [@Azimuth](https://community.influxdata.com/u/Azimuth)\
**Post date:** [July 5, 2023, 3:04pm UTC](https://community.influxdata.com/t/graphing-median-from-united-multistream-shifted-data/29884/4 "2023-07-05T15:04:54Z")

</div>

UPD.

Unfortunately, I faced a bad result by using in Grafana. I made all the periods in different queries and found out the median function doesn’t give me a result I had expected.  
I tried median and quantile functions as it is given in screenshots.

So, any help is appreciated.

 ![2023-07-05_17-59](https://us1.discourse-cdn.com/flex023/uploads/influxdata/original/2X/5/5af5c78b21321286244cf49b4057b4936945ff2f.png)

 ![2023-07-05_18-00](https://us1.discourse-cdn.com/flex023/uploads/influxdata/original/2X/2/21f94faa3c007a6ba82acf2cd03a00e6ac028e6b.png)
