EQLで文を定義し、LOOKUP
式を使用して他の文からこれらの文を参照できます。
複数のEQL副問合せを単一のナビゲーション問合せのコンテキスト内で指定することも、それぞれを異なるアナリティク・ビューに対応するように指定することも、異なる粒度レベルの小計に指定することもできます。 また、式では他の計算文からの値も使用できます。 これは、粒度の粗いバケット内のアナリティクスの計算に、粗い小計が必要な場合に役立ちます。
たとえば、指定した年度の各営業担当者のパーセント分布を計算する場合は、その年の総合計も計算する必要があります。 参照表を使用して、これらのタイプの問合せを作成できます。
LOOKUP式の構文
LOOKUP
式は単純な結合形式です。 この処理では、前の文の結果が検索表として処理されます。
LOOKUP
式の構文は次のとおりです:
<LookupExpr> ::= <statement-name>[<LookupList>].<attribute-name>大カッコ演算子はリテラルで、レコード・セットとグループ化属性を識別するために使用されます。ドット演算子もリテラルであり、フィールドを識別するために使用されます。
<LookupList> ::= <empty> ::= <SimpleExpr> [,<LookupList>]このBNF構文では、大カッコは2番目のLookupListのオプションの使用を示します。
参照リストは、指定された文のグループ化属性に対応します。 検索リストがターゲット・グループ・キー値と一致しない場合、またはターゲット列が一致するターゲット・グループ・キー値のNULL
の場合、結果はNULL
になります。
GROUP BY
句を順に参照します。 索引付けされた値の計算されたルックアップは可能です。つまり、次の例に示すように、前年からの総売上などの関連情報をルックアップできます:
DEFINE YearTotals AS SELECT SUM(SalesAmount) AS Total FROM SaleState GROUP BY Year; RETURN AnnualCategoryPcts AS SELECT SUM(SalesAmount) AS Total, Total/YearTotals[Year].Total AS Pct FROM SaleState GROUP BY Year, Category; RETURN YoY AS SELECT YearTotals[Year].Total AS Total, YearTotals[Year-1].Total AS Prior, (Total-Prior)/Prior AS PctChange FROM SaleState GROUP BY Year
状態に対するLOOKUPの使用
LOOKUP
の式はサポートされており、ターゲット文は名前付きの状態を参照しています。このルールは、ターゲット状態の主キーと照合される大カッコ内に1つの式のみ存在する必要があります。
In the definition of attribute "x": The LOOKUP expression has 2 lookup value(s); a LOOKUP expression that refers to state "Sales" must have exactly one lookup value, corresponding to the state's primary key "SalesID"
別の文からの値の参照
たとえば、リージョンごとのProductTypeの売上の割合をコンピュートするとします。 1つの集計によってリージョン別にグループ化された合計が計算され、後続の集計によってリージョンおよびProductType別にグループ化された合計が計算されます。
この2番目の集計では、リージョン集計の結果を参照する式を使用します。 つまり、このリージョンのProductTypeが表すリージョン全体の小計の割合をコンピュートするために、リージョンとProductTypeの各ペアが次のようになります:
DEFINE RegionTotals AS SELECT SUM(Amount) AS Total FROM SaleState GROUP BY Region; RETURN ProductPcts AS SELECT 100 * SUM(Amount) / RegionTotals[Region].Total AS PctTotal FROM RegionTotals GROUP BY Region, ProductType
売上高のパーセンテージを計算しています
この例では、各製品タイプの売上に対するパーセンテージを四半期ごとに計算します。
この問合せでは、ある文の情報を別の文で使用するために、その文の情報を計算する必要があります。
DEFINE QuarterTotals AS SELECT SUM(Amount) AS Total FROM SaleState GROUP BY Quarter; RETURN ProductPcts AS SELECT 100 * SUM(Amount) / QuarterTotals[Quarter].Total AS PctTotal FROM QuarterTotals GROUP BY Quarter, ProductType