RECORD_IN_FAST_SAMPLE
は、現在のレコードが名前付きの状態のレコードのサンプルに含まれるかどうかを示すブールを返す行関数です。
RECORD_IN_FAST_SAMPLE
関数の構文は、次のとおりです:
RECORD_IN_FAST_SAMPLE(<double_literal>)
ここで、double_literalはリクエストされたサンプルのサイズを指定し、レコードの合計数の割合として表されます。 サンプル・サイズは0.0から1.0の間(両端を含む)である必要があります。 たとえば、0.1という値は、州内のレコードの約10%を返します。
RECORD_IN_FAST_SAMPLE
は、DgraphからStudioに送信されるデータのサイズを削減するための高速で便利な機能(たとえば、ヒート・マップなどの近似ビジュアライゼーションを生成する場合)を意図しています。 ただし、この関数では厳密にランダムなサンプルはコンピュートされません。 つまり、コレクション内の各レコードが選択される可能性が同じであるというケースではなく、kレコードの各サブセットがkレコードの他のすべてのサブセットと同じ確率で選択される可能性はありません。
関数の使用に関する制限
RECORD_IN_FAST_SAMPLE
関数を使用する場合の制限事項は、次のとおりです:
WHERE
条件としてのみ使用できます。
CASE
式の中に出現することも、別の関数の引数として使用することもできません。
FROM
が単一状態の文でのみ使用できます。 EQLは、文FROM
の他の文、FROM
のビュー、またはFROM
のJOIN
またはCROSS
でRECORD_IN_FAST_SAMPLE
が発生した場合にエラーを通知します。
これらの制限に違反すると、EQLチェック・エラーになります。
WHERE
句で関数を使用する方法を示しています:
RETURN Results AS SELECT TotalSales AS Sales FROM SalesState WHERE RECORD_IN_FAST_SAMPLE(0.1)
RECORD_IN_FAST_SAMPLE
はブール演算子のいずれかに対して使用できます:
RETURN Results AS SELECT TotalSales AS Sales FROM SalesState WHERE TotalSales IS NOT NULL AND RECORD_IN_FAST_SAMPLE(0.1)
サンプリングと結合に関する注意
DEFINE s1 AS SELECT ... FROM State1 WHERE RECORD_IN_FAST_SAMPLE(0.1); DEFINE s2 AS SELECT ... FROM State2 WHERE RECORD_IN_FAST_SAMPLE(0.1); RETURN s3 AS SELECT .. FROM s1 JOIN s2 ON (...)
s1およびs2の結果には、それぞれState1およびState2のレコードの約10%が含まれます。 ただし、一般的に、以前の文がサンプリングされていなかった場合、s 3の結果に含まれるレコードの数は、10%未満になります。