我正在尝试编写一个查询,为我提供每个客户每天的用户总数。
这是我到目前为止所拥有的,对于每个客户/天的组合,它给出了用户维度条目的总数,而不是按客户/天拆分它们。
WITH MEMBER [Measures].[MyUserCount]
AS COUNT(Descendants([User].CurrentMember, [User].[User Name]), INCLUDEEMPTY)
SELECT
NON EMPTY CrossJoin([Date].[Date].Members, [Customer].[Customer Name].Members) ON ROWS,
{[Measures].[MyUserCount]} on COLUMNS
FROM
[Users]
计算成员的问题在于,对于每个行元组,[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
。该查询的结果将是大量空单元格,但在给定行中,具有值的列对应于与给定客户 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]
我在这里假设了相当多的东西,但通过一些实验,你应该能够解决它。