SETの集計関数は、単一割当て属性を取得し、その属性からすべての(非NULL)値のセットを構成します。
単一割当て属性には、非データ型(mdex:longなど)があります。 そのため、SET関数は、非セット・データ型属性を取得し、セット・データ型の結果(たとえば、mdex:long-set)を生成します。
SET関数の動作は次のとおりです:
結果セットには、設定データ型(mdex:double-setなど)があります。 それ以降のすべての操作は、セットのルールに従う必要があります。
このSET機能は、後述の1つの引数バージョンと2つの引数バージョンで使用できます。 この関数はSELECT句でのみ使用できます。
SET 1引数のバージョン
SET関数の1引数バージョンの構文は、次のとおりです:
SET(<single-assign_attribute>)
属性のデータ型は、非セット・データ型(単一割当て二重属性の場合のmdex:doubleなど)である必要があります。
RETURN results AS SELECT SET(Price) AS prices FROM WineState GROUP BY WineType ORDER BY WineType
WineType prices
---------------------------------------------------------------
| Blanc de Noirs | { 16.99 } |
| Bordeaux | { 21.99 } |
| Brut | { 22.99, 23.99 } |
| Chardonnay | { 17.95, 34.95 } |
| Merlot | { 25.99 } |
| Pinot Noir | { 14.99 } |
| Red | { 12.99, 13.95, 17.5, 18.99, 21.99, 9.99 } |
| White | { 20.99, 32.99, 43.99 } |
| Zinfandel | { } |
---------------------------------------------------------------
結果として、ZinfandelにはPrice属性の割当てがないため、Zinfandelでは空のセットがあります。
SET 2引数バージョン
SETアグリゲータの結果が非常に大きくなる(Dgraphで過剰なメモリーが消費される)場合、2引数形式のアグリゲータが設定サイズを制限します。
SET関数の構文は、次のとおりです:
SET(<single-assign_attribute>, <max-size>)
説明:
mdex:stringなど)である属性です。
SETは常に空のセットを返します。
SET(Price, 3) is valid. SET(Price, x) is not valid, even if x is an integer.
RETURN results AS SELECT SET(Price, 2) AS prices FROM WineState GROUP BY WineType ORDER BY WineType
WineType prices
-------------------------------------
| Blanc de Noirs | { 16.99 } |
| Bordeaux | { 21.99 } |
| Brut | { 22.99, 23.99 } |
| Chardonnay | { 17.95, 34.95 } |
| Merlot | { 25.99 } |
| Pinot Noir | { 14.99 } |
| Red | { 12.99, 9.99 } |
| White | { 20.99, 32.99 } |
| Zinfandel | { } |
-------------------------------------
その結果、赤のセットには2つの要素があり、一方の引数のSETバージョンを持つ6つの要素があることに注意してください。 白セットと同様に、以前は3つの要素で構成されています。
データ型エラー
関数を使用する場合、結果セットにはSET mdex:double-setデータ型などのセット・データ型があることに注意してください。
RETURN results AS SELECT SET(Price) AS prices FROM WineState GROUP BY WineType HAVING prices > 10
In statement "results": In HAVING clause: Cannot compare mdex:double-set and mdex:long
このエラーの理由は、価格がmdex:double-setタイプで、mdex:doubleタイプである10の数値と比較されていることです。
RETURN results AS SELECT SET(Price) AS prices FROM WineState GROUP BY WineType HAVING SOME x IN prices SATISFIES (x > 10)
この例では、SATISFIES式によって数値の比較が可能になります。