Data.Recordは、Endecaデータ・ドメインにデータをロードするための基本的なデータ型です。
バルク・ロードAPIを使用してEndecaデータ・ドメインにデータをロードするクライアント・プログラムでは、ソース・データ・レコードをネイティブ・フォーマットからRecordオブジェクトに変換する必要があります。概念的に、Recordはキー/値ペアの名前付きセットです。キー/値ペアはData.Assignmentです。キーはStringで、値には次の表に示したサポートされるデータ型のいずれかを指定できます。
Recordの名前もAssignmentなので、この中のどの型でも指定できます。そのためSpecと呼ばれています。Specはデータ・レコードの主キーとして機能し、Recordごとに1つ必要です。
Record.Builder recBuilder = Record.newBuilder();
Assignment.Builder assgtBuilder = Assignment.newBuilder();
assgtBuilder.setName("Name");
assgtBuilder.setStringValue(name);
assgtBuilder.setDataType(Assignment.DataType.STRING);
Assignment nameAssgt = assgtBuilder.build();
recBuilder.setSpec(nameAssgt);
assgtBuilder.setName("Price");
assgtBuilder.setDoubleValue(price);
assgtBuilder.setDataType(Assignment.DataType.DOUBLE);
Assignment priceAssgt = assgtBuilder.build();
recBuilder.addAssignments(priceAssgt);
Data.Assignment.newBuilder().setName("SKU").setString("AB1234").setDataType(Data.Assignment.DataType.STRING).build();
| 列挙データ型 | Assignment.Builderのsetter | Dgraphデータ型 |
|---|---|---|
| BOOLEAN | setBoolValue() | mdex:boolean |
| DOUBLE | setDoubleValue() | mdex:double |
| DATETIME | setStringValue() | mdex:dateTime |
| DURATION | setStringValue() | mdex:duration |
| GEOCODE | setStringValue() | mdex:geocode |
| INT | setInt32Value() | mdex:int |
| INT64 | setInt64Value() | mdex:long |
| STRING | setStringValue() | mdex:string |
| TIME | setStringValue() | mdex:time |
setDataType()メソッドは、EndecaサーバーにAssignmentのデータ型を示します。たとえば、setStringValue("foo")とsetDataType(Data.Assignment.DataType.DOUBLE)を呼び出して、結果のAssignmentをRecordに含めてサーバーに送信すると、サーバーではDOUBLE値の抽出を試みますが、何も取得されません。データ型を指定しないと、Assignmentは無効になります。
// BOOLEAN example:
assgtBuilder.setBoolValue(false);
assgtBuilder.setDataType(Assignment.DataType.BOOLEAN);
// DOUBLE example:
assgtBuilder.setDoubleValue(99.95);
assgtBuilder.setDataType(Assignment.DataType.DOUBLE);
// DATETIME example:
assgtBuilder.setStringValue("2010-11-18T17:00:00Z");
assgtBuilder.setDataType(Assignment.DataType.DATETIME);
// DURATION example:
assgtBuilder.setStringValue("P429DT1H2M3S");
assgtBuilder.setDataType(Assignment.DataType.DURATION);
// GEOCODE example:
assgtBuilder.setStringValue("42.365615 -71.075647");
assgtBuilder.setDataType(Assignment.DataType.GEOCODE);
// INT example:
assgtBuilder.setInt32Value(128);
assgtBuilder.setDataType(Assignment.DataType.INT);
// INT64 example:
assgtBuilder.setInt64Value(92233720);
assgtBuilder.setDataType(Assignment.DataType.INT64);
// STRING example:
assgtBuilder.setStringValue("Road Bikes");
assgtBuilder.setDataType(Assignment.DataType.STRING);
// TIME example:
assgtBuilder.setStringValue("09:14:52");
assgtBuilder.setDataType(Assignment.DataType.TIME);