モデル式は、SELECT
文のmodel_clause
でのみ、さらにモデル・ルールの右側でのみ使用されます。モデル式は、model_clause
で事前定義されたメジャー列のセルに値を戻します。詳細は、「model_clause」を参照してください。
model_expression::=
モデル式でメジャー列を指定する場合、指定する任意の条件と式は単一の値に変換される必要があります。
モデル式で集計ファンクションを指定する場合、ファンクションの引数はmodel_clause
で事前定義したメジャー列です。集計ファンクションは、モデル・ルールの右側でのみ使用できます。
モデル・ルールの右側で分析ファンクションを指定すると、model_clause
に複雑な計算を直接表記することができます。モデル式で分析ファンクションを使用するときには、次の制限事項が適用されます。
分析ファンクションは、UPDATE
ルールのみで使用できます。
モデル・ルールの左側にFOR
ループまたはORDER
BY
句が含まれている場合は、モデル・ルールの右側で分析ファンクションを指定できません。
分析ファンクションのOVER
句の引数に集計を含めることはできません。
分析ファンクションのOVER
句の前の引数にセル参照を含めることはできません。
expr
自体がモデル式である場合、ネストしたセル参照と呼ばれます。ネストしたセル参照には、次の制限事項が適用されます。
ネストは1レベルのみ可能です。
ネストしたセル参照は、単一セル参照である必要があります。
model_rules_clause
にAUTOMATIC
ORDER
が指定されているとき、ネストしたセル参照で使用されるメジャーが静的なままの場合のみ、ネストしたセル参照をモデル・ルールの左側で使用できます。
後述するモデル式は、次に示すSELECT
文のmodel_clause
に基づいています。
SELECT country,prod,year,s FROM sales_view_ref MODEL PARTITION BY (country) DIMENSION BY (prod, year) MEASURES (sale s) IGNORE NAV UNIQUE DIMENSION RULES UPSERT SEQUENTIAL ORDER ( s[prod='Mouse Pad', year=2000] = s['Mouse Pad', 1998] + s['Mouse Pad', 1999], s['Standard Mouse', 2001] = s['Standard Mouse', 2000] ) ORDER BY country, prod, year;
次のモデル式は、記号表記法を使用して単一セル参照を表しています。この式は、2000年のマウス・パッドの売上を示します。
s[prod='Mouse Pad',year=2000]
次のモデル式は、CV
ファンクションを使用して、位置表記法を使用する複数セル参照を表しています。この式は、prod
ディメンション列の現在値の2001年における売上を示します。
s[CV(prod), 2001]
次のモデル式は、集計ファンクションを表しています。この式は、year
ディメンション列の現在の値-2からyear
ディメンション列の現在の値-1までの年のマウス・パッドの売上合計を示します。
SUM(s)['Mouse Pad',year BETWEEN CV()-2 AND CV()-1]