トリガーの例

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;