FILTER (MDX)
セットを検証し、指定された式が要素ごとに True となるサブセットを返します。セットの順序は変わりません。
返りタイプ
この関数は、セットを返します。
構文および詳細
FILTER(set_expression, logical_expression)
-
set_expression は、セットに対して評価される式です。
-
logical_expression は論理式で、通常はメジャー値またはプロパティ値を検証します。
logical_expression の代わりに、メジャー検索式を使用できます。この場合の FILTER の動作については、例を参照してください。
例
例えば、以下のクエリを考えてみます。これは、患者数が 1150 人より多い市町村のみを返します。
SELECT MEASURES.[%COUNT] ON 0,
FILTER(homed.city.MEMBERS, MEASURES.[%COUNT]>1150) ON 1 FROM patients
Patient Count
1 Cedar Falls 1,188
2 Centerville 1,155
3 Cypress 1,221
4 Elm Heights 1,266
5 Juniper 1,197
6 Magnolia 1,156
一方、以下のクエリを考えてみます。これは、患者数に関係なく、患者のいる市町村を返します。
SELECT MEASURES.[%COUNT] ON 0,
FILTER(homed.city.MEMBERS, MEASURES.[%COUNT]>=0) ON 1 FROM patients
Patient Count
1 Cedar Falls 1,188
2 Centerville 1,155
3 Cypress 1,221
4 Elm Heights 1,266
5 Juniper 1,197
6 Magnolia 1,156
7 Pine 1,139
8 Redwood 1,144
9 Spruce 1,135
別の例として、以下のクエリは、より複雑なフィルタ式を使用しています。
SELECT MEASURES.[%COUNT] ON 0,
FILTER(diagd.members, (MEASURES.[%COUNT]>500 and MEASURES.[%COUNT]<1000)) ON 1
FROM patients
Patient Count
1 asthma 746
2 diabetes 555
次の例は、プロパティを評価するフィルタ式を使用しています。
SELECT homed.CURRENTMEMBER.PROPERTIES("Population") ON 0,
FILTER(homed.city.MEMBERS,homed.CURRENTMEMBER.PROPERTIES("Population")>20000) ON 1 FROM patients
ZIP
1 Cedar Falls 90,000
2 Centerville 49,000
3 Elm Heights 33,194
4 Redwood 29,192
FILTER をメジャー検索式で使用する場合、この関数は、指定された条件を満たした少なくとも 1 つのファクトに基づくメンバのみを返します (メジャー検索式は、インターシステムズによる MDX への拡張機能で、ファクト・テーブル自体のメジャー値を考慮するものです)。
SELECT {MEASURES.[%COUNT]} ON 0, FILTER(diagd.members, %SEARCH.&[[MEASURES].[age]<10]) ON 1 FROM patients
Patient Count
1 None 8,425
2 asthma 703
このクエリは、10 歳未満の少なくとも 1 人の患者がいる診断を示しています。その他、糖尿病や骨粗しょう症などの診断では、このような若い患者はいません。