ActivePivot API documentation version v9
http://server:port/activeviam/pivot/rest/v9
Home
This document describes the REST API of ActivePivot server.
Note: the root URL provided here will depend of the deployment of your application.
/cube/configuration
API to access ActivePivot Configuration service.
Gets all defined editable calculated members defined in a given ActivePivot.
Some additional calculated members may be defined in the ActivePivot instance. However, if they cannot be edited through this API, they won't be listed by this call.
get /cube/configuration/calculatedMembers/{pivotId}
Gets all defined editable calculated members defined in a given ActivePivot.
Some additional calculated members may be defined in the ActivePivot instance. However, if they cannot be edited through this API, they won't be listed by this call.
Path Parameters
- pivotId: required (string)
Name of the ActivePivot instance to query
HTTP status code 200
List of calculated members defined in the ActivePivot
This provides the unique name of each calculated member, as well as its permissions.
Body
Type: application/json
Example:
{
"[Measures].[PnlInUSD]": {
"owners": ["ROLE_CS_ROOT"],
"readers": ["ROLE_USER"]
},
"[Measures].[PnlInEUR]": {
"owners": ["ROLE_CS_ROOT"],
"readers": ["ROLE_USER"]
}
}
HTTP status code 401
Resource only available to connected user
Body
Type: application/json
Example:
No content
Gets all defined editable KPIs defined in a given ActivePivot.
Some additional KPIs may be defined in the ActivePivot instance. However, if they cannot be edited through this API, they won't be listed by this call.
get /cube/configuration/kpis/{pivotId}
Gets all defined editable KPIs defined in a given ActivePivot.
Some additional KPIs may be defined in the ActivePivot instance. However, if they cannot be edited through this API, they won't be listed by this call.
Path Parameters
- pivotId: required (string)
Name of the ActivePivot instance to query
HTTP status code 200
List of KPIs defined in an ActivePivot instance
This provides the name of each KPI, as well as its permissions.
Body
Type: application/json
Example:
{
"PnlEUR Check": {
"owners": ["ROLE_ADMIN"],
"readers": ["ROLE_USER"]
}
}
HTTP status code 401
Resource only available to connected user
Body
Type: application/json
Example:
No content
Executes an MDX definition statement.
The statement itself defines on which ActivePivot instance it applies. There are various types of statements that are supported by the API. The full list and examples are provided by this documentation page.
post /cube/configuration/execute
Executes an MDX definition statement.
The statement itself defines on which ActivePivot instance it applies. There are various types of statements that are supported by the API. The full list and examples are provided by this documentation page.
Body
Type: application/json
Schema:
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"readers": {
"type": "array",
"items": {
"type": "string",
"description": "The username or role of one reader"
},
"description": "List of the readers of the entity to create. This can be a username or a role. Optional in DROP statements",
"required": false
},
"owners": {
"type": "array",
"items": {
"type": "string",
"description": "The username or role of one owner"
},
"description": "List of owners of the entity to create. This can be a username or a role. Optional in DROP statements",
"required": false
},
"statement": {
"type": "string",
"description": "MDX statement to execute",
"required": true
}
}
}
Example:
{
"statement": "CREATE KPI [EquityDerivativesCube].[PnlEur Check] AS [Measures].[PnlInEUR], GOAL=1000, STATUS=1, GOAL_FORMAT=\"#.#\"",
"owners": ["ROLE_ADMIN"],
"readers": ["ROLE_USER"]
}
HTTP status code 200
Status of the operation.
Body
Type: application/json
Example:
{
}
HTTP status code 401
Resource only available to connected user
Body
Type: application/json
Example:
No content
HTTP status code 409
If the statement creates an element that already exists
Body
Type: application/json
Schema:
{
"errorChain": {
"description": "Chain of error messages, from the root cause to the top",
"type": "array",
"items": { "$ref": "errorLink" },
"minItems": 1,
"required": true
},
"stackTrace": {
"description": "Technical stack trace as a string. It generally include line breaks and tabulations for a better display",
"type": "string",
"required": true
},
"definitions": {
"errorLink": {
"type": {
"description": "Type of an error link",
"type": "string",
"required": true
},
"message": {
"description": "Message of a given link",
"type": "string",
"required": true
}
}
}
}
Example:
{
"errorChain" : [ {
"type" : "MdxException",
"message" : "Cannot resolve element [Booking].[Desk].[absent]. Hint: absent is not a level of the Desk hierarchy"
}, {
"type" : "MdxException",
"message" : "SELECT NON EMPTY {[Booking].[Desk].[absent]} ON ROWS FROM [EquityDerivativesCube] WHERE ([Measures].[pnl.SUM])"
}...,
{
"type" : "BadArgumentException",
"message" : "[400] com.quartetfs.pivot.mdx.MdxException: Error with the following query: SELECT NON EMPTY {[Booking].[Desk].[absent]} ON ROWS FROM [EquityDerivativesCube] WHERE ([Measures].[pnl.SUM])"
} ],
"stackTrace" : "com.qfs.fwk.services.BadArgumentException: [400] com.quartetfs.pivot.mdx.MdxException: Error with the following query: SELECT NON EMPTY {[Booking].[Desk].[absent]} ON ROWS FROM [EquityDerivativesCube] WHERE ([Measures].[pnl.SUM])\r\n\tat com.qfs.pivot.rest.query.impl.JsonQueryService.executeQuery(JsonQueryService.java:169)\r\n\tat com.qfs.pivot.rest.query.impl.JsonQueryService.executeMdxQuery(JsonQueryService.java:103)\r\n\tat com.qfs.pivot.rest.query.impl.QueriesRestService.mdxQuery(QueriesRestService.java:54)\r\n\tat ... "
}
Sets the locale for the calling user
post /cube/configuration/locale
/cube/dataexport
API to export the result of MDX queries.
Sends to the client the result of a MDX query in CSV or Arrow format.
post /cube/dataexport/download
Sends to the client the result of a MDX query in CSV or Arrow format.
Body
Type: application/json
Schema:
{
"$schema": "http://json-schema.org/draft-04/schema#",
"title" : "Data export order",
"type" : "object",
"properties" : {
"mdxQuery" : {
"type" : "object",
"required" : true,
"properties" : {
"mdx" : {
"type" : "string",
"required" : true,
"description" : "the MDX statement"
},
"context" : {
"type" : "object",
"required" : false,
"title" : "Context values",
"description" : "A mapping from the context value names to their value (in its string representation)."
}
}
},
"outputConfiguration": {
"type": "object",
"required": "true",
"title": "object",
"properties" : {
"format": {
"type": "string",
"required": "true",
"description": "The format of the output:'arrow' or 'csvTabular' or 'csvPivotTable'."
},
"separator":{
"type": "string",
"required": "false",
"description": "The separator for a csv output. The default value is the comma."
},
"charset": {
"type": "string",
"required": "false",
"description": "The charset for a csv output. The default value is UTF-8"
},
"columnFormatters": {
"type": "string",
"required": "true",
"title": "The list of column formatters",
"properties" : {
"columnName": {
"type":"string",
"required": "false",
"description": "The column name to format"
},
"formatter": {
"type":"string",
"required": "false",
"description" : "The name of the formatter to use"
}
}
}
}
}
}
}
Example:
// This is an example of an order to download a MDX SELECT query, witha time limit context value in a csv pivotTable format using the pipe (|) separator
{
"jsonMdxQuery": {
"mdx": "SELECT [Measures].[contributors.COUNT]} ON 0 FROM [allData]",
"context" : {
"queriesTimeLimit": "50"
}
},
"outputConfiguration": {
"format": "csvPivotTable",
"separator": "|"
}
}
HTTP status code 200
The result of the MDX query.
Body
Type: application/octet-stream
Example:
// If the download succeeds, the query result is returned as a string
{
"contributors.COUNT\n100"
}
HTTP status code 401
Resource only available to connected user
Body
Type: application/json
Example:
No content
HTTP status code 500
The download failed.
Body
Type: application/json
Example:
{
"The cube does not exist"
}
Exports the result of a MDX query in CSV or Arrow format to a file in the server or in the cloud.
post /cube/dataexport/export
Exports the result of a MDX query in CSV or Arrow format to a file in the server or in the cloud.
Body
Type: application/json
Schema:
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type" : "object",
"properties" : {
"mdxQuery" : {
"type" : "object",
"required" : true,
"properties" : {
"mdx" : {
"type" : "string",
"required" : true,
"description" : "the MDX statement"
},
"context" : {
"type" : "object",
"required" : false,
"title" : "Context values",
"description" : "A mapping from the context value names to their value (in its string representation)."
}
}
},
"outputConfiguration": {
"type": "object",
"required": "true",
"properties" : {
"format": {
"type": "string",
"required": "true",
"description": "The format of the output:'arrow' or 'csvTabular' or 'csvPivotTable'."
},
"separator":{
"type": "string",
"required": "false",
"description": "The separator for a csv output. The default value is the comma."
},
"charset": {
"type": "string",
"required": "false",
"description": "The charset for a csv output. The default value is UTF-8"
},
"columnFormatters": {
"type": "array",
"required": "true",
"properties" : {
"columnName": {
"type":"string",
"required": "false",
"description": "The column name to format"
},
"formatter": {
"type":"string",
"required": "false",
"description" : "The name of the formatter to use"
}
}
},
"fileConfiguration": {
"type":"object",
"required": "false",
"description" : "The file configuration",
"properties" : {
"fileName": {
"type":"string",
"required": "false",
"description" : "the name of the file to export without extension. Default value is ‘result’."
},
"directoryName": {
"type":"string",
"required": "false",
"description" : "the name of the directory the files should be created in. Default value is 'result'."
},
"useZipFile": {
"type":"boolean",
"required": "false",
"description" : "True if the file(s) should be zipped. Default value is false"
},
"useMultipleFiles": {
"type":"boolean",
"required": "false",
"description" : "Creates multiple files if needed. The different files will be numbered like ‘fileNameX.txt’. When used with the zipFiles option, one archive will be created with the different files in it. The archive will also be named ‘fileName’ Default value is false."
},
"maxLinesPerFile": {
"type":"number",
"required": "false",
"description" : "Maximum number of rows per files. Default value is 1000000."
},
"maxBatchesPerFile": {
"type":"number",
"required": "false",
"description" : "Maximum number of Arrow batches per files. Default value is 1000."
}
}
}
}
}
}
}
Example:
// This is an example of an order to export a MDX SELECT query, without context value in a csv pivotTable format to a unique text file named export-0406.txt in the export directory
{
"jsonMdxQuery": {
"mdx": "SELECT [Measures].[contributors.COUNT]} ON 0 FROM [allData]"
},
"outputConfiguration": {
"format": "csvPivotTable",
"fileConfiguration": {
"directoryName": "export",
"fileName": "export-0406",
"useZipFile": false,
"useMultipleFiles": false,
"maxLinesPerFile": 100000,
"maxBatchesPerFile": 10000
}
}
}
HTTP status code 200
The export was a success.
Body
Type: application/json
Example:
// If the export succeeds, the answer is empty
{
}
HTTP status code 401
Resource only available to connected user
Body
Type: application/json
Example:
No content
HTTP status code 500
The export failed.
Body
Type: application/json
Example:
{
"The cube does not exist"
}
/cube/discovery
API to access an ActivePivot cube.
Discover the topology of all cubes
get /cube/discovery
Discover the topology of all cubes
HTTP status code 200
The ActivePivot's catalogs and their content.
Body
Type: application/json
Example:
{
"catalogs": [
{
"name": "Sandbox",
"cubes": [
{
"name": "EquityDerivativesCube",
"caption": "EquityDerivativesCube",
"measures": [
{
"name": "delta.SUM",
"caption": "delta.SUM",
"folder": "Sensitivities",
"type": "double",
"visible": true
},
{
"name": "gamma.SUM",
"caption": "gamma.SUM",
"folder": "Sensitivities",
"type": "double",
"visible": true
}, ... ],
"dimensions": [
{
"name": "Underlyings",
"caption": "Underlyings",
"description": "Dimension of underlyings",
"type": "REGULAR",
"defaultHierarchy": "Products",
"visible": true,
"measureGroups": [],
"hierarchies": [
{
"name": "Underlyings",
"caption": "Underlyings",
"slicing": false,
"visible": true,
"levels": [
{
"name": "ALL",
"caption": "ALL",
"type": "ALL"
},
{
"name": "UnderlierType",
"caption": "UnderlierType",
"type": "REGULAR"
},
{
"name": "UnderlierCode",
"caption": "UnderlierCode",
"type": "REGULAR"
}
]
}, ... ],
"kpis": [
{
"name": "PnL Monitoring",
"caption": "PnL Monitoring",
"description": "Pnl Monitoring using existing measures",
"value": "[Measures].[pnl.SUM]",
"goal": "[Measures].[PnL Limit]",
"status": "[Measures].[PnL Limit Status]",
"statusPresenter": "Shapes"
}, ... ],
"sets" : [ {
"name" : "Top2Underlyings",
"caption" : "Top two of underlyings",
"description" : "The two elements of underlyings which have the highest value",
"expression" : "TopCount([Underlyings].[ALL].[AllMember].Children, 2, [Measures].[contributors.COUNT])"
} ],
"defaultMembers" : [ {
"dimension" : "Measures",
"hierarchy" : "Measures",
"path" : [ "contributors.COUNT" ],
"captionPath" : [ "Count" ]
}, ... ],
"contextValues" : [ {
"name" : "queriesTimeLimit",
"value" : "30",
}, {
"name" : "mdx.aggressiveFormulaEvaluation",
"value" : "true",
}, {
"name" : "referenceCurrency",
"value" : "ZAR",
}, {
"name" : "mdx.cubeFormatter",
"value" : "en-US",
} ]
}
]
}
]
}
],
"contextValues" : [ {
"name" : "queriesTimeLimit",
"type" : "INTEGER",
"description" : "The amount of time (in seconds) after which a running query is cancelled and its resources reclaimed."
}, {
"name" : "mdx.aggressiveFormulaEvaluation",
"type" : "BOOL",
"category" : "mdx"
}, {
"name" : "referenceCurrency",
"type" : "ENUM(CHF,JPY,EUR,GBP,USD,ZAR)"
}, {
"name" : "mdx.cubeFormatter",
"type" : "ALL",
"category" : "mdx"
}, {
"name" : "drillthrough.behavior",
"type" : "ENUM(SILENT,WARN,THROW)",
"category" : "drillthrough"
}, {
"name" : "epoch.strict",
"type" : "BOOL"
"category" : "epoch"
}, {
"name" : "mdx.lightcrossjoin",
"type" : "BOOL",
"category" : "mdx"
} ]
}
HTTP status code 401
Resource only available to connected user
Body
Type: application/json
Example:
No content
/cube/query
API to access an ActivePivot cube.
Queries the cube using an MDX query (either SELECT or DRILLTHROUGH).
post /cube/query/mdx
Queries the cube using an MDX query (either SELECT or DRILLTHROUGH).
Body
Type: application/json
Schema:
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"mdx": {
"type": "string",
"required": "true"
},
"context": {
"title": "Map<String,String>",
"type": "object",
"description": "A mapping from the context value names to their value (in its string representation).",
"required": "false"
}
}
}
Example:
// This is an example of a MDX SELECT query, with a specific context value
{
"mdx" : "SELECT {[Measures].[pnl.SUM]} ON COLUMNS, {[Booking].[ALL].[AllMember].[DeskA].[0], [Booking].[ALL].[AllMember].[DeskA].[1] } DIMENSION PROPERTIES [Booking].[Desk].[BookId].[owner] ON ROWS FROM [EquityDerivativesCube] CELL PROPERTIES VALUE, FORMATTED_VALUE, FORMAT_STRING, FORE_COLOR",
"context" : {
"mdx.measureAliases.pnl.SUM" : "Custom PnL Caption"
}
}
// This is an example of a MDX DRILLTHROUGH query, with no specific context value
{
"mdx" : "DRILLTHROUGH MAXROWS 2 SELECT {[Measures].[pnl.SUM]} ON COLUMNS, {[Booking].[ALL].[AllMember].[DeskA]} ON ROWS FROM [EquityDerivativesCube] RETURN TradeId, CounterParty, Date, pnl, Currency"
}
HTTP status code 200
The result of the MDX query.
Body
Type: application/json
Schema:
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"description": "The schema of the data property is consistent with the value of the type property",
"oneOf": [
{"$ref": "#/definitions/cellSetData"},
{"$ref": "#/definitions/drillthroughData"}
],
"definitions": {
"cellSetData": {
"type": "object",
"properties": {
"epoch": {
"$ref": "#/definitions/epoch"
},
"cube": {
"$ref": "#/definitions/cube"
},
"axes": {
"type": "array",
"description": "The cellset axes : rows, columns, pages...",
"items": [
{
"type": "object",
"properties": {
"id": {
"type": "integer",
"description": "The index of the axis"
},
"hierarchies": {
"type": "array",
"description": "The hierarchies represented on the axis",
"items": [
{
"type": "object",
"properties": {
"dimension": {
"type": "string"
},
"hierarchy": {
"type": "string"
}
}
}
]
},
"positions": {
"type": "array",
"description": "The different positions that can exist along the axis",
"items": [
{
"type": "array",
"items": {
"type": "object",
"properties": {
"namePath": {
"$ref": "#/definitions/stringArray",
"description": "The path to the member expressed by the position (using standard name)"
},
"captionPath": {
"$ref": "#/definitions/stringArray",
"description": "The path to the member expressed by the position (using captions)"
},
"properties": {
"title": "Map<String,String>",
"type": "object",
"description": "A mapping from the property names to their value. Which properties are sent will depend on the properties asked for in the MDX query."
}
}
}
}
]
}
}
}
]
},
"cells": {
"id": "cells",
"type": "array",
"items": [
{
"type": "object",
"properties": {
"ordinal": {
"type": "integer"
},
"value": {
"$ref": "#/definitions/actualData"
},
"formattedValue": {
"type": "string"
},
"properties": {
"type": "object"
}
}
}
]
},
"defaultMembers": {
"type": "array",
"items": [
{
"type": "object",
"properties": {
"dimension": {
"type": "string"
},
"hierarchy": {
"type": "string"
},
"path": {
"$ref": "#/definitions/stringArray"
},
"captionPath": {
"$ref": "#/definitions/stringArray"
}
}
}
]
}
}
},
"drillthroughData": {
"type": "object",
"properties": {
"epoch": {
"$ref": "#/definitions/epoch"
},
"cube": {
"$ref": "#/definitions/cube"
},
"result": {
"type": "object",
"properties": {
"headers": {
"type": "array",
"items": [
{
"type": "object",
"properties": {
"name": {
"type": "string"
},
"caption": {
"type": "string"
},
"type": {
"type": "string"
}
}
}
]
},
"rows": {
"type": "array",
"items": [
{
"type": "array",
"description": "The contents of a row. The types are compatible with the headers, in the same order.",
"items": [
{
"$ref": "#/definitions/actualData"
}
]
}
]
}
}
}
}
}
},
"epoch" :{
"type": "integer",
"description": "Epoch at which the query was run"
},
"cube": {
"type": "string",
"description": "Name of the cube on which the query was run"
},
"stringArray": {
"type": "array",
"items":[
{"type": "string"}
]
},
"actualData": {
"type": [ "string", "boolean", "integer", "number", "array", "object" ]
}
}
Example:
// This is the result of the example MDX SELECT request
{
"epoch" : 6971,
"cube" : "EquityDerivativesCube",
"axes" : [ {
"id" : 0,
"hierarchies" : [ {
"dimension" : "Measures",
"hierarchy" : "Measures"
} ],
"positions" : [ [ {
"namePath" : [ "pnl.SUM" ],
"captionPath" : [ "Custom PnL Caption" ],
"properties" : {
"DISPLAY_INFO" : 0
}
} ] ]
}, {
"id" : 1,
"hierarchies" : [ {
"dimension" : "Booking",
"hierarchy" : "Desk"
} ],
"positions" : [ [ {
"namePath" : [ "AllMember", "DeskA", "0" ],
"captionPath" : [ "AllMember", "DeskA", "0" ],
"properties" : {
"owner" : "John",
"DISPLAY_INFO" : 0
}
} ], [ {
"namePath" : [ "AllMember", "DeskA", "1" ],
"captionPath" : [ "AllMember", "DeskA", "1" ],
"properties" : {
"owner" : "Will",
"DISPLAY_INFO" : 131072
}
} ] ]
} ],
"cells" : [ {
"ordinal" : 0,
"value" : -892.6248419154866,
"formattedValue" : "-892.62",
"properties" : {
"FORMAT_STRING" : "#,###.00;-#,###.00",
"FORE_COLOR" : 255
}
}, {
"ordinal" : 1,
"value" : 1675.077835534161,
"formattedValue" : "1,675.08",
"properties" : {
"FORMAT_STRING" : "#,###.00;-#,###.00",
"FORE_COLOR" : null
}
} ],
"defaultMembers" : [ {
"dimension" : "Measures",
"hierarchy" : "Measures",
"path" : [ "contributors.COUNT" ],
"captionPath" : [ "Count" ]
}, {
"dimension" : "Time",
"hierarchy" : "HistoricalDates",
"path" : [ "Fri Apr 08 02:00:00 CEST 2016" ],
"captionPath" : [ "2016-04-08" ]
}, {
"dimension" : "Epoch",
"hierarchy" : "Epoch",
"path" : [ "master" ],
"captionPath" : [ "master" ]
} ]
}
// This is the result of the example MDX DRILLTHROUGH request
{
"epoch" : 4262,
"cube" : "EquityDerivativesCube",
"result" : {
"headers" : [ {
"name" : "TradeId",
"caption" : "TradeId",
"type" : "long"
}, {
"name" : "CounterParty",
"caption" : "CounterParty",
"type" : "String"
}, {
"name" : "Date",
"caption" : "Date",
"type" : "Date"
}, {
"name" : "pnl",
"caption" : "pnl",
"type" : "double"
}, {
"name" : "Currency",
"caption" : "Currency",
"type" : "String"
} ],
"rows" : [ [ 690, "Vale R Doce-PNA (Companhia Vale do Rio Doce SA-CVRD) (ADR)", 1627478189307, 862.5853303709332, "GBP" ], [ 374, "Vale R Doce-PNA (Companhia Vale do Rio Doce SA-CVRD) (ADR)", 1711631789307, 884.5700612428302, "ZAR" ] ]
}
}
HTTP status code 400
When there is an error with the given MDX query
Body
Type: application/json
Schema:
{
"errorChain": {
"description": "Chain of error messages, from the root cause to the top",
"type": "array",
"items": { "$ref": "errorLink" },
"minItems": 1,
"required": true
},
"stackTrace": {
"description": "Technical stack trace as a string. It generally include line breaks and tabulations for a better display",
"type": "string",
"required": true
},
"definitions": {
"errorLink": {
"type": {
"description": "Type of an error link",
"type": "string",
"required": true
},
"message": {
"description": "Message of a given link",
"type": "string",
"required": true
}
}
}
}
Example:
{
"errorChain" : [ {
"type" : "MdxException",
"message" : "Cannot resolve element [Booking].[Desk].[absent]. Hint: absent is not a level of the Desk hierarchy"
}, {
"type" : "MdxException",
"message" : "SELECT NON EMPTY {[Booking].[Desk].[absent]} ON ROWS FROM [EquityDerivativesCube] WHERE ([Measures].[pnl.SUM])"
}...,
{
"type" : "BadArgumentException",
"message" : "[400] com.quartetfs.pivot.mdx.MdxException: Error with the following query: SELECT NON EMPTY {[Booking].[Desk].[absent]} ON ROWS FROM [EquityDerivativesCube] WHERE ([Measures].[pnl.SUM])"
} ],
"stackTrace" : "com.qfs.fwk.services.BadArgumentException: [400] com.quartetfs.pivot.mdx.MdxException: Error with the following query: SELECT NON EMPTY {[Booking].[Desk].[absent]} ON ROWS FROM [EquityDerivativesCube] WHERE ([Measures].[pnl.SUM])\r\n\tat com.qfs.pivot.rest.query.impl.JsonQueryService.executeQuery(JsonQueryService.java:169)\r\n\tat com.qfs.pivot.rest.query.impl.JsonQueryService.executeMdxQuery(JsonQueryService.java:103)\r\n\tat com.qfs.pivot.rest.query.impl.QueriesRestService.mdxQuery(QueriesRestService.java:54)\r\n\tat ... "
}
HTTP status code 401
Resource only available to connected user
Body
Type: application/json
Example:
No content
Gets the possible column headers for a given drillthrough MDX query. The request has the same format as the request for the actual drillthrough query, just the URL changes.
post /cube/query/drillthroughheaders
Gets the possible column headers for a given drillthrough MDX query. The request has the same format as the request for the actual drillthrough query, just the URL changes.
Body
Type: application/json
Schema:
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"mdx": {
"type": "string",
"required": "true"
},
"context": {
"title": "Map<String,String>",
"type": "object",
"description": "A mapping from the context value names to their value (in its string representation).",
"required": "false"
}
}
}
Example:
{
"mdx" : "DRILLTHROUGH SELECT {[Measures].[pnl.SUM]} ON COLUMNS, {[Booking].[ALL].[AllMember].[DeskA]} ON ROWS FROM [EquityDerivativesCube]"
}
HTTP status code 200
The result of the MDX query.
Body
Type: application/json
Schema:
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "array",
"items": [
{
"type": "object",
"properties": {
"name": {
"type": "string"
},
"caption": {
"type": "string"
},
"type": {
"type": "string"
},
"visible": {
"type": "boolean"
}
}
}
]
}
Example:
[
{
"name" : "Desk",
"caption" : "Desk",
"type" : "String",
"visible" : true
}, {
"name" : "Currency",
"caption" : "Currency",
"type" : "String",
"visible" : true
}, {
"name" : "AsOfDate",
"caption" : "AsOfDate",
"type" : "Date",
"visible" : true
}, {
"name" : "Book ID",
"caption" : "Book ID",
"type" : "Object",
"visible" : true
}, {
"name" : "BookId",
"caption" : "BookId",
"type" : "Object",
"visible" : false
}, ...
]
HTTP status code 400
When there is an error with the given MDX query
Body
Type: application/json
Schema:
{
"errorChain": {
"description": "Chain of error messages, from the root cause to the top",
"type": "array",
"items": { "$ref": "errorLink" },
"minItems": 1,
"required": true
},
"stackTrace": {
"description": "Technical stack trace as a string. It generally include line breaks and tabulations for a better display",
"type": "string",
"required": true
},
"definitions": {
"errorLink": {
"type": {
"description": "Type of an error link",
"type": "string",
"required": true
},
"message": {
"description": "Message of a given link",
"type": "string",
"required": true
}
}
}
}
Example:
{
"errorChain" : [ {
"type" : "MdxException",
"message" : "Cannot resolve element [Booking].[Desk].[absent]. Hint: absent is not a level of the Desk hierarchy"
}, {
"type" : "MdxException",
"message" : "SELECT NON EMPTY {[Booking].[Desk].[absent]} ON ROWS FROM [EquityDerivativesCube] WHERE ([Measures].[pnl.SUM])"
}...,
{
"type" : "BadArgumentException",
"message" : "[400] com.quartetfs.pivot.mdx.MdxException: Error with the following query: SELECT NON EMPTY {[Booking].[Desk].[absent]} ON ROWS FROM [EquityDerivativesCube] WHERE ([Measures].[pnl.SUM])"
} ],
"stackTrace" : "com.qfs.fwk.services.BadArgumentException: [400] com.quartetfs.pivot.mdx.MdxException: Error with the following query: SELECT NON EMPTY {[Booking].[Desk].[absent]} ON ROWS FROM [EquityDerivativesCube] WHERE ([Measures].[pnl.SUM])\r\n\tat com.qfs.pivot.rest.query.impl.JsonQueryService.executeQuery(JsonQueryService.java:169)\r\n\tat com.qfs.pivot.rest.query.impl.JsonQueryService.executeMdxQuery(JsonQueryService.java:103)\r\n\tat com.qfs.pivot.rest.query.impl.QueriesRestService.mdxQuery(QueriesRestService.java:54)\r\n\tat ... "
}
HTTP status code 401
Resource only available to connected user
Body
Type: application/json
Example:
No content
Gets the query plans for an MDX SELECT query. Note that the given MDX is run and the result is computed but only the query plans are returned.
Gets the query plans for an MDX SELECT query. Note that the given MDX is run and the result is computed but only the query plans are returned.
get /cube/query/mdx/queryplan
Gets the query plans for an MDX SELECT query. Note that the given MDX is run and the result is computed but only the query plans are returned.
Query Parameters
- mdx: required (string)
The query to run
- timeout: (integer)
The query timeout limit in seconds.
- asSummary: (string)
Whether ask for a summary or full query plan export.
HTTP status code 200
The query plans resulting from the MDX SELECT query.
Body
Type: application/json - Example - Full query plan
Example:
// This is the query plan of the example MDX SELECT request
[
{
"planInfo": {
"pivotType": "ActivePivotVersion",
"pivotId": "EquityDerivativesCube",
"epoch": "75",
"branch": "master",
"retrieverType": "ActivePivotAggregatesRetriever",
"mdxPass": "SelectPass_0",
"contextValues": {
"ISubCubeProperties": "null",
"IBranch": "null",
"IAsOfEpoch": "null",
"IQueryMonitoring": "QueryMonitoring [printExecutionPlan=false, printExecutionTiming=false, queryPlanExport=true, queryPlanSummary=false]"
},
"rangeSharing": 1000000,
"missedPrefetchBehavior": "WARN",
"aggregatesCache": "capacity=1000, size=0",
"globalTimings": {
"executionContextCreationTime": 0,
"finalizationTime": 0,
"planningTime": 0,
"queryExecutionTime": 2
},
"continuous": false
},
"retrievals": [
{
"retrId": 0,
"type": "PrimitiveAnalysisAggregationRetrieval",
"partitioning": "Constant partitioning",
"location": [
{
"dimension": "Geography",
"hierarchy": "City",
"level": [
"ALL",
"City"
],
"path": [
"AllMember",
"*"
]
},
{
"dimension": "Booking",
"hierarchy": "Desk",
"level": [
"ALL",
"LegalEntity",
"BusinessUnit",
"Desk"
],
"path": [
"AllMember",
"*",
"*",
"*"
]
},
{
"dimension": "Time",
"hierarchy": "HistoricalDates",
"level": [
"AsOfDate"
],
"path": [
"2020-02-13"
]
},
{
"dimension": "TargetCurrency",
"hierarchy": "TargetCurrency",
"level": [
"TargetCurrency"
],
"path": [
"ZAR"
]
}
],
"measures": [
"pnl.SUM"
],
"filterId": 0,
"measureProvider": "SimpleMeasuresProvider",
"resultSize": 36,
"timingInfo": {
"startTime": [
1
],
"elapsedTime": [
0
]
},
"underlyingDataNodes": []
},
{
"retrId": 1,
"type": "PrimitiveResultsMerger",
"partitioning": "Constant partitioning",
"location": [
{
"dimension": "Currency",
"hierarchy": "Currency",
"level": [
"ALL",
"Currency"
],
"path": [
"AllMember",
"*"
]
},
{
"dimension": "Geography",
"hierarchy": "City",
"level": [
"ALL",
"City"
],
"path": [
"AllMember",
"*"
]
},
{
"dimension": "Booking",
"hierarchy": "Desk",
"level": [
"ALL",
"LegalEntity",
"BusinessUnit",
"Desk"
],
"path": [
"AllMember",
"*",
"*",
"*"
]
},
{
"dimension": "Time",
"hierarchy": "HistoricalDates",
"level": [
"AsOfDate"
],
"path": [
"2020-02-13"
]
}
],
"measures": [
"pnl.SUM"
],
"filterId": 0,
"measureProvider": "SimpleMeasuresProvider",
"resultSize": 166,
"timingInfo": {
"startTime": [
1
],
"elapsedTime": [
0
]
},
"underlyingDataNodes": []
},
{
"retrId": 2,
"type": "PartialPrimitiveAggregatesRetrieval",
"partitioning": "value(AsOfDate)",
"location": [
{
"dimension": "Currency",
"hierarchy": "Currency",
"level": [
"ALL",
"Currency"
],
"path": [
"AllMember",
"*"
]
},
{
"dimension": "Geography",
"hierarchy": "City",
"level": [
"ALL",
"City"
],
"path": [
"AllMember",
"*"
]
},
{
"dimension": "Booking",
"hierarchy": "Desk",
"level": [
"ALL",
"LegalEntity",
"BusinessUnit",
"Desk"
],
"path": [
"AllMember",
"*",
"*",
"*"
]
},
{
"dimension": "Time",
"hierarchy": "HistoricalDates",
"level": [
"AsOfDate"
],
"path": [
"2020-02-13"
]
}
],
"measures": [
"pnl.SUM"
],
"filterId": 0,
"measureProvider": "SimpleMeasuresProvider",
"resultSize": 0,
"timingInfo": {
"startTime": [
0,
0,
0,
0
],
"elapsedTime": [
0,
0,
0,
1
]
},
"underlyingDataNodes": []
}
],
"dependencies": {
"-1": [
0
],
"0": [
1
],
"1": [
2
]
},
"databaseRetrievals" : [
{
"table" : "Joined",
"fields" : [ "tag", "type" ],
"joinedMeasure" : [ "value3.SUM" ],
"condition" : "TRUE",
"retrievalId" : 0,
"resultSize" : 4,
"timingInfo" : {
"startTime" : [ 4 ],
"elapsedTime" : [ 15 ]
}
}
],
"databaseDependencies" : {
"0" : [ 0 ]
},
"queryFilters": [
{
"id": 0,
"description": "CubeFilter [underlying=SubCubeProperties [accessGranted=true, grantedMeasures=[], grantedMembers={}, subCubeTrees={}],hash=1212813]"
}
],
"querySummary": {
"measures": [
"pnl.SUM"
],
"totalRetrievals": 3,
"retrievalsCountByType": {
"DatabaseRetrieval": 1,
"PrimitiveAnalysisAggregationRetrieval": 1,
"PartialPrimitiveAggregatesRetrieval": 1,
"PrimitiveResultsMerger": 1
},
"retrievalsCountByPartitioning": {
"Constant partitioning": 2,
"value(AsOfDate)": 1
},
"resultSizeByPartitioning": {
"Constant partitioning": 202,
"value(AsOfDate)": 0
},
"partialProviders" : [ "PARTIAL_JIT" ],
"totalDatabaseResultSize": 45
}
}
]
Type: application/json - Example - Summarized query plan
Example:
// This is the query plan of the example MDX SELECT request
[
{
"planInfo": {
"pivotType": "ActivePivotVersion",
"pivotId": "EquityDerivativesCube",
"epoch": "10",
"branch": "master",
"retrieverType": "ActivePivotAggregatesRetriever",
"mdxPass": "SelectPass_0",
"contextValues": {
"ISubCubeProperties": "null",
"IBranch": "null",
"IAsOfEpoch": "null",
"IQueryMonitoring": "QueryMonitoring [printExecutionPlan=false, printExecutionTiming=false, queryPlanExport=true, queryPlanSummary=true]"
},
"rangeSharing": 1000000,
"missedPrefetchBehavior": "WARN",
"aggregatesCache": "capacity=1000, size=0",
"globalTimings": {
"executionContextCreationTime": 0,
"finalizationTime": 1,
"planningTime": 0,
"queryExecutionTime": 2
},
"continuous": false
},
"retrievals": [],
"dependencies": {},
"queryFilters": [
{
"id": 0,
"description": "CubeFilter [underlying=SubCubeProperties [accessGranted=true, grantedMeasures=[], grantedMembers={}, subCubeTrees={}],hash=1212813]"
}
],
"querySummary": {
"measures": [
"pnl.SUM"
],
"totalRetrievals": 3,
"retrievalsCountByType": {
"DatabaseRetrieval": 1,
"PrimitiveAnalysisAggregationRetrieval": 1,
"PartialPrimitiveAggregatesRetrieval": 1,
"PrimitiveResultsMerger": 1
},
"retrievalsCountByPartitioning": {
"Constant partitioning": 2,
"value(AsOfDate)": 1
},
"resultSizeByPartitioning": {
"Constant partitioning": 200,
"value(AsOfDate)": 0
},
"partialProviders" : [ "PARTIAL_JIT" ],
"totalDatabaseResultSize": 1
}
}
]
HTTP status code 400
When there is an error with the given MDX query
Body
Type: application/json
Schema:
{
"errorChain": {
"description": "Chain of error messages, from the root cause to the top",
"type": "array",
"items": { "$ref": "errorLink" },
"minItems": 1,
"required": true
},
"stackTrace": {
"description": "Technical stack trace as a string. It generally include line breaks and tabulations for a better display",
"type": "string",
"required": true
},
"definitions": {
"errorLink": {
"type": {
"description": "Type of an error link",
"type": "string",
"required": true
},
"message": {
"description": "Message of a given link",
"type": "string",
"required": true
}
}
}
}
Example:
{
"errorChain" : [ {
"type" : "MdxException",
"message" : "Cannot resolve element [Booking].[Desk].[absent]. Hint: absent is not a level of the Desk hierarchy"
}, {
"type" : "MdxException",
"message" : "SELECT NON EMPTY {[Booking].[Desk].[absent]} ON ROWS FROM [EquityDerivativesCube] WHERE ([Measures].[pnl.SUM])"
}...,
{
"type" : "BadArgumentException",
"message" : "[400] com.quartetfs.pivot.mdx.MdxException: Error with the following query: SELECT NON EMPTY {[Booking].[Desk].[absent]} ON ROWS FROM [EquityDerivativesCube] WHERE ([Measures].[pnl.SUM])"
} ],
"stackTrace" : "com.qfs.fwk.services.BadArgumentException: [400] com.quartetfs.pivot.mdx.MdxException: Error with the following query: SELECT NON EMPTY {[Booking].[Desk].[absent]} ON ROWS FROM [EquityDerivativesCube] WHERE ([Measures].[pnl.SUM])\r\n\tat com.qfs.pivot.rest.query.impl.JsonQueryService.executeQuery(JsonQueryService.java:169)\r\n\tat com.qfs.pivot.rest.query.impl.JsonQueryService.executeMdxQuery(JsonQueryService.java:103)\r\n\tat com.qfs.pivot.rest.query.impl.QueriesRestService.mdxQuery(QueriesRestService.java:54)\r\n\tat ... "
}
HTTP status code 401
Resource only available to connected user
Body
Type: application/json
Example:
No content
post /cube/query/mdx/queryplan
Gets the query plans for an MDX SELECT query. Note that the given MDX is run and the result is computed but only the query plans are returned.
Body
Type: application/json
Schema:
{
"$schema": "http://json-schema.org/draft-07/schema",
"$id": "http://example.com/example.json",
"type": "object",
"title": "The Root Schema",
"description": "The root schema comprises the entire JSON document.",
"required": [
"mdx"
],
"properties": {
"mdx": {
"$id": "#/properties/mdx",
"type": "string",
"title": "The Mdx Schema",
"description": "The MDX query.",
"default": "",
"examples": [
"SELECT NON EMPTY [Measures].[pnl.SUM] ON COLUMNS, NON EMPTY Crossjoin( [Booking].[Desk].[Desk].Members, [Geography].[City].[City].Members ) ON ROWS FROM [EquityDerivativesCube] CELL PROPERTIES VALUE, FORMATTED_VALUE, BACK_COLOR, FORE_COLOR, FONT_FLAGS"
]
},
"context": {
"$id": "#/properties/context",
"type": "object",
"title": "The Context Schema",
"description": "Context values of the query, provided in the flat-contextvalue format.",
"default": {},
"examples": [
{
"monitoring.queryPlanSummary": "true"
}
],
"required": [
]
},
"queriesTimeLimit": {
"$id": "#/properties/queriesTimeLimit",
"type": "string",
"title": "The Queriestimelimit Schema",
"description": "The query time limit in seconds.",
"default": "30",
"examples": [
"40"
]
}
}
}
Example:
// This is an example of a MDX SELECT query, with a specific context value and query time limit
{
"mdx" : "SELECT NON EMPTY [Measures].[pnl.SUM] ON COLUMNS, NON EMPTY Crossjoin( [Booking].[Desk].[Desk].Members, [Geography].[City].[City].Members ) ON ROWS FROM [EquityDerivativesCube] CELL PROPERTIES VALUE, FORMATTED_VALUE, BACK_COLOR, FORE_COLOR, FONT_FLAGS",
"context" : {
"monitoring.queryPlanSummary" : "true"
},
"queriesTimeLimit" : "40"
}
HTTP status code 200
The query plans resulting from the MDX SELECT query.
Body
Type: application/json - Example - Full query plan
Example:
// This is the query plan of the example MDX SELECT request
[
{
"planInfo": {
"pivotType": "ActivePivotVersion",
"pivotId": "EquityDerivativesCube",
"epoch": "75",
"branch": "master",
"retrieverType": "ActivePivotAggregatesRetriever",
"mdxPass": "SelectPass_0",
"contextValues": {
"ISubCubeProperties": "null",
"IBranch": "null",
"IAsOfEpoch": "null",
"IQueryMonitoring": "QueryMonitoring [printExecutionPlan=false, printExecutionTiming=false, queryPlanExport=true, queryPlanSummary=false]"
},
"rangeSharing": 1000000,
"missedPrefetchBehavior": "WARN",
"aggregatesCache": "capacity=1000, size=0",
"globalTimings": {
"executionContextCreationTime": 0,
"finalizationTime": 0,
"planningTime": 0,
"queryExecutionTime": 2
},
"continuous": false
},
"retrievals": [
{
"retrId": 0,
"type": "PrimitiveAnalysisAggregationRetrieval",
"partitioning": "Constant partitioning",
"location": [
{
"dimension": "Geography",
"hierarchy": "City",
"level": [
"ALL",
"City"
],
"path": [
"AllMember",
"*"
]
},
{
"dimension": "Booking",
"hierarchy": "Desk",
"level": [
"ALL",
"LegalEntity",
"BusinessUnit",
"Desk"
],
"path": [
"AllMember",
"*",
"*",
"*"
]
},
{
"dimension": "Time",
"hierarchy": "HistoricalDates",
"level": [
"AsOfDate"
],
"path": [
"2020-02-13"
]
},
{
"dimension": "TargetCurrency",
"hierarchy": "TargetCurrency",
"level": [
"TargetCurrency"
],
"path": [
"ZAR"
]
}
],
"measures": [
"pnl.SUM"
],
"filterId": 0,
"measureProvider": "SimpleMeasuresProvider",
"resultSize": 36,
"timingInfo": {
"startTime": [
1
],
"elapsedTime": [
0
]
},
"underlyingDataNodes": []
},
{
"retrId": 1,
"type": "PrimitiveResultsMerger",
"partitioning": "Constant partitioning",
"location": [
{
"dimension": "Currency",
"hierarchy": "Currency",
"level": [
"ALL",
"Currency"
],
"path": [
"AllMember",
"*"
]
},
{
"dimension": "Geography",
"hierarchy": "City",
"level": [
"ALL",
"City"
],
"path": [
"AllMember",
"*"
]
},
{
"dimension": "Booking",
"hierarchy": "Desk",
"level": [
"ALL",
"LegalEntity",
"BusinessUnit",
"Desk"
],
"path": [
"AllMember",
"*",
"*",
"*"
]
},
{
"dimension": "Time",
"hierarchy": "HistoricalDates",
"level": [
"AsOfDate"
],
"path": [
"2020-02-13"
]
}
],
"measures": [
"pnl.SUM"
],
"filterId": 0,
"measureProvider": "SimpleMeasuresProvider",
"resultSize": 166,
"timingInfo": {
"startTime": [
1
],
"elapsedTime": [
0
]
},
"underlyingDataNodes": []
},
{
"retrId": 2,
"type": "PartialPrimitiveAggregatesRetrieval",
"partitioning": "value(AsOfDate)",
"location": [
{
"dimension": "Currency",
"hierarchy": "Currency",
"level": [
"ALL",
"Currency"
],
"path": [
"AllMember",
"*"
]
},
{
"dimension": "Geography",
"hierarchy": "City",
"level": [
"ALL",
"City"
],
"path": [
"AllMember",
"*"
]
},
{
"dimension": "Booking",
"hierarchy": "Desk",
"level": [
"ALL",
"LegalEntity",
"BusinessUnit",
"Desk"
],
"path": [
"AllMember",
"*",
"*",
"*"
]
},
{
"dimension": "Time",
"hierarchy": "HistoricalDates",
"level": [
"AsOfDate"
],
"path": [
"2020-02-13"
]
}
],
"measures": [
"pnl.SUM"
],
"filterId": 0,
"measureProvider": "SimpleMeasuresProvider",
"resultSize": 0,
"timingInfo": {
"startTime": [
0,
0,
0,
0
],
"elapsedTime": [
0,
0,
0,
1
]
},
"underlyingDataNodes": []
}
],
"dependencies": {
"-1": [
0
],
"0": [
1
],
"1": [
2
]
},
"databaseRetrievals" : [
{
"table" : "Joined",
"fields" : [ "tag", "type" ],
"joinedMeasure" : [ "value3.SUM" ],
"condition" : "TRUE",
"retrievalId" : 0,
"resultSize" : 4,
"timingInfo" : {
"startTime" : [ 4 ],
"elapsedTime" : [ 15 ]
}
}
],
"databaseDependencies" : {
"0" : [ 0 ]
},
"queryFilters": [
{
"id": 0,
"description": "CubeFilter [underlying=SubCubeProperties [accessGranted=true, grantedMeasures=[], grantedMembers={}, subCubeTrees={}],hash=1212813]"
}
],
"querySummary": {
"measures": [
"pnl.SUM"
],
"totalRetrievals": 3,
"retrievalsCountByType": {
"DatabaseRetrieval": 1,
"PrimitiveAnalysisAggregationRetrieval": 1,
"PartialPrimitiveAggregatesRetrieval": 1,
"PrimitiveResultsMerger": 1
},
"retrievalsCountByPartitioning": {
"Constant partitioning": 2,
"value(AsOfDate)": 1
},
"resultSizeByPartitioning": {
"Constant partitioning": 202,
"value(AsOfDate)": 0
},
"partialProviders" : [ "PARTIAL_JIT" ],
"totalDatabaseResultSize": 45
}
}
]
Type: application/json - Example - Summarized $query plan
Example:
// This is the query plan of the example MDX SELECT request
[
{
"planInfo": {
"pivotType": "ActivePivotVersion",
"pivotId": "EquityDerivativesCube",
"epoch": "10",
"branch": "master",
"retrieverType": "ActivePivotAggregatesRetriever",
"mdxPass": "SelectPass_0",
"contextValues": {
"ISubCubeProperties": "null",
"IBranch": "null",
"IAsOfEpoch": "null",
"IQueryMonitoring": "QueryMonitoring [printExecutionPlan=false, printExecutionTiming=false, queryPlanExport=true, queryPlanSummary=true]"
},
"rangeSharing": 1000000,
"missedPrefetchBehavior": "WARN",
"aggregatesCache": "capacity=1000, size=0",
"globalTimings": {
"executionContextCreationTime": 0,
"finalizationTime": 1,
"planningTime": 0,
"queryExecutionTime": 2
},
"continuous": false
},
"retrievals": [],
"dependencies": {},
"queryFilters": [
{
"id": 0,
"description": "CubeFilter [underlying=SubCubeProperties [accessGranted=true, grantedMeasures=[], grantedMembers={}, subCubeTrees={}],hash=1212813]"
}
],
"querySummary": {
"measures": [
"pnl.SUM"
],
"totalRetrievals": 3,
"retrievalsCountByType": {
"DatabaseRetrieval": 1,
"PrimitiveAnalysisAggregationRetrieval": 1,
"PartialPrimitiveAggregatesRetrieval": 1,
"PrimitiveResultsMerger": 1
},
"retrievalsCountByPartitioning": {
"Constant partitioning": 2,
"value(AsOfDate)": 1
},
"resultSizeByPartitioning": {
"Constant partitioning": 200,
"value(AsOfDate)": 0
},
"partialProviders" : [ "PARTIAL_JIT" ],
"totalDatabaseResultSize": 1
}
}
]
HTTP status code 400
When there is an error with the given MDX query
Body
Type: application/json
Schema:
{
"errorChain": {
"description": "Chain of error messages, from the root cause to the top",
"type": "array",
"items": { "$ref": "errorLink" },
"minItems": 1,
"required": true
},
"stackTrace": {
"description": "Technical stack trace as a string. It generally include line breaks and tabulations for a better display",
"type": "string",
"required": true
},
"definitions": {
"errorLink": {
"type": {
"description": "Type of an error link",
"type": "string",
"required": true
},
"message": {
"description": "Message of a given link",
"type": "string",
"required": true
}
}
}
}
Example:
{
"errorChain" : [ {
"type" : "MdxException",
"message" : "Cannot resolve element [Booking].[Desk].[absent]. Hint: absent is not a level of the Desk hierarchy"
}, {
"type" : "MdxException",
"message" : "SELECT NON EMPTY {[Booking].[Desk].[absent]} ON ROWS FROM [EquityDerivativesCube] WHERE ([Measures].[pnl.SUM])"
}...,
{
"type" : "BadArgumentException",
"message" : "[400] com.quartetfs.pivot.mdx.MdxException: Error with the following query: SELECT NON EMPTY {[Booking].[Desk].[absent]} ON ROWS FROM [EquityDerivativesCube] WHERE ([Measures].[pnl.SUM])"
} ],
"stackTrace" : "com.qfs.fwk.services.BadArgumentException: [400] com.quartetfs.pivot.mdx.MdxException: Error with the following query: SELECT NON EMPTY {[Booking].[Desk].[absent]} ON ROWS FROM [EquityDerivativesCube] WHERE ([Measures].[pnl.SUM])\r\n\tat com.qfs.pivot.rest.query.impl.JsonQueryService.executeQuery(JsonQueryService.java:169)\r\n\tat com.qfs.pivot.rest.query.impl.JsonQueryService.executeMdxQuery(JsonQueryService.java:103)\r\n\tat com.qfs.pivot.rest.query.impl.QueriesRestService.mdxQuery(QueriesRestService.java:54)\r\n\tat ... "
}
HTTP status code 401
Resource only available to connected user
Body
Type: application/json
Example:
No content