PREVMEMBER (MDX)
返りタイプ
この関数は、メンバを返します。
構文および詳細
member_expression.PREVMEMBER
以下は、この指定の説明です。
-
member_expression は、メンバを返す式です。
この式は、メジャーを参照できません。
この関数は、指定されたメンバが属するレベルのメンバを検証し、(そのセットの既定の順序を考慮して) そのセットの前のメンバを返します。時間ディメンジョンでは、この関数はすべての親レベルを無視します。データ・ディメンジョンでは、この関数は親レベルを考慮し、指定された親メンバ内で現在のメンバから逆方向にカウントします。(ここでいう時間ディメンジョンとデータ・ディメンジョンは、キューブで定義されているディメンジョン・タイプのみを参照します。"InterSystems Business Intelligence のモデルの定義" を参照してください。)
PREVMEMBER 関数は、LAG(1) と同等です。
どの時間ディメンジョン内でも、この関数は、日付部分に基づく時間レベル (月だけでレコードをグループ化する Month など) よりも、時間軸に基づく時間レベル (年と月でレコードをグループ化する Period など) で役立ちます。例を参照してください。詳細は、"時間レベルの概要" を参照してください。
例
最初の例は時間ディメンジョンを使用します。参考として示された以下のクエリを検討してください。
SELECT MEASURES.[%COUNT] ON 0,
{birthd.1948,birthd.1949,birthd.1950,birthd.1951,birthd.1952} ON 1
FROM patients
Patient Count
1 1948 10
2 1949 4
3 1950 12
4 1951 8
5 1952 6
以下のクエリは PREVMEMBER を使用します。
SELECT MEASURES.[%COUNT] ON 0, birthd.1951.PREVMEMBER ON 1 FROM patients
Patient Count
1950 12
別の例を示します。
SELECT MEASURES.[%COUNT] ON 0, birthd.1950.PREVMEMBER ON 1 FROM patients
Patient Count
1949 4
この例では、Year レベルは Decade レベルの子になります。つまり、メンバ 1949 と 1950 は異なる親に属します。示されているとおり、時間ディメンジョンで PREVMEMBER 関数を使用すると、この関数は親レベルを無視します。
2 番目の例では、データ・ディメンジョン (HomeD ディメンジョン) を使用します。このディメンジョンの階層を表示するには、FIRSTCHILD 関数の例を参照してください。以下のクエリは、このディメンジョンで PREVMEMBER を使用します。
SELECT MEASURES.[%COUNT] ON 0, homed.city.Magnolia.PREVMEMBER ON 1 FROM patients
Patient Count
Cypress 104
これはデータ・ディメンジョンであるため、このクエリは、親 ZIP Code 内の City レベルの前のメンバを検索します。この ZIP Code 内では、Cypress が最初の City であるため、以下のクエリは結果を返しません。
SELECT MEASURES.[%COUNT] ON 0, homed.city.Cypress.PREVMEMBER ON 1 FROM patients
Patient Count
*
日付の 部分に基づく時間レベルでは、この関数はレベルの最初のメンバについて null を返します。月だけでレコードをグループ化する Month レベルについて考えます。この関数に January を指定すると、エンジンによって null が返されます。
SELECT [BirthQD].[H1].[Month].[January].PREVMEMBER ON 1 FROM patients
*
PREVMEMBER を使用して前回の期間に販売されたユニット数を取得する例については、%CELLZERO を参照してください。