2

1日あたりの各顧客のユーザーの総数を表示するクエリを作成しようとしています。

これが私がこれまでに持っているものであり、顧客/日の組み合わせごとに、顧客/日で分割せずにユーザーディメンションエントリの総数を示しています。

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 に答える