TRUNCATE_SET関数

TRUNCATE_SET行関数は、1つのセットと1つの整数を取得して、セット内で指定した数を超えない要素を持つセットのコピーを返します。

TRUNCATE_SET関数の構文は次のとおりです。
TRUNCATE_SET(<set>, <max-size>)
ここで、
  • setはセット・データ型の1つのセットです(mdex:string-setmdex:long-setなど)。たとえば、setは、複数割当ての文字列属性にすることができます。
  • max-sizeは、切り捨てるセットの最大サイズを指定する整数です。max-sizeがセット内の要素の数より小さい場合、Dgraphは破棄する要素を任意に選択します。この選択は、問合せの複数実行間で一定です。max-sizeが0 (ゼロ)または負数である場合は、空のセットが返されます。
次に、結果の例をいくつか示します({ }は空のセットを表しています)。
TRUNCATE_SET({ }, 2) = { }
TRUNCATE_SET({ 'a', 'b' }, 2) = { 'a', 'b' }
TRUNCATE_SET({ 'a', 'b', 'c' }, 2) = { 'b', 'c' }
TRUNCATE_SET({ 1, 2 }, 20) = { 1, 2 }
TRUNCATE_SET({ 1, 2 }, -3) = { }

TRUNCATE_SETが有効なのは、現在のフロントエンドUIに対して、セットの最終的な結果を適切で管理可能なサイズにする必要がある場合です。

TRUNCATE_SETの例

この例では、Flavorsは複数割当ての文字列属性であり、WineIDはレコードの主キーです。
RETURN results AS
SELECT
   WineID AS id,
   Flavors AS fullFlavors,
   TRUNCATE_SET(fullFlavors, 1) AS truncFlavors
FROM WineState
WHERE WineID BETWEEN 15 AND 19
ORDER BY id
この文の結果は次のようになります。
fullFlavors                           id     truncFlavors
-------------------------------------------------------------
| { Blackberry, Oaky, Strawberry }  | 15 | { Blackberry }   |
| { Currant, Licorice, Tobacco }    | 16 | { Licorice }     |
| { Cedar, Cherry, Spice }          | 17 | { Cherry }       |
| { Black Cherry, Cedar, Fruit }    | 18 | { Black Cherry } |
| { Herbal, Strawberry, Vanilla }   | 19 | { Herbal }       |
-------------------------------------------------------------

fullFlavorsセットは、選択された5つの各レコードに対して、Flavorsの完全なセットが割り当てられていることを示しています。fullFlavorsセットは、1要素のセットに切り捨てられます。