レコード・ソースを指定するには、文書にFROM
句を含める必要があります。
文ではFROM
句が必須で、状態名や前に定義された文など、EQL文のレコードのソースを指定します。
FROM
構文は、次のとおりです:
FROM <recSource> [alias]
<recSource>は、次の場所に配置できます:
DEFINE
かRETURN
か)。
FROM
ではコレクション名は直接サポートされませんが、実際にはこの状態にはデータ・セットのコレクション名およびDgraphデータベースが含まれているためです。
JOIN
またはCROSS JOIN
のいずれか。
問合せでFROM
句を省略すると、EQLパーサーでエラーが返されます。
事前に定義された文でのFROMの使用
DEFINE RepQuarters AS SELECT COUNT(TransId) AS NumTrans FROM SaleState GROUP BY SalesRep, Quarter; RETURN Quarters AS SELECT AVG(NumTrans) AS AvgTransPerRep FROM RepQuarters GROUP BY Quarter
{ SalesRep, Quarter, NumTrans }
の属性が含まれます。 次に例を示します。
{ J. Smith, 11Q1, 10 } { J. Smith, 11Q2, 3 } { F. Jackson, 10Q4, 10 } ...
{ Quarter, AvgTransPerRep }
属性を持つリストを生成します。 次に例を示します。
{ 10Q4, 10 } { 11Q1, 4.5 } { 11Q2, 6 } ...
FROM句の状態名
EQLQuery
タイプを使用する次の単純な会話サービス問合せがあるとします:
<Request> <Language>en</Language> <State> <Name>WineState</Name> <CollectionName>Wines</CollectionName> <DataSourceFilter Id="DataFltr"> <filterString>WineType <> 'Red'</filterString> </DataSourceFilter> <SelectionFilter Id="SecFltr"> <filterString>Price > 25</filterString> </SelectionFilter> </State> <EQLConfig Id="WineRecs"> <EQLQueryString> RETURN results AS SELECT Price AS prices FROM WineState GROUP BY prices </EQLQueryString> </EQLConfig> </Request>
DataSourceFilter
フィルタ(セキュリティ・フィルタ)では、WineType=Red割当のレコードが最初に削除されます。 小規模のデータ・セットでは、11レコードのみがフィルタをパスします。 (WineTypeは単一割当てである必要がありますが、そうでないと問合せは失敗します)。
SelectionFilter
フィルタにより、価格割当が$ 25以上のレコードが選択されます。7つ以上のレコードが(前の11レコードから)フィルタで除外され、4レコードが残ります。
FROM
句は、WineStateという名前の状態を参照します。
したがって、EQL文のFROM
句はWineStateという状態を参照するため、状態からの両方のフィルタが適用され、4つのレコードが返されます。