トリガーの例
MaxLとMDXを一緒に使用して、Essbaseキューブ領域の状態の変更を追跡できるようにするトリガーを作成および管理します。
次の例は、Sample.Basicデータベースに基づいています。
ノート:
動的計算のメンバーまたは他のパーティションのメンバーからのデータを必要とするトリガーは定義できません。
例1: 1月の売上の追跡
例1では、次の月、製品および地域についてActual、Salesの値が追跡されます。
-
1月(「年」ディメンションのメンバーJan)
-
Colas (「製品」ディメンションのメンバー100)
-
東部地域内(「市場」ディメンションのメンバーEast)
計算されている現在のメンバーがJanで、1月のColasのActual、Salesの値が20を超えている場合、例ではファイルTrigger_jan_Salesにエントリが記録されます。
create or replace trigger Sample.Basic.Trigger_Jan_20
Where
{(Jan,Sales,[100],East,Actual)}
When
Jan > 20 AND Is(Year.CurrentMember, Jan)
then spool Trigger_Jan_20
end;
例2: 第1四半期の売上の追跡
例2では、次の月、製品および地域についてActual、Salesの値が追跡されます。
-
1月、2月、3月(「年」ディメンションのメンバーQtr1の子)
-
Colas (「製品」ディメンションのメンバー100)
-
東部地域内(「市場」ディメンションのメンバーEast)
計算されている現在のメンバーはJan、FebまたはMarで、1月、2月または3月のいずれかの月のColasのActual、Salesの値が20を超える場合、例ではファイルTrigger_Jan_Sales_20、Trigger_Feb_Sales_20またはTrigger_Mar_Sales_20にエントリが記録されます。
create or replace trigger Sample.Basic.Trigger_Qtr1_Sales
Where
Crossjoin(
{Qtr1.children},
{([Measures].[Sales], [Product].[100], [Market].[East], [Scenario].[Actual])}
)
When
Year.Jan > 20 and is(Year.currentmember, Jan)
then spool Trigger_Jan_Sales_20
When
Year.Feb > 20 and is(Year.currentmember, Feb)
then spool Trigger_Feb_Sales_20
When
Year.Mar > 20 and is(Year.currentmember, Mar)
then spool Trigger_Mar_Sales_20
end;
例3: インベントリ・レベルの追跡
例3では、次の製品、地域および月について、インベントリ・レベルが追跡されます。
-
Colas (製品100)
-
東部地域内(市場East)
-
1月、2月および3月(Qtr1の子)
東部地域のColasの在庫が500,000を下回った場合、例のトリガーによって、recipient@example.comに電子メールが送信されます。
create or replace trigger Sample.Basic.Inventory_east
where CrossJoin(
{[Qtr1].children},
{([East],[100],[Ending Inventory])}
)
when [Ending Inventory] < 500000 then
mail ([smtp_server.example.com],[sender@example.com],
[recipient@example.com],
[Subject of E-Mail])
end;