odoql
v7.10.0
Published
Odo query language
Downloads
11
Readme
OdoQL
OdoQL is an extendible, composable and modular JSON query language.
This module (odoql) can build JSON queries with no additional dependencies. Use odoql-exe and other providers to execute queries. Or build additional execution environments in languages other than javascript.
- OdoQL Examples contain some good examples of the OdoQL syntax.
- Odo.js Handbook is a good example of how OdoQL can be used in a web framework.
Usage
Define a query
var ql = require('odoql');
ql = ql
.use('csv')
.use('http');
var query = ql('http://samplecsvs.s3.amazonaws.com/Sacramentorealestatetransactions.csv')
.http()
.csv({
header: true,
skipEmptyLines: true
})
.assign({
sq__ft: ql.asFloat(ql.ref('sq__ft'))
})
.filter(ql.gt(ql.ref('sq__ft'), 1000))
.shape({
street: true
})
.query();
console.log(JSON.stringify(query, null, 2));
Raw JSON format can be sent to a server or saved.
{
"__q": "shape",
"__p": {
"street": true
},
"__s": {
"__q": "filter",
"__p": {
"__q": "gt",
"__l": {
"__q": "ref",
"__s": "sq__ft"
},
"__r": 1000
},
"__s": {
"__q": "assign",
"__p": {
"sq__ft": {
"__q": "asFloat",
"__s": {
"__q": "ref",
"__s": "sq__ft"
}
}
},
"__s": {
"__q": "csv",
"__p": {
"header": true,
"skipEmptyLines": true
},
"__s": {
"__q": "http",
"__s": "http://samplecsvs.s3.amazonaws.com/Sacramentorealestatetransactions.csv"
}
}
}
}
}
Execute a JSON query:
var exe = require('odoql-exe');
exe = exe()
.use(require('odoql-csv'))
.use(require('odoql-http'));
var run = exe.build(query);
run(function(err, results) {
console.log(results);
});
This is just the start, see OdoQL Exe source for other components including caching, dynamic queries and parrallel queries. See Odo Relay to integrate OdoQL into Odo.js