0

私はssasに比較的慣れておらず、何か問題があります。

シナリオ:

  • 会社階層(地域、サブ地域、国、会社)を持つキューブ
  • ディメンションのセキュリティは、ユーザー名を許可される会社のリストにリンクして会社のディメンションをフィルタリングすることで適用されます。
  • [ビジュアル合計を有効にする]がオンになっているため、アクセスできる会社の階層の各レベルでのみ合計を表示できます。

問題:

たとえば、ユーザーが1つの国の企業しか表示できない場合、階層の上位レベルは表示されないようにする必要があります(合計は同じになるため)。つまり、英国の企業のみが表示される場合は、階層のの国と企業のレベルのみが表示され、サブリージョン(ヨーロッパ)とリージョン(EMEA)のレベルは表示されません。

これをどのように達成できるか、あるいはそれが可能であるとしても、誰かが何かアイデアを持っていますか?レポートレイヤーで機能するソリューションを管理できますが、将来のアドホックレポート/代替レポートソリューションを可能にするために、これをキューブで処理する必要があります。

私が試したアイデア/事柄:

  • デフォルトのメンバーを設定することが、表示できる階層のレベルに影響を与えるかどうかを確認しようとしています(影響はありません)
  • 使用する会社の階層が異なる複数のパースペクティブを実装しました。各パースペクティブは、下位レベルから始まる階層を使用します。

    • これはある程度までは機能しますが、ユーザーを1つの視点だけに制限する方法がわかりません
  • HideMemberIf-私が見る限り、これは不規則な階層を作成するために使用され、階層の最上位レベルではなく下位メンバーを非表示にします。

だから、結論として、うーん。

4

1 に答える 1

2

これを行うには、関連付けられた階層内のメンバーを表示する役割の権限を削除します。

これをする:

  • ロール デザイナーを開く
  • [次元データ] タブを選択します
  • 適切なディメンションを選択します (データベース ディメンションではなく、キューブ ディメンションであることを確認してください)。
  • 非表示にする属性階層ごとに、次のようにします。
    • ドロップダウンから適切な属性階層を選択します
    • 「全メンバーの選択を解除」を選択

次に、使用しているパースペクティブが階層を表示しようとしないことを確認します。そうしようとすると、クライアント エラーが発生します。これは、キューブにそれらのメンバーを参照するさまざまな相互接続されたクエリがあることは間違いないためです。

また、これらのメンバーを参照する計算は、ウォブラーをスローします。アクセス許可は計算の前に評価されるため、これらの計算を削除するか、運用中にキューブの ScriptErrorHandlingMode プロパティを IgnoreAll に設定する最適ではない解決策に頼る必要があります。

補足: パースペクティブはセキュリティではなく、プレゼンテーションに使用されます。そのため、パースペクティブでブロックしたものをユーザーに見せたくない場合は、MDX を使用したり、パースペクティブを無視するクライアント機能を使用したりするなど、他の方法でそれらを表示できることに注意してください。

余談ですが、この程度のセキュリティはクライアント側の問題であると示唆する人もいます。同意しません。

于 2009-06-22T13:41:36.803 に答える