# Write group of data to Influxdb

**URL:** https://discourse.nodered.org/t/write-group-of-data-to-influxdb/41248
**Category:** General
**Created:** [18 February 2021 16:53 UTC](https://discourse.nodered.org/t/write-group-of-data-to-influxdb/41248 "2021-02-18T16:53:40Z")
**Posts on this page:** 16
**Page:** 1

<div class="post-metadata">

### Author: ![davidz](https://avatars.discourse-cdn.com/v4/letter/d/a88e57/32.png) [@davidz](https://discourse.nodered.org/u/davidz)
#### Post date: [18 February 2021 16:53 UTC](https://discourse.nodered.org/t/write-group-of-data-to-influxdb/41248/1 "2021-02-18T16:53:40Z")

</div>

Is there a way to write an array of data set to Influxdb efficiently, but give each data set a different time stamp? For example, I have the following array of size 5, and I want to write them to influxdb and give them different time stamp, say 50 microsecond difference for each data set.

Thanks to Colin & Kuema, the following payload works. I am posting the working payload here, so that it is helpful to others too:

```auto
msg.payload=[
    {measurement:"acceleration",
    fields:{accelerometer:"sensor1",x_axis:0.1,y_axis:0.1,z_axis:1.02},
    timestamp: 1613675600773001
    },
    {measurement:"acceleration",
    fields:{accelerometer:"sensor1",x_axis:0.01,y_axis:0.02,z_axis:1.3},
    timestamp: 1613675600773002
    },
    {measurement:"acceleration",
    fields:{accelerometer:"sensor1",x_axis:0.02,y_axis:0.03,z_axis:1.1},
    timestamp: 1613675600773003
    },
    {measurement:"acceleration",
    fields:{accelerometer:"sensor1",x_axis:0.02,y_axis:0.15,z_axis:1.5},
    timestamp: 1613675600773004
    },
    {measurement:"acceleration",
    fields:{accelerometer:"sensor1",x_axis:0.03,y_axis:0.11,z_axis:1.2},
    timestamp: 1613675600773005
    },
    {measurement:"acceleration",
    fields:{accelerometer:"sensor1",x_axis:0.12,y_axis:0.05,z_axis:0.9},
    timestamp: 1613675600773006
     }
    ]
    
return msg;

```

---

<div class="post-metadata">

### Author: ![Colin](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/colin/32/17040_2.png) [@Colin](https://discourse.nodered.org/u/Colin)
#### Post date: [18 February 2021 17:05 UTC](https://discourse.nodered.org/t/write-group-of-data-to-influxdb/41248/2 "2021-02-18T17:05:26Z")

</div>

The Influxdb Batch node will do that for you. Whether node-red will cope with that data throughput depends entirely on the hardware you are running on.

---

<div class="post-metadata">

### Author: ![kuema](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/kuema/32/6542_2.png) [@kuema](https://discourse.nodered.org/u/kuema)
#### Post date: [18 February 2021 17:06 UTC](https://discourse.nodered.org/t/write-group-of-data-to-influxdb/41248/3 "2021-02-18T17:06:25Z")

</div>

Yes, you can use the Influx batch node.

It expects an array of points, like

```auto
{
    timestamp: 1234567,
    measurement: 'my_measurement',
    tags: {
        tag1: 'tag1'
    },
    fields: {
        value: 123
    }
}

```

> **[node-red-contrib-influxdb](https://flows.nodered.org/node/node-red-contrib-influxdb)**
>
> Node-RED nodes to save and query data from an influxdb time series database

---

<div class="post-metadata">

### Author: ![davidz](https://avatars.discourse-cdn.com/v4/letter/d/a88e57/32.png) [@davidz](https://discourse.nodered.org/u/davidz)
#### Post date: [18 February 2021 17:29 UTC](https://discourse.nodered.org/t/write-group-of-data-to-influxdb/41248/4 "2021-02-18T17:29:11Z")

</div>

I tried the batch node but can only write one data set, instead of five data sets. The time stamp written is also not correct. Here is the message that I sent to the batch node:

```auto
msg.payload=[
    {measurement:"acceleration",
    fields:{accelerometer:"sensor1",x_axis:0.1,y_axis:0.1,z_axis:1.02},
    timestamp: 1603386709057360836  
    },
    {measurement:"acceleration",
    fields:{accelerometer:"sensor1",x_axis:0.01,y_axis:0.02,z_axis:1.3},
    timestamp: 1603386709057360846  
    },
    {measurement:"acceleration",
    fields:{accelerometer:"sensor1",x_axis:0.02,y_axis:0.03,z_axis:1.1},
    timestamp: 1603386709057360856  
    },
    {measurement:"acceleration",
    fields:{accelerometer:"sensor1",x_axis:0.02,y_axis:0.15,z_axis:1.5},
    timestamp: 1603386709057360866  
    },
    {measurement:"acceleration",
    fields:{accelerometer:"sensor1",x_axis:0.03,y_axis:0.11,z_axis:1.2},
    timestamp: 1603386709057360876  
    },
    {measurement:"acceleration",
    fields:{accelerometer:"sensor1",x_axis:0.12,y_axis:0.05,z_axis:0.9},
    timestamp: 1603386709057360886  
     }
    ]
    
return msg;

```

What could be the problem? 😂

---

<div class="post-metadata">

### Author: ![kuema](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/kuema/32/6542_2.png) [@kuema](https://discourse.nodered.org/u/kuema)
#### Post date: [18 February 2021 17:44 UTC](https://discourse.nodered.org/t/write-group-of-data-to-influxdb/41248/5 "2021-02-18T17:44:43Z")

</div>

What do you mean by dataset? The batch expects a flat array of data points, you can just put all your data in there.

As for the timestamp... you need to use the correct precision. I think the default for the Influx nodes are milliseconds, but you can change that in the Batch node after ticking "Advanced Query Options". 🧐

But I suspect you will run into precision issues using nanoseconds because JS numbers are always floats and only safe up to 2^53 for integers.

And a recommendation: I think the `accelerometer` value is better put in as a tag, rather than a field.

---

<div class="post-metadata">

### Author: ![davidz](https://avatars.discourse-cdn.com/v4/letter/d/a88e57/32.png) [@davidz](https://discourse.nodered.org/u/davidz)
#### Post date: [18 February 2021 18:13 UTC](https://discourse.nodered.org/t/write-group-of-data-to-influxdb/41248/6 "2021-02-18T18:13:08Z")

</div>

For one dataset, I meant one object in the array:  
{measurement:"acceleration",  
fields:{accelerometer:"sensor1",x\_axis:0.02,y\_axis:0.15,z\_axis:1.5},  
timestamp: 1603386709057360866  
}  
If you look at my msg.payload, then you see that there are five objects. There is only the last one object that is accepted by the batch node. I don't think time resolution is the cause, since I tried different cases and the result is the same: only one data set is accepted.

---

<div class="post-metadata">

### Author: ![davidz](https://avatars.discourse-cdn.com/v4/letter/d/a88e57/32.png) [@davidz](https://discourse.nodered.org/u/davidz)
#### Post date: [18 February 2021 18:19 UTC](https://discourse.nodered.org/t/write-group-of-data-to-influxdb/41248/7 "2021-02-18T18:19:48Z")

</div>

I am posting the test flow here and it is easier to test.

```auto
[{"id":"ca28714f.d27e2","type":"inject","z":"40c74d59.210d24","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":390,"y":180,"wires":[["6e8041da.61711"]]},{"id":"6e8041da.61711","type":"function","z":"40c74d59.210d24","name":"Accelerator","func":"/*\nmsg.payload=[\n {measurement:\"acceleration\",\n fields:{accelerometer:\"sensor1\",x_axis:0.1,y_axis:0.1,z_axis:1.02},\n timestamp: 1613670599914915652\n },\n {measurement:\"acceleration\",\n fields:{accelerometer:\"sensor1\",x_axis:0.01,y_axis:0.02,z_axis:1.3},\n timestamp: 1613670599914915752 \n },\n {measurement:\"acceleration\",\n fields:{accelerometer:\"sensor1\",x_axis:0.02,y_axis:0.03,z_axis:1.1},\n timestamp: 1613670599914915852 \n },\n {measurement:\"acceleration\",\n fields:{accelerometer:\"sensor1\",x_axis:0.02,y_axis:0.15,z_axis:1.5},\n timestamp: 1613670599914915952 \n },\n {measurement:\"acceleration\",\n fields:{accelerometer:\"sensor1\",x_axis:0.03,y_axis:0.11,z_axis:1.2},\n timestamp: 1613670599914911052 \n },\n {measurement:\"acceleration\",\n fields:{accelerometer:\"sensor1\",x_axis:0.12,y_axis:0.05,z_axis:0.9},\n timestamp: 1613670599914915552 \n }\n]\n*/\nmsg.payload=[\n {measurement:\"acceleration\",\n fields:{accelerometer:\"sensor1\",x_axis:0.1,y_axis:0.1,z_axis:1.02},\n \n },\n {measurement:\"acceleration\",\n fields:{accelerometer:\"sensor1\",x_axis:0.01,y_axis:0.02,z_axis:1.3},\n \n },\n {measurement:\"acceleration\",\n fields:{accelerometer:\"sensor1\",x_axis:0.02,y_axis:0.03,z_axis:1.1},\n \n },\n {measurement:\"acceleration\",\n fields:{accelerometer:\"sensor1\",x_axis:0.02,y_axis:0.15,z_axis:1.5},\n \n },\n {measurement:\"acceleration\",\n fields:{accelerometer:\"sensor1\",x_axis:0.03,y_axis:0.11,z_axis:1.2},\n \n },\n {measurement:\"acceleration\",\n fields:{accelerometer:\"sensor1\",x_axis:0.12,y_axis:0.05,z_axis:0.9},\n \n }\n]\n\n \nreturn msg;\n","outputs":1,"noerr":0,"initialize":"","finalize":"","x":570,"y":180,"wires":[["16c6a0ff.5b694f","f18dbc70.1a563"]]},{"id":"16c6a0ff.5b694f","type":"debug","z":"40c74d59.210d24","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":970,"y":120,"wires":[]},{"id":"f18dbc70.1a563","type":"influxdb batch","z":"40c74d59.210d24","influxdb":"51f418fb.625fd8","precision":"n","retentionPolicy":"","name":"","x":930,"y":180,"wires":[]},{"id":"51f418fb.625fd8","type":"influxdb","hostname":"127.0.0.1","port":"8086","protocol":"http","database":"test","name":"","usetls":false,"tls":"f7f39f4e.896ae","influxdbVersion":"1.x","url":"http://localhost:8086","rejectUnauthorized":true},{"id":"f7f39f4e.896ae","type":"tls-config","name":"local-tls","cert":"","key":"","ca":"","certname":"","keyname":"","caname":"","verifyservercert":false}]

```

---

<div class="post-metadata">

### Author: ![davidz](https://avatars.discourse-cdn.com/v4/letter/d/a88e57/32.png) [@davidz](https://discourse.nodered.org/u/davidz)
#### Post date: [18 February 2021 18:35 UTC](https://discourse.nodered.org/t/write-group-of-data-to-influxdb/41248/8 "2021-02-18T18:35:04Z")

</div>

It looks like the batch node only accepts different measurements as input.  
If measurements are the same, then the node only accepts the last measurement.

So this batch node won't work for my case 😂

---

<div class="post-metadata">

### Author: ![Colin](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/colin/32/17040_2.png) [@Colin](https://discourse.nodered.org/u/Colin)
#### Post date: [18 February 2021 19:04 UTC](https://discourse.nodered.org/t/write-group-of-data-to-influxdb/41248/9 "2021-02-18T19:04:07Z")

</div>

> [@davidz](#):
>
> It looks like the batch node only accepts different measurements as input

Not correct.  
What units do you think your timestamps are in and how far apart are they? I suspect they have all ended up at the same timestamp due to being too close together.

---

<div class="post-metadata">

### Author: ![davidz](https://avatars.discourse-cdn.com/v4/letter/d/a88e57/32.png) [@davidz](https://discourse.nodered.org/u/davidz)
#### Post date: [18 February 2021 19:10 UTC](https://discourse.nodered.org/t/write-group-of-data-to-influxdb/41248/10 "2021-02-18T19:10:52Z")

</div>

Well, can you try the following payload:

```auto
msg.payload=[
    {measurement:"acceleration1",
    fields:{x_axis:0.1,y_axis:0.1,z_axis:1.02},
    tags:{accelerometer:"sensor1"},
    timestamp: new Date()
    },
    {measurement:"acceleration1",
    fields:{x_axis:0.01,y_axis:0.02,z_axis:1.3},
    tags:{accelerometer:"sensor1"},
    timestamp: new Date()
    }
    ]
    
return msg;

```

Still one measurement written to the database.

---

<div class="post-metadata">

### Author: ![davidz](https://avatars.discourse-cdn.com/v4/letter/d/a88e57/32.png) [@davidz](https://discourse.nodered.org/u/davidz)
#### Post date: [18 February 2021 19:16 UTC](https://discourse.nodered.org/t/write-group-of-data-to-influxdb/41248/11 "2021-02-18T19:16:40Z")

</div>

I need to correct myself. After trying the following payload, I think multiple data set were written:

```auto
msg.payload=[
    {measurement:"acceleration1",
    fields:{x_axis:0.2,y_axis:0.1,z_axis:1.02},
    tags:{accelerometer:"sensor1"},
    timestamp: 1613675600769
    },
    {measurement:"acceleration1",
    fields:{x_axis:0.21,y_axis:0.02,z_axis:1.3},
    tags:{accelerometer:"sensor1"},
    timestamp: 1613675600770
    }
    ]
    
return msg;

```

Will report back when I test more 😅

---

<div class="post-metadata">

### Author: ![davidz](https://avatars.discourse-cdn.com/v4/letter/d/a88e57/32.png) [@davidz](https://discourse.nodered.org/u/davidz)
#### Post date: [18 February 2021 19:34 UTC](https://discourse.nodered.org/t/write-group-of-data-to-influxdb/41248/12 "2021-02-18T19:34:12Z")

</div>

OK problem solved.

It might be a good idea to change the fields and use tags for the accelerometer for better performance, as Kuema suggested.

---

<div class="post-metadata">

### Author: ![davidz](https://avatars.discourse-cdn.com/v4/letter/d/a88e57/32.png) [@davidz](https://discourse.nodered.org/u/davidz)
#### Post date: [18 February 2021 19:38 UTC](https://discourse.nodered.org/t/write-group-of-data-to-influxdb/41248/13 "2021-02-18T19:38:38Z")

</div>

As a side note, the hardware is raspberry pi 3 running Node Red, Influxdb and MQTT. I will report back about its performance soon. 😁

---

<div class="post-metadata">

### Author: ![kuema](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/kuema/32/6542_2.png) [@kuema](https://discourse.nodered.org/u/kuema)
#### Post date: [19 February 2021 07:25 UTC](https://discourse.nodered.org/t/write-group-of-data-to-influxdb/41248/14 "2021-02-19T07:25:41Z")

</div>

So it's working now?

Yes, I didn't explicitly mention that the timestamps need to be numeric. 😅

---

<div class="post-metadata">

### Author: ![davidz](https://avatars.discourse-cdn.com/v4/letter/d/a88e57/32.png) [@davidz](https://discourse.nodered.org/u/davidz)
#### Post date: [19 February 2021 16:13 UTC](https://discourse.nodered.org/t/write-group-of-data-to-influxdb/41248/15 "2021-02-19T16:13:40Z")

</div>

Yes it is working now. Thank you very much! 😁

---

<div class="post-metadata">

### Author: ![system](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/1X/d073cd938eafa2e558d7c2cd59003b3ef4963033.png) [@system](https://discourse.nodered.org/u/system)
#### Post date: [20 April 2021 16:14 UTC](https://discourse.nodered.org/t/write-group-of-data-to-influxdb/41248/16 "2021-04-20T16:14:07Z")

</div>

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