プライマリ・コンテンツに移動
Oracle® Big Data Discovery Cloud Service EQLリファレンス

E65371-04
目次へ
目次
索引へ移動
索引

前
次
機械翻訳について

RECORD_IN_FAST_SAMPLE

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のビュー、またはFROMJOINまたはCROSSRECORD_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)

サンプリングと結合に関する注意

結合の結果はサンプリングすることはできませんが(前述の3番目の制限を参照)、サンプリングの結果を結合することもできます。 ただし、希望する結果が得られない場合があることに注意してください。 たとえば、次の問合せについて考えてみます:
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%未満になります。