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

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

前
次
機械翻訳について

HAS_REFINEMENTS

HAS_REFINEMENTSでは、特定の属性について、現在のナビゲーション状態に暗黙的でない絞込みがあるかどうかが計算されます。

HAS_REFINEMENTS関数の構文は、次のとおりです:
HAS_REFINEMENTS(<attribute>)
ここで、「属性」はコレクション内の(任意のデータ型の) Dgraph属性です。

特に、HAS_REFINEMENTSは、特定の属性がグループ内のすべてのレコードで同じ値を持つかどうかを判断します。 その場合、属性は実際の絞込み値を返すことができる必要があります。

戻り値

「属性」がアトミック(単一割当て)型の場合、HAS_REFINEMENTSの戻り動作は次のとおりです:
  • グループのすべての行で「属性」がNULLの場合、HAS_REFINEMENTSはNULLを返します。
  • 「属性」でグループ内のすべての行に対して同一(非NULL)の値がある場合、HAS_REFINEMENTSはFALSEを返します。
  • それ以外の場合(「属性」は値が混在している可能性がありますが、NULLを含まない場合があります)、HAS_REFINEMENTSはTRUEを返します。
「属性」がセット(複数割当)タイプの場合、HAS_REFINEMENTSの戻り動作は次のとおりです:
  • 「属性」がグループ内のすべての行に対して同じセットである場合、HAS_REFINEMENTSはFALSEを戻します。 これには、グループのすべての行に対して「属性」が空に設定された値が含まれます。
  • それ以外の場合、HAS_REFINEMENTSはTRUEを返します。

HAS_REFINEMENTSには、特定の属性に暗黙的でない絞込みがあるかどうかは示されますが、実際に絞込み値を戻すことはありません。

HAS_REFINEMENTSの例

この例では、HAS_REFINEMENTSを使用して、ACCT_FIRM属性が使用可能な絞込みを持っているかどうかを判断します:
RETURN Result AS
SELECT
  HAS_REFINEMENTS(ACCT_FIRM) AS Refs
FROM CorpData
GROUP

この場合、問合せはtrueを返し、属性が非暗黙的絞込みを使用できることを意味します。

NULLなどの空のセットを処理しています

HAS_REFINEMENTSでNULLのような空のセットを処理する場合は、この例(xは複数割当属性)のように、HAS_REFINEMENTSアグリゲータに集計ごとのWHERE句を追加できます:
RETURN Result AS
SELECT
  HAS_REFINEMENTS(x) WHERE (x IS NOT EMPTY) AS Refs
FROM CorpData
GROUP
この構文を使用すると、HAS_REFINEMENTSの戻り動作は次のようになります:
  • Xがグループの各行に対して空のセットである場合、HAS_REFINEMENTS(x) WHERE (x IS NOT EMPTY)はNULLになります。
  • Xがグループ内のすべての行に対して空でない同じセット値である場合、HAS_REFINEMENTS(x) WHERE (x IS NOT EMPTY)はFALSEです。
  • それ以外の場合、xは異なるセット(空のセットを含める必要はあるが、含まない)を混在させ、HAS_REFINEMENTS(x) WHERE (x IS NOT EMPTY)はTRUEです。

集計ごとのWHERE句の詳細は、「集計フィルタ」を参照してください。