Hello,
I would need to compute the distinctcount of a field "in percentage", so that, for each cell, the computed value would be equal to distinctcount('Field')/TOTAL, where TOTAL equals the grand total of distinctcount('Field') (grand total for both rows and columns).
Is there any way I can achieve this?
Thank you in advance.
Hi Marta,
Thank you for writing to us.
Flexmonster does offer a built-in percent
aggregation function which retrieves a percentage of the field's grand total. However, currently, this function only calculates the values based on the field's sum.
Currently, it is not possible to calculate the percent of distinct count total, neither with a specific aggregation nor with a calculated value. As an alternative, a potential solution would involve solving this problem on the server-side with your own custom data source API implementation, although this way requires more coding.
Please let us know if you have any other questions we can help you with.
Best regards,
Mykhailo
Hello,
Thank you for the answer. Following your suggestion, I am trying to do it with the custom data source API, but I need some more help because something is not working.
This is what I've tried:
However, this approach is not working. The first problem is that, in the "select" POST request, the "percentcount" aggregation is not being requested. I think this is because the javascript library does some pre-process in the measures, and it does not recognise the new aggregation name.
I've attached a working example so that you can test it. I've tried using a measure defined both by a formula and with an aggregation. In the first case, I get the error "Wrong formula format"; in the second case, it requests for the "sum" instead of "percentcount" (I think because it may be the default option).
Thank you again for the assistance.
Best regards
Hi Marta,
Thank you for your detailed response and our apologies for the slightly delayed response.
Please note that the names of the aggregations defined in your implementation of the custom data source API have to be among the ones listed here: https://www.flexmonster.com/doc/support-more-aggregations/
With that in mind, we've tested the modified cube.js
file you've provided us with and all the aggregations seem to be loaded properly if we change the percentcount
name to percent
, for example – percent
is one of the supported aggregation names in this case.
This will result in your aggregation being displayed under the name % of Grand Total
, which is the default caption for the percent
aggregation. In case you would like to modify its caption, this can be achieved through localization
of the aggregation:
global: {
localization: {
"aggregations": {
"percent": {
"caption": "% of Total Distinct Count",
"totalCaption": "% of Total Distinct Count of {0}",
"grandTotalCaption": "Total % of Total Distinct Count {0}"
}
}
}
}
More info on the localization approach can be found here: https://www.flexmonster.com/doc/localizing-component/
We hope you find this helpful.
Best regards,
Mykhailo
Hi Marta
How are you?
We were wondering if our last response helped you with your issue. Was it resolved, or are there any further questions you would like to discuss?
Please let us know your thoughts.
Regards,
Mykhailo
Hello,
Sorry for the delay. I've tried your suggestions and it worked perfectly. Thank you very much for your help!
However, as a suggestion, I think that it would be very nice to have a way to allow Flexmonster to recognise any aggreagtion name when using the custom datasource API.
Best regards
Hi Marta,
Thank you for the heads up, it is good to hear everything is working fine for you!
Speaking of your request, yes, it is already in our plans to allow defining a custom aggregation under a caption of your choosing. We will make sure to make an announcement when this becomes available.
As always, do not hesitate to reach out if you have any other questions we can help you with.
Best regards,
Mykhailo