您计算的成员的问题在于,[User].CurrentMember
它设置All
为每个行元组的成员,因此计数是总数。您需要的是一种[Customer].CurrentMember
有效[Date].CurrentMember
过滤[User]
维度的方法。
您需要使用有意义的度量,即对于您感兴趣的维度成员的有意义连接,该度量将具有非空值。
要找出这一点,您可以从运行如下查询开始:
SELECT
NON EMPTY CrossJoin(
[User].[User Name].Members,
[Measures].[Some measuse]
) ON COLUMNS,
NON EMPTY CrossJoin(
[Date].[Date].Members,
[Customer].[Customer Name].Members
) ON ROWS
FROM [Project]
你会选择Some measure
得当。该查询的结果将是很多空单元格,但在给定的行中,具有值的列对应于与给定 Customer x Date 元组(在行上)相关的用户。您想为每一行计算这些列。COUNT 和 FILTER 是你需要的,那么计算成员的查询将是
WITH MEMBER [Measures].[User count] AS
COUNT(
FILTER(
[User].[User Name].Members,
NOT ISEMPTY([Measures].[Some measure])
)
)
SELECT
NON EMPTY {[Measures].[User count]} ON COLUMNS,
NON EMPTY CrossJoin(
[Date].[Date].Members,
[Customer].[Customer Name].Members
) ON ROWS
FROM [Users]
我在这里假设了一点,但是通过一些实验你应该能够解决它。