Skip to content
A Node.js-based client for the Saiku Analytics JSON API
Branch: master
Clone or download
Latest commit 6d2f804 Jun 17, 2015
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
lib Issue-10 #comment Add comments with YUIDoc May 18, 2015
.editorconfig Initial config Apr 17, 2015
.gitignore Add others files Apr 19, 2015
.npmignore Create .npmignore Jun 3, 2015
CONTRIBUTING.md Update project May 2, 2015
README.md Add back to top Jun 16, 2015
package.json Update project May 2, 2015
saiku.js Update repository May 24, 2015

README.md

A Saiku REST API client for Node.js

This is a client for the Saiku Analytics REST API. It is under active development, and should be considered beta software. More features are in development, and issues are welcome if you find something that doesn't work!

Table of Contents

  1. Purpose
  2. Installation
  3. Using the Client - Create a session - Schemas - Repository - Export - MDX
  4. Client Documentation
  5. Contributing
  6. History
  7. Credits
  8. License

Purpose

This client is designed to make it easy for your Node.js application to request specific resources from Saiku. It uses a query builder-style syntax to let you craft the request being made to the Saiku endpoints, then returns the API server's response to your application as a JavaScript object.

Installation

To use the client, install it with npm:

npm install --save saiku-rest-api

Then, within your application's script files, require the module to gain access to it:

var Saiku = require('saiku-rest-api');

The REST API client requires Node.js version 0.10 or above.

Using the Client

The module is a constructor, so you can create an instance of the API client bound to the endpoint for your Saiku:

var Saiku = require('saiku-rest-api');
var saiku = new Saiku({ 
	host: 'http://localhost:8080',
	username: 'admin',
	password: 'admin'
});

Once an instance is constructed, you can chain off of it to construct a specific request.

We support requesting posts using either a callback-style:

// Callbacks
saiku.schemas().get(function(error, data) {
	if (!error) {
		// do something with the returned posts
	}
	else {
		// handle error
	}
});

Create a session

saiku.session().createSession();

Schemas

Return Schemas:

saiku.schemas().get(function(error, data) {
	if (!error) {
		// do something with the returned posts
	}
	else {
		// handle error
	}
});

Return metadata Schemas:

saiku.schemas().metadata(function(error, data) {
	if (!error) {
		// do something with the returned posts
	}
	else {
		// handle error
	}
});

Repository

Return matada repository:

saiku.repository({ type: 'saiku' }).get(function(error, data) {
	if (!error) {
		// do something with the returned posts
	}
	else {
		// handle error
	}
});

Export

Export file (JSON/HTML/CSV/XLS/):

saiku.export({ mimetype: 'html', filePath: '/homes/home:admin/Product Name.saiku' }).file(function(error, data) {
	if (!error) {
		// do something with the returned posts
	}
	else {
		// handle error
	}
});

Export query (HTML/CSV/XLS/PDF):

saiku.export({ mimetype: 'html', queryName: 'query123' }).query(function(error, data) {
	if (!error) {
		// do something with the returned posts
	}
	else {
		// handle error
	}
});

MDX

Execute query MDX:

saiku.mdx({
	connectionName: 'foodmart', 
	schemaName: 'FoodMart',
	cubeName: 'Sales',
 	queryName: 'query123',
	mdx: 'WITH SET [~ROWS] AS {[Time].[Time].[Year].Members} SELECT NON EMPTY {[Measures].[Unit Sales]}' +
	     'ON COLUMNS, NON EMPTY [~ROWS] ON ROWS FROM [Sales]',
}).execute(function(error, data) {
	if (!error) {
		// do something with the returned posts
	}
	else {
		// handle error
	}
});

Client Documentation

In addition to the above getting-started guide, we have automatically-generated Client documentation.

Contributing

Check CONTRIBUTING.md for more information.

History

For detailed changelog, see Releases.

Credits

I thank the following open source project:

  • Saiku UI - A user interface for the Saiku analytical tool (Apache license version 2).

License

MIT License © Breno Polanski

⬆ back to top

You can’t perform that action at this time.