Finally, define the aggregation of the cube to use MAX over GRADE, TIME, CLUSTER and then SUM over CALL_ID. (The SUM must be last in the list.) When you query the cube, ask for the ALL_CALLS member and you should get the distinct count of call_id values for the given GRADE, TIME, CLUSTER combination.
CREATE OR REPLACE VIEW call_count_view AS SELECT DISTINCT grade, time, cluster, call_id, 1 AS call_count FROM fact
Another approach is to define a SQL VIEW on top of your table to be something like this:
<HierarchyLevelMap Query="SYS.DUAL" KeyExpression=" 'ALL_CALLS' "> </HierarchyLevelMap>
Just map the dimension to this view instead of to the base table.
CREATE OR REPLACE ALL_VIEW AS SELECT 'ALL_CALLS' AS ALL_CALLS, t.* FROM <your table> t