ifql-parser
InfluxDB Query Language parser
Status
- Work in progress! Testers and Contributors welcome
Todo
- Parser
- Baseline SQL parser
- FROM parser
- TIME math
- Quotes parser
- Cleanup & Tests
- Output
- JSON output
- Elastic DSL output
JSON Example
const parser = require('ifql-parser')();
parser.parse('SELECT sum('load') AS mean_cpu FROM telegraf.autogen.cpu WHERE time > now() - 6h GROUP BY time(3600)');
Output
referencedTables: 'cpu' createdTables: undefined sourceTables: 'cpu' operation: 'select' parsed: type: 'select' top: undefined all_distinct: undefined selection: type: 'selection_columns' columns: type: 'column' expression: type: 'function_call' name: value: 'sum' parameters: type: 'string' string: 'load' alias: type: 'identifier' value: 'mean_cpu' table_exp: type: 'from_table' from: type: 'from' table_refs: type: 'table' table: 'cpu' db: 'telegraf' ret: 'autogen' where: type: 'where' condition: type: 'operator' operator: '>' left: type: 'identifier' value: 'time' right: type: 'operator' operator: '-' left: type: 'function_call' name: value: 'now' from_timestamp: 1545482191716 to_timestamp: 1545482213317 parameters: right: type: 'decimal' value: 6 range: type: 'data_type' data_type: 'hour' size: undefined groupby: type: 'group_by' columns: type: 'selection_columns' columns: type: 'column' expression: type: 'function_call' name: value: 'time' parameters: type: 'decimal' value: 3600 having: undefined order: undefined joins: returnColumns: name: 'mean_cpu' sourceColumns:
Credits
- Parser built using the nearley ToolKit
- Grammar baseline forked from js-sql-parse