レコード・ソースを指定するには、文書に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つのレコードが返されます。