periscope-data-loader
v1.0.1
Published
Naïve node.js module to download query results from Periscope Data charts
Downloads
7
Readme
periscope-data-loader
periscope-data-loader extracts query results from charts within a shared Periscope Data dashboard
Installation
node.js
npm install periscope-data-loader
Usage async / await
const periscopeData = require('periscope-data-loader');
(async () => {
let result = await periscopeData({
url: 'https://app.periscopedata.com/shared/6867a77f-b484-4b49-864f-92c8f9cbde9a',
labels: ['welcome'],
});
console.log(JSON.stringify(result, null, 4));
})();
Required params
url
- shared dashboard URL generated statically through the Periscope Data GUI or dynamically via Embed APIlabels
- an array containing the titles (labels) for all indicators within the shared dashboard that should be loaded. They must be unique throughout the dashboard otherwise only the first might be loaded correctly
Optional params
timeout
- maximum time (in ms) allowed for each HTTP request (the minimum number of requests is equal to the number of desiredlabels
plus one)retryDelay
- time (in ms) between multiple HTTP calls/retries to periscope datamaxAttempts
- maximum number of HTTP retries allowed for each indicator that needs to be loadedconcurrency
- maximum number of indicators to be loaded simultaneously
P.s. be nice to the Periscope Data servers by avoiding excessive concurrency
and small values for retryDelay
or the calls for data could be aggressively throttled
Internals
- HTML parsing goes through htmlparser2
- HTTP retry functionality is provided by request-retry
- concurrency is made possible by calling bluebird's
Promise.map
- query results are decoded from streamed CSV to JSON via CSVtoJSON