This article demonstrates how to implement Pareto (80/20) analysis in SAP Analytics Cloud using table ResultSet scripting.
The script retrieves values from a table, sorts members by their contribution, and calculates the cumulative percentage of the total value.
It then identifies how many members generate approximately 80% of the total,
providing a powerful insight into value concentration within the dataset.

// Get result set
var resultSet = Table_1.getDataSource().getResultSet();
var rowDims = Table_1.getDimensionsOnRows();
if (resultSet.length > 0 && rowDims.length > 0)
{
var dimId = rowDims[0];
var count = resultSet.length;
// ----------------------------
// Create arrays
// ----------------------------
var values = ArrayUtils.create(Type.number);
var names = ArrayUtils.create(Type.string);
var total = 0.0;
for (var i = 0; i < count; i++)
{
var value = ConvertUtils.stringToNumber(resultSet[i][Alias.MeasureDimension].rawValue);
values[i] = value;
names[i] = resultSet[i][dimId].description;
total = total + value;
}
// ----------------------------
// Sort values descending
// ----------------------------
for (var a = 0; a < values.length; a++)
{
for (var b = 0; b < values.length - 1; b++)
{
if (values[b] < values[b + 1])
{
var tempVal = values[b];
values[b] = values[b + 1];
values[b + 1] = tempVal;
var tempName = names[b];
names[b] = names[b + 1];
names[b + 1] = tempName;
}
}
}
// ----------------------------
// Calculate cumulative %
// ----------------------------
var runningTotal = 0.0;
var paretoCount = 0;
for (var k = 0; k < values.length; k++)
{
runningTotal = runningTotal + values[k];
paretoCount = paretoCount + 1;
var pct = (runningTotal / total) * 100.0;
if (pct >= 80.0)
{
break;
}
}
// ----------------------------
// Output result
// ----------------------------
var pctRounded = Math.round((runningTotal / total) * 1000.0) / 10.0;
var text =
ConvertUtils.numberToString(paretoCount) +
" members generate " +
ConvertUtils.numberToString(pctRounded) +
"% of the total value.";
Text_1.applyText(text);
}
Code language: JavaScript (javascript)
