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
式によって数値の比較が可能になります。