do you want the datamart to refresh for EVERY time someone runs the report? Somehow that seems to defeat the purpose of a datamart table. Maybe other reports use the same datamart table?
If the datamart is only for this report, then you might want to just build the datamart metrics definitions into the final report for your users. Writing stuff into a datamart table, and then querying it would be similar to the multi-pass SQL that the report would generate.