Skip to content

Commit b06ee99

Browse files
Added functionality to filter timeseries by dimensions
1 parent ab5d37f commit b06ee99

File tree

3 files changed

+19
-0
lines changed

3 files changed

+19
-0
lines changed

api/endpoints/timeseries/index.js

+4
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,10 @@ module.exports = {
3232
options.indicator = req.query.indicator;
3333
}
3434

35+
if (req.query.dimensions) {
36+
options.dimensions = req.query.dimensions;
37+
}
38+
3539
let {length, list} = await timeseries.list(start, count, urlResolver, options);
3640
let links = paginationHelper.getLinks(pages, length, urlResolver);
3741

api/endpoints/timeseries/model.js

+8
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
const {isValid} = require('./validation');
22
const client = require('../../helpers/pg-client');
3+
const {parseDimensions} = require('../../helpers/parsers');
34
const jsonapiHelper = require('../../helpers/jsonapi');
45
const defaultUrlResolver = require('../../helpers/defaultUrlResolver');
56
const observations = require('../observations/model');
@@ -24,6 +25,13 @@ function getFilters(options) {
2425
filter.push(`indicator = '${options.indicator}'`);
2526
}
2627

28+
if (options.dimensions) {
29+
const dimensions = parseDimensions(options.dimensions);
30+
for (const [key, values] of Object.entries(dimensions)) {
31+
filter.push(`dimensions ->> '${key}' IN ('${values.join('\',\'')}')`);
32+
}
33+
}
34+
2735
return filter.length > 0 ? ` WHERE ${filter.join(' AND ')}` : '';
2836
}
2937

docs/README.md

+7
Original file line numberDiff line numberDiff line change
@@ -321,6 +321,13 @@ GET /observations/:observation_id
321321
GET /timeseries
322322
```
323323

324+
###### Parameteres ######
325+
326+
| Name | Type | Description |
327+
|---|---|---|
328+
| indicator | string | The name of the indicator |
329+
| dimensions[:dimension_name] | string | Specify the dimension_name:value pair. Ex: `dimensions[geographicArea]=ON`. You can specify multiple value by repeating the parameter or via a comma-seperated value. Ex: `dimensions[geographicArea]=QC&dimensions[geographicArea]=ON` or `dimensions[geographicArea]=QC,ON` |
330+
324331
###### Response ######
325332

326333
```json

0 commit comments

Comments
 (0)