レポートの複数選択パラメータを考えてみましょう:従業員
このパラメータには多くの可能な値があります。最初はリストに何も表示されず、関連付けられたテキストフィールド検索パラメーターがあり、検索された文字列の上位n件の一致で従業員選択リストを更新します。
入力した検索クエリがJohn Doeの場合、選択リストに次のように表示されると想像できます。
- ジョン・ドウ
- ...
- ザビエル・ジョン・ドーソン
これで、このフィルター処理されたリストから必要な数の項目を選択できますが、 John DoeとAlicia Keysの両方を選択する場合は、次のようになります。
- 最初に検索文字列「John Doe」を入力すると、それに応じて選択リストが入力されます
- John Doeを選択します- OK
- 検索文字列「Alicia Keys」を入力すると、選択リストにも入力されます
- John Doe の選択がなくなりました。AliciaとJohnの両方を同時に選択できるようにしたいのですが、何千もの名前の長い選択リストを調べたくありません。
アップデート:
背景にディメンション「従業員」を持つ OLAP キューブがあることを忘れていました。このディメンションはパラメータのソースとして使用され、param データセットは MDX を使用して値をフェッチするため、ここでは SQL ソリューションを適用できません。
現在のソリューションでは、MDX Filter および Head 関数を使用してカスタム セットを作成し、このセットを MDX クエリの ROWS 部分で使用します。
セットの作成方法は次のとおりです。
SET setEmployees AS {
HEAD(
FILTER( [Employees].[Employees].ALLMEMBERS,
INSTR([Employees].[Employees].CURRENTMEMBER.Name,@EmployeeSearch,1 >= 1 )
)
,100)
}
基本的に、このソリューションの問題は、複数の検索文字列を instr 関数に追加する方法です。
この種の状況に対する一般的な解決策はありますか? 私は間違った方向から問題に取り組んでいますか?