cancel
Showing results for 
Search instead for 
Did you mean: 

Dimension Values based on Result Rows/Cells Value

Former Member
0 Kudos

My requirement is to display Manager Name based on there Employee Rank. Rank is a formula defined in BEx Query based on on Sales of Employee. Also Count of Employees > Count of Managers.

In other words with example...Below image is from Edit Initial View.

If Rank in Result Row is 3 then  display "A" in Textbox Component.

If Rank in Result Row is 21 then display "B" in Textbox Component.

If Rank in Result Row is 20 then display "C" in Textbox Component.

If Rank in Result Row is 8 then display "D" in Textbox Component.

Trying with code like below but no luck.....

var MANGERS = DS_1.getMembers(Z_Manager, 100);

var Rank='';

MANGERS.forEach(function(element, index) {

  Rank = DS_1.getDataAsString("RANK",{"Z_Manager":element.internalKey});

      

  if (Rank == '1') {A2.setText('(*'+element.text+')');}

else if (Rank == '2') {A2.setText('(*'+element.text+')');}

else if (Rank == '3') {A3.setText('(*'+element.text+')');}

else if (Rank == '4') {A4.setText('(*'+element.text+')');}

else if (Rank == '5') {A5.setText('(*'+element.text+')');}

else if (Rank == '6') {A6.setText('(*'+element.text+')');}

else if (Rank == '7') {A7.setText('(*'+element.text+')');}

else if (Rank == '8') {A8.setText('(*'+element.text+')');}

else if (Rank == '9') {A9.setText('(*'+element.text+')');}

else if (Rank == '10') {A10.setText('(*'+element.text+')');}

});

Your help on this is highly appreciated.

Accepted Solutions (1)

Accepted Solutions (1)

Former Member
0 Kudos

Hi,

Why don't you loop it on employees instead of manager and get the rank? Try this, I think it should work.

var EMPLOYEES= DS_1.getMembers(<EMPLOYEE DIMENSION>, 100);

var Rank='';

EMPLOYEES.forEach(function(element, index) {

  Rank = DS_1.getDataAsString("RANK",{<EMPLOYEE DIMENSION>:element.internalKey});

DS_1.setFilter(<EMPLOYEE DIMENSION>,element.internalKey);

var managerArray = DS_1.getMembers(<MANAGER DIMENSION>,1);

var manager = managerArray[0];

DS_1.clearFilter(<EMPLOYEE DIMENSION>);


if (Rank == '1') {A2.setText(manager .text);}

else if (Rank == '2') {A2.setText(manager .text);}

else if (Rank == '3') {A3.setText(manager .text);}

else if (Rank == '4') {A4.setText(manager .text);}

else if (Rank == '5') {A5.setText(manager .text);}

else if (Rank == '6') {A6.setText(manager .text);}

else if (Rank == '7') {A7.setText(manager .text);}

else if (Rank == '8') {A8.setText(manager .text);}

else if (Rank == '9') {A9.setText(manager .text);}

else if (Rank == '10') {A10.setText(manager .text);}

});

Also, I don't think it will matter whether you keep the manager dimension in the rows or not.

Hope this helps.

Regards,

Swapnil Koti

Answers (2)

Answers (2)

Former Member
0 Kudos

Hi Tammy,

Thank you for the quick response. We are currently still on DS 1.5.

Hi Swapnil Koti,

I followed your response ant it worked. Marking as Correct Answer. I have to update it little bit to better suite my requirements.

var EMPLOYEES= DS_1.getMembers(<EMPLOYEE DIMENSION>, 100);

var Rank='';

EMPLOYEES.forEach(function(element, index) {

  Rank = DS_1.getDataAsString("RANK",{<EMPLOYEE DIMENSION>:element.internalKey});


if (Rank == '1')  { DS_1.setFilter(<EMPLOYEE DIMENSION>,element.internalKey);

                             var managerArray1 = DS_1.getMembers(<MANAGER DIMENSION>,1);

                              var manager1 = managerArray1[0];

                            DS_1.clearFilter(<EMPLOYEE DIMENSION>);

                           A1.setText(manager1 .text);}

else if (Rank == '2')  { DS_1.setFilter(<EMPLOYEE DIMENSION>,element.internalKey);

                             var managerArray2 = DS_1.getMembers(<MANAGER DIMENSION>,1);

                              var manager2 = managerArray2[0];

                              DS_1.clearFilter(<EMPLOYEE DIMENSION>);

                              A2.setText(manager2 .text);}

else if (Rank == '3') {...............

});

-Thanks,

  Deepu.

TammyPowlas
Active Contributor
0 Kudos

Why not do this at run-time where ranking is supported?