Добавление дополнительного свойства в базу данных Neptune

#graph #gremlin #amazon-neptune

#График #гремлин #amazon-neptune

Вопрос:

Я пытаюсь добавить дополнительное свойство с именем «insert_date» к существующим вершинам и ребрам. Я пытался

 g.V().setProperty('insert_date',datetime('2020-10-06'))

  

Ошибка:

 {
  "requestId": "33cf8df5-3cbe-41ac-b650-5752debec04d",
  "code": "MalformedQueryException",
  "detailedMessage": "Query parsing failed at line 1, character position at 10, error message : token recognition error at: 'rop'"
}
  

Я пытаюсь выполнить приведенную выше команду из записной книжки Neptune.

Он просто добавляет новые вершины со свойством insert_date. Но я не нашел способа изменить существующие вершины или ребра.

Пожалуйста, подскажите, возможно ли это. Поскольку я хочу реализовать дельта-извлечение, чтобы я мог извлекать только новые вершины или ребра каждый раз, когда я запускаю ETL.

Спасибо

Комментарии:

1. Не могли бы вы предоставить некоторые дополнительные сведения по этому вопросу о добавлении Нептуном новой вершины? Приведенный выше код найдет вершину с идентификатором 1234 , и если он найдет ее, он установит insert_date для свойства значение `2020-10-06′.

2. Я обновил рассматриваемую команду. На самом деле я пытаюсь добавить новое свойство к существующим вершинам, которое является свойством insert_date.

Ответ №1:

Чтобы добавить свойство к существующей вершине в Gremlin, вы используете шаг property() . Например, если вы хотите добавить свойство insert_date к вершине с идентификатором A , вы должны использовать следующий оператор:

g.V('A').property('insert_date', '2020-10-06')

Этот property() шаг добавит или обновит указанное свойство до нового значения. Это произойдет для всех текущих передаваемых элементов. Например, если вы хотите обновить только те элементы, у которых нет insert_date свойства, вы можете сделать это с помощью:

g.V().hasNot('insert_date').property('insert_date', '2020-10-06')

В каждом из этих примеров свойство будет добавлено как часть массива значений. Если вы хотите, чтобы свойство содержало только одно значение, вы можете использовать property() ступенчатую перегрузку, которая принимает мощность следующим образом:

g.V('A').property(Cardinality.single, 'insert_date', '2020-10-06')

В коде, который вы перечислили выше, следует отметить одну вещь. Хотя Neptune поддерживает datetime() функцию для запросов на основе строк, если вы не используете GLV, вам нужно будет создать это значение и передать исходную дату / время, как описано здесь .

Ответ №2:

Приведенная ниже команда работала для добавления дополнительных свойств к существующему графику.

 g.V().property("insert_date","2020-01-01 00:00:00")

  

Комментарии:

1. Это добавит или обновит insert_date свойство для каждой вершины в графике до ‘2020-01-01 00:00:00’. Не уверен, что это предполагаемое поведение или нет.