Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Hi all,
I Have a requirement to change the Number either to Billions/Million/Thousands based on the Measure.
I have tried as below:
SET vL.ScaleNumber =if($1>1000000000, num($1/1000000000,vL.Billion_Format)
,if($1>1000000, num($1/1000000,vL.Million_Format)
,if($1>1000, num($1/1000,vL.Thou_Format)
,if($1<0, num($1/1000,vL.Neg_Thou_Format)
,num($1,'#,##0',vL.Format_Integer)
))));
In the Expression I have given as below:
$(vL.ScaleNumber(Sum({<[Product Family]*={'Rev Mobile Voice and Incoming','Rev Mobile Broadband','Rev Fixed Connectivity Access','Rev M2M Services','Rev One Net'},[Customer Flag]={'1'}>}Measure)))
But the above logic is not working.When I have tried using one filter in the set analysis as below then it is working fine. when I am applying multiple filters it is not working.
$(vL.ScaleNumber(Sum({<[Customer Flag]={'1'}>}Measure)))
So how can I acheive this.
I can simple use If statements for converting the Number format dynamically but it would be if I can get this using the above solution.
Thanks
S k
Go to Numbers Tab on your chart properties and look at the right side bottom. You can give the symbols for Millions and Billions.
Hi Thirumala,
I have tried this but that doesn't give my desired result.
Thanks
When you say it is not working for multiple filters, Are you getting any error ?
Can you try the below expression and let me know what you are getting ?
$(vL.ScaleNumber(Sum({<[Product Family]={'Rev Mobile Voice and Incoming','Rev Mobile Broadband','Rev Fixed Connectivity Access','Rev M2M Services','Rev One Net'},[Customer Flag]={'1'}>}Measure)))
When you have multiple filters you will have the issue with the comma which is separating the filters. The below link will fix your issue. Give a try and hope this helps:
Comma problem (,) workaround for dollar sign expansion with parameters
Hi,
I have gone through the thread mentioned above by you, But I couldn't able to apply the same logic in my expression.
it looks like I'm missing something.
If you convert the expression to an expression variable you may be able to solve the problem:
Define the expression variable (for example in the load script):
Set vExpr = Sum({<[Product Family]*={'Rev Mobile Voice and Incoming','Rev Mobile Broadband','Rev Fixed Connectivity Access','Rev M2M Services','Rev One Net'},[Customer Flag]={'1'}>}Measure));
Then use the expression variable
$(vL.ScaleNumber(vExpr))
Thanks very much Dienst.
Let me check that and I'll get back to if I face any Issue.
Thanks
Unfortunately your approach won't work as a global function because each comma within the parameter will be treated as a parameter-delimiter. This meant you will need to apply any logic to avoid the commas which is in many cases not easy to impossible.
If the calculation should be only done on a global level you could use a $-sign expansion like this one:
$(vL.ScaleNumber($(=Sum({<[Product Family]*={'Rev Mobile Voice and Incoming','Rev Mobile Broadband','Rev Fixed Connectivity Access','Rev M2M Services','Rev One Net'},[Customer Flag]={'1'}>}Measure))))
which is in principle the same like pre-calculating the value within a (LET) variable respectively with a beginning equal-sign "=". With SET or without the "=" the expression-string would be transferred into the variable and the comma-problem remained.
Nevertheless you could use it in this case if you changed the syntax within the set analysis to something like:
$(vL.ScaleNumber(Sum({<[Product Family]*={("Rev Mobile Voice and Incoming"|"Rev Mobile Broadband"|"Rev Fixed Connectivity Access"|"Rev M2M Services"|"Rev One Net")} > + < [Customer Flag]={'1'}>}Measure)))
- Marcus