2016-08-17 12 views
0

ユーザーがそのメンバーによってフィルタリングされているか、ピボットテーブルの行または列としてドラッグされているかによって動作が異なる計算メンバーを作成しようとしています。 (Excelを使用して)。SSASユーザーがレポートフィルタを使用しているかどうかを確認する計算されたメンバー

ルールは次のとおりです。 1.ユーザーがExcelでレポートフィルタとして日付dimensinを使用している場合、計算されたメンバーは、フィルタされたすべての日付のうち最大日付を取得する必要があります。 2.日付ディメンションがピボットテーブルの行としてある場合は、ClosingPeriodとその他のロジックを適用する必要があります。

+0

SSAS Tabular(DAX)またはSSAS Multidimensional(MDX)?または、これはピボットテーブルを凌駕していますか?キューブに接続していますか?私は計算されたメンバーのためにこれはSSAS多次元でなければならないと思います –

+0

Ssas多次元キューブ – Lock

答えて

1

これを試してください。このアイディアはhereから来ました。

基本的に動的な名前付きセットは、レポートフィルタの内容を表します。 EXISTINGキーワードは現在のセルのフィルタコンテキストまでの日数のリストをトリムして、1か月間に行があるかどうかを検出します。カウントを比較して、ユーザーが何をしたかを検出できます。

CREATE HIDDEN DYNAMIC SET CURRENTCUBE.SelectedDays as 
[Date].[Date].[Date].Members; 

CREATE MEMBER CURRENTCUBE.[Measures].[My Calc] as 
CASE 
WHEN SelectedDays.Count > {existing [Date].[Date].[Date].Members}.Count 
    THEN Tail({existing [Date].[Date].[Date].Members},1).Item(0).Item(0).Name 
WHEN SelectedDays.Count < [Date].[Date].[Date].Members.Count 
    THEN Tail(SelectedDays,1).Item(0).Item(0).Name 
END 

パフォーマンスは良くありません。私はユーザーがあなたの計算の結果と混同されると思う。ビジネスシナリオをより詳しく説明したい場合は、より良いアプローチをお勧めします。

関連する問題