Reader

Reader

Influxdb Reader extends InfluxQL

Constructor

new Reader(client, queue) → {Reader}

Source:
Since:
  • 2.2.0

Get the influxdb reader

Example
const Influx = require('influxdb-nodejs');
const client = new Influx('http://127.0.0.1:8086/mydb');
const reader = client.query('http');
Parameters:
Name Type Description
client Influx

The influx instance

queue function

The queue function

Returns:
Type
Reader

Extends

Members

database

Source:
Since:
  • 2.0.0
Overrides:

Set the database for influx ql

Example
const ql = new QL();
ql.database = 'mydb';

end

Source:
Since:
  • 2.0.0
Overrides:

Set influx ql end time

Example
const ql = new QL('mydb');
ql.measurement = 'http';
ql.end = '-1h';
console.info(ql.toSelect());
// => select * from "mydb".."http" where time <= now() - 1h

fill

Source:
Since:
  • 2.0.0
Overrides:

Set the influx query result fill value for time intervals that have no data

Example
const ql = new QL('mydb');
ql.measurement = 'http';
ql.addGroup('spdy');
ql.fill = 0;
console.info(ql.toSelect());
// => select * from "mydb".."http" group by "spdy" fill(0)

into

Source:
Since:
  • 2.0.0
Overrides:

Set the measurement for select into

Example
const ql = new QL('mydb');
ql.mearsurement = 'http';
ql.rp = 'my-rp';
ql.intoDatabase = 'mydb copy';
ql.into = 'http copy';
ql.intoRP = 'my-rp-copy';

intoDatabase

Source:
Since:
  • 2.0.0
Overrides:

Set the database for select into

Example
const ql = new QL('mydb');
ql.mearsurement = 'http';
ql.rp = 'my-rp';
ql.intoDatabase = 'mydb copy';
ql.into = 'http copy';
ql.intoRP = 'my-rp-copy';

intoRP

Source:
Since:
  • 2.0.0
Overrides:

Set the rp for select into

Example
const ql = new QL('mydb');
ql.measurement = 'http';
ql.rp = 'my-rp';
ql.intoDatabase = 'mydb copy';
ql.into = 'http copy';
ql.intoRP = 'my-rp-copy';

limit

Source:
Since:
  • 2.0.0
Overrides:

Set influx ql query result point limit

Example
const ql = new QL('mydb');
ql.measurement = 'http';
ql.limit = 10;
console.info(ql.toSelect());
// => select * from "mydb".."http" limit 10

measurement

Source:
Since:
  • 2.0.0
Overrides:
Deprecated:
  • Yes

Set influx ql measurement

Example
const ql = new QL('mydb');
ql.measurement = 'http';
console.info(ql.toSelect());
// => select * from "mydb".."http"

offset

Source:
Since:
  • 2.0.0
Overrides:

Set influx ql query offset of the result

Example
const ql = new QL('mydb');
ql.measurement = 'http';
ql.offset = 10;
console.info(ql.toSelect());
// => select * from "mydb".."http" offset 10

order

Source:
Since:
  • 2.0.0
Overrides:

Set the influx query result order of time

Example
const ql = new QL('mydb');
ql.measurement = 'http';
ql.addGroup('spdy');
ql.order = 'desc';
console.info(ql.toSelect());
// => select * from "mydb".."http" group by "spdy" order by time desc

relation

Source:
Since:
  • 2.0.0
Overrides:

Get influx ql default where relation

Example
const ql = new QL('mydb');
console.info(ql.relation);
// => 'and'

RP

Source:
Since:
  • 2.0.0
Overrides:

Set influx ql retention policy

Example
const ql = new QL('mydb');
ql.measurement = 'http';
ql.RP = 'two-weeks';
console.info(ql.toSelect());
// => select * from "mydb"."two-weeks"."http"

slimit

Source:
Since:
  • 2.0.0
Overrides:

Set influx query result series limit

Example
const ql = new QL('mydb');
ql.slimit = 3;
console.info(ql.toSelect());
// => select * from "mydb" slimit 3

soffset

Source:
Since:
  • 2.0.0
Overrides:

Set influx ql offset series in the query results

Example
const ql = new QL('mydb');
ql.soffset = 10;
console.info(ql.toSelect());
// => select * from "mydb" soffset 10

start

Source:
Since:
  • 2.0.0
Overrides:

Set influx ql start time

Examples
const ql = new QL('mydb');
ql.measurement = 'http';
ql.start = '-3h';
console.info(ql.toSelect());
// => select * from "mydb".."http" where time >= now() - 3h
const ql = new QL('mydb');
ql.measurement = 'http';
ql.start = '2015-08-18T00:00:00Z';
console.info(ql.toSelect());
// => select * from "mydb".."http" where time >= '2015-08-18T00:00:00Z'
const ql = new QL('mydb');
ql.measurement = 'http';
ql.start = '1388534400s;
console.info(ql.toSelect());
// => select * from "mydb".."http" where time >= 1388534400s

tz

Source:
Since:
  • 2.9.0
Overrides:

Set influx ql time zone

Example
const ql = new QL('mydb');
ql.tz = 'America/Chicago';
console.info(ql.tz);
// => America/Chicago

Methods

addCalculate(type, field)

Source:

Add influx ql calculate, use addFunction instead of it.

Parameters:
Name Type Description
type String

calculate type

field String

calculate field

addField(field)

Source:
Since:
  • 2.6.0
Overrides:

Add the field of the query result

Examples
const ql = new QL('mydb');
ql.measurement = 'http';
ql.addField('status', 'spdy', 'fetch time');
console.info(ql.toSelect());
// => select "fetch time","spdy","status" from "mydb".."http"
const ql = new QL('mydb');
ql.measurement = 'http';
ql.addField({
  'fetch time': 'ft',
});
console.info(ql.toSelect());
// => select "fetch time" as "ft" from "mydb".."http"
const ql = new QL('mydb');
ql.measurement = 'http';
ql.addField('"use" + 2');
console.info(ql.toSelect());
// => select "use" + 2 from "mydb".."http"
Parameters:
Name Type Description
field String

field's name

Returns:

QL

addFunction(type, field, field, options) → {QL}

Source:
Since:
  • 2.6.0
Overrides:

Add influx ql function

Examples
const ql = new QL('mydb');
ql.measurement = 'http';
ql.addFunction('count', 'use');
ql.addFunction('mean', 'use');
ql.addGroup('spdy');
console.info(ql.toSelect());
// => select count("use"),mean("use") from "mydb".."http" group by "spdy"
const ql = new QL('mydb');
ql.measurement = 'http';
ql.addFunction("bottom", 'use', 3);
console.info(ql.toSelect());
// => select bottom("use",3) from "mydb".."http"
const ql = new QL('mydb');
ql.measurement = 'http';
ql.addFunction('count("use")');
console.info(ql.toSelect());
// => select count("use") from "mydb".."http"
const ql = new QL('mydb');
ql.measurement = 'http';
ql.addFunction('count("use")', {
  alias: 'countUse',
});
console.info(ql.toSelect());
// => select count("use") as "countUse" from "mydb".."http"
const ql = new QL('mydb');
ql.measurement = 'http';
ql.addFunction('count', 'use', {
  alias: 'countUse',
});
console.info(ql.toSelect());
// => select count("use") as "countUse" from "mydb".."http"
Parameters:
Name Type Description
type String

function name

field Any

function param

field Any

function param

options Object

set the alias for the function, eg: {"alias": "the alias name"}

Returns:
Type
QL

addGroup(tag) → {QL}

Source:
Since:
  • 2.0.0
Overrides:

Add influx ql group by

Examples
const ql = new QL('mydb');
ql.measurement = 'http';
ql.addGroup('spdy', 'method');
ql.addFunction('count', 'use');
console.info(ql.toSelect());
// => select count("use") from "mydb".."http" group by "method","spdy"
const ql = new QL('mydb');
ql.measurement = 'http';
ql.addGroup('spdy', 'time(1m)');
ql.addFunction('count', 'use');
console.info(ql.toSelect());
// => select count("use") from "mydb".."http" group by "method","time(1m)"
Parameters:
Name Type Description
tag String

tag's name

Returns:
Type
QL

addMeasurement(measurement) → {QL}

Source:
Since:
  • 2.0.0
Overrides:

Add influx ql measurement

Examples
const ql = new QL('mydb');
ql.measurement = 'http';
ql.addFunction('count', 'use');
console.info(ql.toSelect());
// => select count("use") from "mydb".."http"
const ql = new QL('mydb');
ql.measurement = 'http';
ql.addMeasurement('https');
ql.addFunction('count', 'use');
console.info(ql.toSelect());
// => select count("use") from "mydb".."http","mydb".."https"
Parameters:
Name Type Description
measurement String

measurement name

Returns:
Type
QL

clean()

Source:
Since:
  • 2.5.0
Overrides:

Clean all the influx ql condition

Example
const ql = new QL('mydb');
ql.measurement = 'http';
ql.addField('fetch time');
ql.addGroup('spdy');
ql.clean();
console.info(ql.toSelect());
// => select * from "mydb".."http"

emptyConditions() → {QL}

Source:
Since:
  • 2.0.0
Overrides:

Empty the influx ql where condition

Example
const ql = new QL();
ql.measurement = 'http';
ql.condition({
  code: 500,
  spyd: '1',
});
console.info(ql.toSelect());
// => select * from "http" where ("code" = 500 and "spdy" = '1')
ql.emptyConditions();
console.info(ql.toSelect());
// => select * from "http"
Returns:
Type
QL

emptyFields()

Source:
Since:
  • 2.0.0
Overrides:

Remove all fields of the query result

Example
const ql = new QL('mydb');
ql.measurement = 'http';
ql.addField('status', 'spdy', 'fetch time');
ql.emptyFields();
console.info(ql.toSelect());
// => select * from "mydb".."http"
Returns:

QL

emptyFunctions() → {QL}

Source:
Since:
  • 2.0.0
Overrides:

Remove all influx ql functions

Example
const ql = new QL('mydb');
ql.measurement = 'http';
ql.addFunction('count', 'use');
ql.addFunction('mean', 'use');
ql.emptyFunctions();
ql.addGroup('spdy');
console.info(ql.toSelect());
// => select * from "mydb".."http" group by "spdy"
Returns:
Type
QL

emptyGroups() → {QL}

Source:
Since:
  • 2.0.0
Overrides:

Empty influx ql group by

Example
const ql = new QL('mydb');
ql.measurement = 'http';
ql.addGroup('spdy', 'method');
ql.emptyGroups();
console.info(ql.toSelect());
// => select * from "mydb".."http"
Returns:
Type
QL

emptyMeasurements() → {QL}

Source:
Since:
  • 2.0.0
Overrides:

Empty influx ql measurements

Example
const ql = new QL('mydb');
ql.addMeasurement('http', 'https');
ql.emptyMeasurements();
console.info(ql.toSelect());
// => select * from "mydb"
Returns:
Type
QL

get(key) → {Any}

Source:
Since:
  • 2.2.0

Get the reader options

Example
const reader = client.query('http').set({
  limit: 10,
});
console.info(reader.get('limit'));
// => 10
Parameters:
Name Type Description
key String

The key of options

Returns:
Type
Any

multiQuery()

Source:
Since:
  • 2.7.0
Overrides:

Multi query

Example
const ql = new QL('mydb');
ql.measurement = 'http';
ql.addFunction('max', 'fetch time');
ql.addGroup('spdy');
ql.multiQuery();
ql.addFunction('sum', 'max');
console.info(ql.toSelect());
// => select max("fetch time") from "mydb".."http" group by "spdy";
select sum("max") from "mydb".."http"

queue() → {Reader}

Source:
Since:
  • 2.2.0

Add the query to the queue

Example
client.query('http')
  .tag({
    spdy: '1',
  })
  .queue();
Returns:
Type
Reader

removeField(field)

Source:
Since:
  • 2.0.0
Overrides:

Remove the field of the query result

Example
const ql = new QL('mydb');
ql.measurement = 'http';
ql.addField('status', 'spdy', 'fetch time');
ql.removeField('status');
console.info(ql.toSelect());
// => select "fetch time","spdy" from "mydb".."http"
Parameters:
Name Type Description
field String

field's name

Returns:

QL

removeFunction(type, field, field) → {QL}

Source:
Since:
  • 2.6.0
Overrides:

Remove influx ql function

Example
const ql = new QL('mydb');
ql.measurement = 'http';
ql.addFunction('count', 'use');
ql.addFunction('mean', 'use');
ql.removeFunction('count', 'use');
ql.addGroup('spdy');
ql.addGroup('time(6h)');
console.info(ql.toSelect());
// => select mean("use") from "mydb".."http" group by "spdy"
Parameters:
Name Type Description
type String

function name

field Any

function param

field Any

function param

Returns:
Type
QL

removeGroup(tag) → {QL}

Source:
Since:
  • 2.0.0
Overrides:

Remove influx ql group by

Example
const ql = new QL('mydb');
ql.measurement = 'http';
ql.addGroup('spdy', 'method');
ql.removeGroup('spdy')
ql.addFunction('count', 'use');
console.info(ql.toSelect());
// => select count("use") from "mydb".."http" group by "method"
Parameters:
Name Type Description
tag String

tag's name

Returns:
Type
QL

removeMeasurement(measurement) → {QL}

Source:
Since:
  • 2.0.0
Overrides:

Remove influx ql measurement

Example
const ql = new QL('mydb');
ql.addMeasurement('foo', 'bar');
ql.removeMeasurement('foo')
ql.addFunction('count', 'use');
console.info(ql.toSelect());
// => select count("use") from "mydb".."bar"
Parameters:
Name Type Description
measurement String

measurement name

Returns:
Type
QL

set(key, v) → {Reader}

Source:
Since:
  • 2.2.0

Set the reader options

Example
client.query('http')
  .condition('spdy', 'fast')
  // query data response type
  .set('format', 'json')
  // the specified precision of epoch timestamps
  .set('epoch', 's')
  .set({
    // the retention policy
    RP: 'autogen',
    // the query start time, 3 hours ago
    start: '-3h',
    // the query end time, 1 hours ago
    end: '-1h',
    // the query point limit, paginates N points in the query results
    limit: 10,
    // the query series limit
    slimit: 1,
    // the query result order
    order: 'desc',
    // the query offset
    offset: 10,
    // specifies the number of series to paginate
    soffset: 0,
    // changes the value reported for time intervals that have no data
    fill: 0,
    // timezone
    tz: 'America/Chicago',
  })
  .then(console.info)
  .catch(console.error);
Parameters:
Name Type Description
key String | Object

The key of options, eg: format epoch RP start end limit slimit order offset soffset fill

v Any

The value of options

Returns:
Type
Reader

subQuery()

Source:
Since:
  • 2.5.0
Overrides:

Set the sub query string, it will get the current ql for sub query and clean the query options

Example
const ql = new QL('mydb');
ql.measurement = 'http';
ql.addFunction('max', 'fetch time');
ql.addGroup('spdy');
ql.subQuery();
ql.addFunction('sum', 'max');
console.info(ql.toSelect());
// => select sum("max") from (select max("fetch time") from "mydb".."http" group by "spdy")

then(resolve, reject) → {Promise}

Source:
Since:
  • 2.2.0

Get the query promise

Parameters:
Name Type Description
resolve function

resolve function

reject function

reject function

Returns:
Type
Promise

toSelect() → {String}

Source:
Since:
  • 2.0.0
Overrides:

Get the influx select ql

Example
const ql = new QL('mydb');
ql.measurement = 'http';
ql.RP = 'two-weeks';
ql.addField('status', 'spdy', 'fetch time');
ql.start = '2016-01-01';
ql.end = '-3h';
ql.limit = 10;
ql.order = 'desc';
ql.offset = 10;
ql.addGroup('spdy');
ql.condition('code', 400);
ql.condition('use', 30, '<=');
ql.fill = 0;
console.info(ql.toSelect());
Returns:
Type
String

toString() → {String}

Source:
Since:
  • 2.2.1

Get the influx ql of the reader

Example
const ql = client.query('http')
  .tag({
    spdy: '1',
  })
  .toString();
// => select * from "http" where "spdy" = '1'
Returns:
Type
String

where(key, value, relation, operator) → {QL}

Source:
Since:
  • 2.0.0
Overrides:

Add the influx ql where condition, alias for condition

Examples
const ql = new QL();
ql.measurement = 'http';
ql.where('code', 500);
console.info(ql.toSelect());
// => select * from "http" where "code" = 500
const ql = new QL();
ql.measurement = 'http';
ql.where({
  code: 500,
  spdy: '1',
});
console.info(ql.toSelect());
// => select * from "http" where ("code" = 500 and "spdy" = '1')
const ql = new QL();
ql.measurement = 'http';
ql.where('spdy', ['1', '2']);
console.info(ql.toSelect());
// => select * from "mydb".."http" where ("spdy" = '1' or "spdy" = '2')
const ql = new QL();
ql.measurement = 'http';
ql.where({
  code: 500,
  spdy: '1',
}, '!=');
console.info(ql.toSelect());
// => select * from "http" where ("code" != 500 and "spdy" != '1')
const ql = new QL();
ql.measurement = 'http';
ql.where('code', /5\d{2}/);
console.info(ql.toSelect());
// => select * from "http" where "code" = /5\d{2}/
Parameters:
Name Type Description
key String

the condition key

value String

the condition value

relation String

the multi condition relation

operator String

the conditon operator, default is '='

Returns:
Type
QL