在Mondrian MDX中获得每天的用户数

在Mondrian MDX中获得每天的用户数,mdx,olap,data-warehouse,pentaho,mondrian,Mdx,Olap,Data Warehouse,Pentaho,Mondrian,我正在尝试编写一个查询,以提供每个客户每天的用户总数 这是我到目前为止得到的,对于每个客户/天组合,它给出了用户维度条目的总数,而不按客户/天进行拆分 WITH MEMBER [Measures].[MyUserCount] AS COUNT(Descendants([User].CurrentMember, [User].[User Name]), INCLUDEEMPTY) SELECT NON EMPTY CrossJoin([Date].[Date].Members, [Cust

我正在尝试编写一个查询,以提供每个客户每天的用户总数

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

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]
您应该选择适当的
某些度量值。该查询的结果将是许多空单元格,但在给定的行中,具有值的列对应于与给定的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]

我在这里假设了一点,但通过一些实验,您应该能够解决这个问题。

请提供有关多维数据集模式的一些详细信息。您的查询将为您提供总用户数,因为您没有以任何方式将用户维度与客户维度合并。你可以通过使用一个事实来联系这两个概念。用户多维数据集中提供了哪些事实(度量)?如果有一个像“用户计数”这样的问题,那就是你的问题。用户多维数据集的粒度是什么?多维数据集看起来像:[Customer].[Customer Name],[Date].[Date],[User].[User Name],以及关于用户的各种度量。这个问题主要是学术性的。我需要做一些类似的查询,这就是我试图学习的例子。我需要能够为每个客户每天的用户数创建一个计算的度量,而无需添加额外的度量。