2

我正在尝试编写一个查询来给我每天每个客户的用户总数。

这是我到目前为止所拥有的,对于每个客户/天组合,它给出了用户维度条目的总数,而不是按客户/天拆分它们。

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]
4

1 回答 1

0

您计算的成员的问题在于,[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]

我在这里假设了一点,但是通过一些实验你应该能够解决它。

于 2012-12-05T05:02:35.860 回答