トリガーの例
関連するMaxL文: alter trigger、create trigger、display trigger、drop trigger。
次の例は、Sample.Basicデータベースに基づいています。
ノート:
「動的計算」メンバーまたは別のパーティションのメンバーからのデータを必要とするトリガーは定義できません。
例1: 1月の販売のトラッキング
例1は、翌月、製品およびリージョンのActual、Salesの値を追跡します:
-
January (Yearディメンション・メンバーJan)
-
Colas (Productディメンション・メンバー100)
-
東部リージョン (Marketディメンション・メンバーEast)で
計算されている現在のメンバーがJanで、Januaryの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は、次の月、製品およびリージョンの実績、販売の値を追跡します:
-
January, February, March (Yearディメンション・メンバーQtr1の子)
-
Colas (Productディメンション・メンバー100)
-
東部リージョン (Marketディメンション・メンバーEast)で
計算される現在のメンバーがJan、FebまたはMarで、January、FebruaryまたはMarchのいずれかの月の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)で
-
January、FebruaryおよびMarch (Qtr1の子)の場合
東部リージョンのColasのインベントリが500,000未満の場合、トリガー例では受信者@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;