Get ASO Compression Info
/essbase/rest/v1/applications/{applicationName}/databases/{databaseName}/settings/compressioninfo
Returns estimated compression information for the ASO cube when different dimensions are hypothetically used as the compression dimension. These estimates can help you choose the best dimension to use as the compression dimension.
If you include query parameter fetch=true
, this API initiates an internal system job which evaluates the whole cube in terms of ASO compression. To monitor the job progress, you can use Get Job List. The job type is listed as ASO Compression information, and the job stores the compression information. This job is not available to rerun. When any user calls this API without the fetch=true
parameter, the result is retrieved from the stored system job. To re-evaluate the cube for ASO compression information, call the API again with fetch=true
.
Column Name | Description |
---|---|
dimensionName | Each dimension name in the cube, hypothetically considered to be the compression dimension. |
isCompression | Indicates whether the dimension is the ASO compression dimension. There can be only one compression dimension in an ASO cube. |
storedLevel0Members | The number of leaf-level members in the dimension. A large number of stored level-0 members in a dimension indicates that it may not perform well as a compression dimension. |
averageBundleFill | Estimated average number of values per compression dimension bundle. Choosing a compression dimension that has a higher average bundle fill means that the cube compresses better. |
averageValueLength | Estimated average number of bytes required to store a value. Dimensions with a smaller average value length compress the cube better. |
level0MB | Estimated size of the compressed cube, in megabytes. A smaller expected level-0 size indicates that choosing this dimension enables better compression. Except for the scenario in which there is no compression dimension (No Compression Dimension), all estimates assume that all pages are compressed. As compressed pages require additional overhead that uncompressed pages do not, the estimated level-0 cube size for some dimensions may be larger than the value for No Compression Dimension. |
Request
-
applicationName(required): string
Application name.
-
databaseName(required): string
Database (cube) name.
-
fetch: boolean
Set fetch parameter to true if you need to re-evaluate compression info. The default value is false.
Default Value:false
Response
- application/json
- application/xml
200 Response
OK
Compression info retrieved successfully.
object
-
appName:
string
-
artifactType:
integer(int32)
-
averageBundleFill:
number(double)
Estimated average number of values per compression dimension bundle. Choosing a compression dimension that has a higher average bundle fill means that the cube compresses better.
-
averageValueLength:
number(double)
Estimated average number of bytes required to store a value. Dimensions with a smaller average value length compress the cube better.
-
dbName:
string
-
dimensionName:
string
Each dimension name in the cube, hypothetically considered to be the compression dimension.
-
isCompression:
boolean
Indicates whether the dimension is the ASO compression dimension. There can be only one compression dimension in an ASO cube.
-
level0MB:
number(double)
Estimated size of the compressed cube, in megabytes. A smaller expected level-0 size indicates that choosing this dimension enables better compression.
Except for the scenario in which there is no compression dimension (None), all estimates assume that all pages are compressed. As compressed pages require additional overhead that uncompressed pages do not, the estimated level-0 cube size for some dimensions may be larger than the value for None. -
locked:
boolean
-
lockedByUser:
string
-
name:
string
-
nodeName:
string
-
storedLevel0Members:
number(double)
The number of leaf-level members in the dimension. A large number of stored level-0 members in a dimension indicates that it may not perform well as a compression dimension.
400 Response
Bad Request
Failed to get compression info. The application or database name may be incorrect.
500 Response
Internal Server Error.
Examples
The following examples show how to evaluate estimated compression information for the Essbase aggregate storage (ASO) cube when different dimensions are hypothetically used as the compression dimension.
This example uses cURL to access the REST API from a Windows shell script. The calling user's ID and password are variables whose values are set in properties.bat
.
Script with cURL Command (No Fetch)
The following example retrieves stored compression estimation details from a system job that was run previously.
call properties.bat
curl -X GET https://myserver.example.com:9001/essbase/rest/v1/applications/ASOSamp/databases/Basic/settings/compressioninfo -H "accept:application/json" -u %User%:%Password%
Example of Response Body
The following is an example of ASO compression information returned in JSON format.
{
"compressionInfo" : [ {
"dimensionName" : "<No Compression Dimension>",
"isCompression" : false,
"storedLevel0Members" : 0.0,
"averageBundleFill" : 1.0,
"averageValueLength" : 8.0,
"level0MB" : 19.071334838867188,
"aft" : 0,
"lck" : false
}, {
"dimensionName" : "Measures",
"isCompression" : true,
"storedLevel0Members" : 5.0,
"averageBundleFill" : 4.011231448054553,
"averageValueLength" : 2.418,
"level0MB" : 6.448018309020995,
"aft" : 0,
"lck" : false
}, {
"dimensionName" : "Years",
"isCompression" : false,
"storedLevel0Members" : 2.0,
"averageBundleFill" : 1.0060362173038229,
"averageValueLength" : 2.22,
"level0MB" : 16.863827831268313,
"aft" : 0,
"lck" : false
}, {
"dimensionName" : "Time",
"isCompression" : false,
"storedLevel0Members" : 12.0,
"averageBundleFill" : 1.0836081053886284,
"averageValueLength" : 2.23,
"level0MB" : 15.857951142338342,
"aft" : 0,
"lck" : false
}, {
"dimensionName" : "Transaction Type",
"isCompression" : false,
"storedLevel0Members" : 3.0,
"averageBundleFill" : 1.002004008016032,
"averageValueLength" : 2.22,
"level0MB" : 16.921041835784912,
"aft" : 0,
"lck" : false
}, {
"dimensionName" : "Payment Type",
"isCompression" : false,
"storedLevel0Members" : 4.0,
"averageBundleFill" : 1.0111223458038423,
"averageValueLength" : 2.22,
"level0MB" : 16.79231032562256,
"aft" : 0,
"lck" : false
}, {
"dimensionName" : "Promotions",
"isCompression" : false,
"storedLevel0Members" : 5.0,
"averageBundleFill" : 1.0015022533800702,
"averageValueLength" : 2.22,
"level0MB" : 16.928193586349487,
"aft" : 0,
"lck" : false
}, {
"dimensionName" : "Age",
"isCompression" : false,
"storedLevel0Members" : 9.0,
"averageBundleFill" : 1.0167768174885612,
"averageValueLength" : 2.22,
"level0MB" : 16.713641069412233,
"aft" : 0,
"lck" : false
}, {
"dimensionName" : "Income Level",
"isCompression" : false,
"storedLevel0Members" : 6.0,
"averageBundleFill" : 1.010611419909045,
"averageValueLength" : 2.22,
"level0MB" : 16.799462076187133,
"aft" : 0,
"lck" : false
}, {
"dimensionName" : "Products",
"isCompression" : false,
"storedLevel0Members" : 25.0,
"averageBundleFill" : 1.0429341213280028,
"averageValueLength" : 2.232,
"level0MB" : 16.375124876022337,
"aft" : 0,
"lck" : false
}, {
"dimensionName" : "Stores",
"isCompression" : false,
"storedLevel0Members" : 239.0,
"averageBundleFill" : 1.0,
"averageValueLength" : 2.22,
"level0MB" : 16.949648838043213,
"aft" : 0,
"lck" : false
}, {
"dimensionName" : "Geography",
"isCompression" : false,
"storedLevel0Members" : 9398.0,
"averageBundleFill" : 1.0310164103445314,
"averageValueLength" : 2.23,
"level0MB" : 16.531271430015565,
"aft" : 0,
"lck" : false
} ]
}
Script with cURL Command (With Fetch)
The following example initiates an internal system job which evaluates the whole cube in terms of ASO compression.
call properties.bat
curl -X GET "https://myserver.example.com:9001/essbase/rest/v1/applications/ASOSamp/databases/Basic/settings/compressioninfo?fetch=true" -H "accept:application/json" -u %User%:%Password%
Example of Response Body
The response is a message with the job number. To view the compression information, issue the API again without ?fetch=true
, as in the first example.
{
"message" : "Compression information job 199 is in progress."
}