I have a report (WEBI 4.2 support pack 7) in a wide table format that calculates inventory projections by month for the next 12 months. Each monthly inventory projection is it’s own calculated measure. So I have a variable for Period 1 Inventory, Period 2 Inventory, all the way to Period 12 Inventory. I need to add another variable that returns the maximum inventory projection for a given material between Period 1 and Period 12.
So a sample report may look like this
Material | MaxValue | P1 | P2 | P3 | P4 | P5 | P6 | P7 | P8 | P9 | P10 | P11 | P12 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
aaa | 10 | 1 | 2 | 3 | 4 | 5 | 10 | 6 | 5 | 4 | 3 | 2 | 1 |
bbb | 17 | 3 | 3 | 3 | 4 | 17 | 2 | 2 | 2 | 1 | 1 | 1 | 1 |
ccc | 11 | 1 | 2 | 3 | 3 | 3 | 3 | 4 | 4 | 11 | 9 | 7 | 6 |
I’m specifically interested in a more efficient way to find the Max value from multiple inputs. A number of programming languages have very simple ways to do this. But the WEBI Max() function only takes one required argument (the aggregated dimension) and one optional argument (a member set, if available).
In my example, I would think there must be a way to use something like
MaxValue = Max( P1, P2, P3, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12)
which would simply return the max value of the list of measures that were provided. I know that is not how the WEBI max function works, but I’m hopeful I’m overlooking something simple.
Right now I use a super long nested if statement. And it's only good for comparing 9 inputs.
MaxMeasure = If(
[P1] > If(
[P2] > If(
[P3] > If(
[P4] > If(
[P5] > If(
[P6] > If(
[P7] > If(
[P9] > [P8];
[P9];
[P8]
);
[P7];
If(
[P9] > [P8];
[P9];
[P8]
)
);
[P6];
If(
[P7] > If(
[P9] > [P8];
[P9];
[P8]
);
[P7];
If(
[P9] > [P8];
[P9];
[P8]
)
)
);
[P5];
If(
[P6] > If(
[P7] > If(
[P9] > [P8];
[P9];
[P8]
);
[P7];
If(
[P9] > [P8];
[P9];
[P8]
)
);
[P6];
If(
[P7] > If(
[P9] > [P8];
[P9];
[P8]
);
[P7];
If(
[P9] > [P8];
[P9];
[P8]
)
)
)
);
[P4];
If(
[P5] > If(
[P6] > If(
[P7] > If(
[P9] > [P8];
[P9];
[P8]
);
[P7];
If(
[P9] > [P8];
[P9];
[P8]
)
);
[P6];
If(
[P7] > If(
[P9] > [P8];
[P9];
[P8]
);
[P7];
If(
[P9] > [P8];
[P9];
[P8]
)
)
);
[P5];
If(
[P6] > If(
[P7] > If(
[P9] > [P8];
[P9];
[P8]
);
[P7];
If(
[P9] > [P8];
[P9];
[P8]
)
);
[P6];
If(
[P7] > If(
[P9] > [P8];
[P9];
[P8]
);
[P7];
If(
[P9] > [P8];
[P9];
[P8]
)
)
)
)
);
[P3];
If(
[P4] > If(
[P5] > If(
[P6] > If(
[P7] > If(
[P9] > [P8];
[P9];
[P8]
);
[P7];
If(
[P9] > [P8];
[P9];
[P8]
)
);
[P6];
If(
[P7] > If(
[P9] > [P8];
[P9];
[P8]
);
[P7];
If(
[P9] > [P8];
[P9];
[P8]
)
)
);
[P5];
If(
[P6] > If(
[P7] > If(
[P9] > [P8];
[P9];
[P8]
);
[P7];
If(
[P9] > [P8];
[P9];
[P8]
)
);
[P6];
If(
[P7] > If(
[P9] > [P8];
[P9];
[P8]
);
[P7];
If(
[P9] > [P8];
[P9];
[P8]
)
)
)
);
[P4];
If(
[P5] > If(
[P6] > If(
[P7] > If(
[P9] > [P8];
[P9];
[P8]
);
[P7];
If(
[P9] > [P8];
[P9];
[P8]
)
);
[P6];
If(
[P7] > If(
[P9] > [P8];
[P9];
[P8]
);
[P7];
If(
[P9] > [P8];
[P9];
[P8]
)
)
);
[P5];
If(
[P6] > If(
[P7] > If(
[P9] > [P8];
[P9];
[P8]
);
[P7];
If(
[P9] > [P8];
[P9];
[P8]
)
);
[P6];
If(
[P7] > If(
[P9] > [P8];
[P9];
[P8]
);
[P7];
If(
[P9] > [P8];
[P9];
[P8]
)
)
)
)
)
);
[P2];
If(
[P3] > If(
[P4] > If(
[P5] > If(
[P6] > If(
[P7] > If(
[P9] > [P8];
[P9];
[P8]
);
[P7];
If(
[P9] > [P8];
[P9];
[P8]
)
);
[P6];
If(
[P7] > If(
[P9] > [P8];
[P9];
[P8]
);
[P7];
If(
[P9] > [P8];
[P9];
[P8]
)
)
);
[P5];
If(
[P6] > If(
[P7] > If(
[P9] > [P8];
[P9];
[P8]
);
[P7];
If(
[P9] > [P8];
[P9];
[P8]
)
);
[P6];
If(
[P7] > If(
[P9] > [P8];
[P9];
[P8]
);
[P7];
If(
[P9] > [P8];
[P9];
[P8]
)
)
)
);
[P4];
If(
[P5] > If(
[P6] > If(
[P7] > If(
[P9] > [P8];
[P9];
[P8]
);
[P7];
If(
[P9] > [P8];
[P9];
[P8]
)
);
[P6];
If(
[P7] > If(
[P9] > [P8];
[P9];
[P8]
);
[P7];
If(
[P9] > [P8];
[P9];
[P8]
)
)
);
[P5];
If(
[P6] > If(
[P7] > If(
[P9] > [P8];
[P9];
[P8]
);
[P7];
If(
[P9] > [P8];
[P9];
[P8]
)
);
[P6];
If(
[P7] > If(
[P9] > [P8];
[P9];
[P8]
);
[P7];
If(
[P9] > [P8];
[P9];
[P8]
)
)
)
)
);
[P3];
If(
[P4] > If(
[P5] > If(
[P6] > If(
[P7] > If(
[P9] > [P8];
[P9];
[P8]
);
[P7];
If(
[P9] > [P8];
[P9];
[P8]
)
);
[P6];
If(
[P7] > If(
[P9] > [P8];
[P9];
[P8]
);
[P7];
If(
[P9] > [P8];
[P9];
[P8]
)
)
);
[P5];
If(
[P6] > If(
[P7] > If(
[P9] > [P8];
[P9];
[P8]
);
[P7];
If(
[P9] > [P8];
[P9];
[P8]
)
);
[P6];
If(
[P7] > If(
[P9] > [P8];
[P9];
[P8]
);
[P7];
If(
[P9] > [P8];
[P9];
[P8]
)
)
)
);
[P4];
If(
[P5] > If(
[P6] > If(
[P7] > If(
[P9] > [P8];
[P9];
[P8]
);
[P7];
If(
[P9] > [P8];
[P9];
[P8]
)
);
[P6];
If(
[P7] > If(
[P9] > [P8];
[P9];
[P8]
);
[P7];
If(
[P9] > [P8];
[P9];
[P8]
)
)
);
[P5];
If(
[P6] > If(
[P7] > If(
[P9] > [P8];
[P9];
[P8]
);
[P7];
If(
[P9] > [P8];
[P9];
[P8]
)
);
[P6];
If(
[P7] > If(
[P9] > [P8];
[P9];
[P8]
);
[P7];
If(
[P9] > [P8];
[P9];
[P8]
)
)
)
)
)
)
);
[P1];
If(
[P2] > If(
[P3] > If(
[P4] > If(
[P5] > If(
[P6] > If(
[P7] > If(
[P9] > [P8];
[P9];
[P8]
);
[P7];
If(
[P9] > [P8];
[P9];
[P8]
)
);
[P6];
If(
[P7] > If(
[P9] > [P8];
[P9];
[P8]
);
[P7];
If(
[P9] > [P8];
[P9];
[P8]
)
)
);
[P5];
If(
[P6] > If(
[P7] > If(
[P9] > [P8];
[P9];
[P8]
);
[P7];
If(
[P9] > [P8];
[P9];
[P8]
)
);
[P6];
If(
[P7] > If(
[P9] > [P8];
[P9];
[P8]
);
[P7];
If(
[P9] > [P8];
[P9];
[P8]
)
)
)
);
[P4];
If(
[P5] > If(
[P6] > If(
[P7] > If(
[P9] > [P8];
[P9];
[P8]
);
[P7];
If(
[P9] > [P8];
[P9];
[P8]
)
);
[P6];
If(
[P7] > If(
[P9] > [P8];
[P9];
[P8]
);
[P7];
If(
[P9] > [P8];
[P9];
[P8]
)
)
);
[P5];
If(
[P6] > If(
[P7] > If(
[P9] > [P8];
[P9];
[P8]
);
[P7];
If(
[P9] > [P8];
[P9];
[P8]
)
);
[P6];
If(
[P7] > If(
[P9] > [P8];
[P9];
[P8]
);
[P7];
If(
[P9] > [P8];
[P9];
[P8]
)
)
)
)
);
[P3];
If(
[P4] > If(
[P5] > If(
[P6] > If(
[P7] > If(
[P9] > [P8];
[P9];
[P8]
);
[P7];
If(
[P9] > [P8];
[P9];
[P8]
)
);
[P6];
If(
[P7] > If(
[P9] > [P8];
[P9];
[P8]
);
[P7];
If(
[P9] > [P8];
[P9];
[P8]
)
)
);
[P5];
If(
[P6] > If(
[P7] > If(
[P9] > [P8];
[P9];
[P8]
);
[P7];
If(
[P9] > [P8];
[P9];
[P8]
)
);
[P6];
If(
[P7] > If(
[P9] > [P8];
[P9];
[P8]
);
[P7];
If(
[P9] > [P8];
[P9];
[P8]
)
)
)
);
[P4];
If(
[P5] > If(
[P6] > If(
[P7] > If(
[P9] > [P8];
[P9];
[P8]
);
[P7];
If(
[P9] > [P8];
[P9];
[P8]
)
);
[P6];
If(
[P7] > If(
[P9] > [P8];
[P9];
[P8]
);
[P7];
If(
[P9] > [P8];
[P9];
[P8]
)
)
);
[P5];
If(
[P6] > If(
[P7] > If(
[P9] > [P8];
[P9];
[P8]
);
[P7];
If(
[P9] > [P8];
[P9];
[P8]
)
);
[P6];
If(
[P7] > If(
[P9] > [P8];
[P9];
[P8]
);
[P7];
If(
[P9] > [P8];
[P9];
[P8]
)
)
)
)
)
);
[P2];
If(
[P3] > If(
[P4] > If(
[P5] > If(
[P6] > If(
[P7] > If(
[P9] > [P8];
[P9];
[P8]
);
[P7];
If(
[P9] > [P8];
[P9];
[P8]
)
);
[P6];
If(
[P7] > If(
[P9] > [P8];
[P9];
[P8]
);
[P7];
If(
[P9] > [P8];
[P9];
[P8]
)
)
);
[P5];
If(
[P6] > If(
[P7] > If(
[P9] > [P8];
[P9];
[P8]
);
[P7];
If(
[P9] > [P8];
[P9];
[P8]
)
);
[P6];
If(
[P7] > If(
[P9] > [P8];
[P9];
[P8]
);
[P7];
If(
[P9] > [P8];
[P9];
[P8]
)
)
)
);
[P4];
If(
[P5] > If(
[P6] > If(
[P7] > If(
[P9] > [P8];
[P9];
[P8]
);
[P7];
If(
[P9] > [P8];
[P9];
[P8]
)
);
[P6];
If(
[P7] > If(
[P9] > [P8];
[P9];
[P8]
);
[P7];
If(
[P9] > [P8];
[P9];
[P8]
)
)
);
[P5];
If(
[P6] > If(
[P7] > If(
[P9] > [P8];
[P9];
[P8]
);
[P7];
If(
[P9] > [P8];
[P9];
[P8]
)
);
[P6];
If(
[P7] > If(
[P9] > [P8];
[P9];
[P8]
);
[P7];
If(
[P9] > [P8];
[P9];
[P8]
)
)
)
)
);
[P3];
If(
[P4] > If(
[P5] > If(
[P6] > If(
[P7] > If(
[P9] > [P8];
[P9];
[P8]
);
[P7];
If(
[P9] > [P8];
[P9];
[P8]
)
);
[P6];
If(
[P7] > If(
[P9] > [P8];
[P9];
[P8]
);
[P7];
If(
[P9] > [P8];
[P9];
[P8]
)
)
);
[P5];
If(
[P6] > If(
[P7] > If(
[P9] > [P8];
[P9];
[P8]
);
[P7];
If(
[P9] > [P8];
[P9];
[P8]
)
);
[P6];
If(
[P7] > If(
[P9] > [P8];
[P9];
[P8]
);
[P7];
If(
[P9] > [P8];
[P9];
[P8]
)
)
)
);
[P4];
If(
[P5] > If(
[P6] > If(
[P7] > If(
[P9] > [P8];
[P9];
[P8]
);
[P7];
If(
[P9] > [P8];
[P9];
[P8]
)
);
[P6];
If(
[P7] > If(
[P9] > [P8];
[P9];
[P8]
);
[P7];
If(
[P9] > [P8];
[P9];
[P8]
)
)
);
[P5];
If(
[P6] > If(
[P7] > If(
[P9] > [P8];
[P9];
[P8]
);
[P7];
If(
[P9] > [P8];
[P9];
[P8]
)
);
[P6];
If(
[P7] > If(
[P9] > [P8];
[P9];
[P8]
);
[P7];
If(
[P9] > [P8];
[P9];
[P8]
)
)
)
)
)
)
)
)