Могу ли я определить разные атрибуты для одинаковых значений в двух разных узлах для одной и той же метки?

Я хотел бы объединить данные из двух разных реляционных баз данных в один помеченный граф свойств. Базы данных имеют другую структуру данных, например:

System a:
First Name: Barack
Last Name: Obama

System b:
Name: Donald Trump

Defined Labels:
    :Person
    :SystemA
    :SystemB

Определенные узлы со свойствами для LabeledPropertyGraph:

:Person :SystemA
First Name: Barack
Last Name: Obama

:Person :SystemB
Name: Donald Trump

Можно ли интегрировать данные из двух баз данных в граф свойств, как описано?

1 ответ

Решение

Да, это возможно. Neo4j не имеет ограничений на то, какие свойства могут использоваться между узлами, поэтому узлы одной метки (:Person) могут иметь совершенно разные ключи свойств друг от друга.

Вы, конечно, захотите согласовать это в какой-то момент времени, чтобы вы могли запросить данные каким-то распространенным способом.

Тем временем вы можете использовать функции, такие как coalesce (), чтобы помочь вам работать с различными данными. Например, если вы хотите отобразить имена всех: узловых лиц, и они были в этих двух разных видах форматов, вы можете сделать запрос, например:

MATCH (p:Person)
RETURN coalesce(p.Name, p.`First Name` + ' ' p.`Last Name`) as name

Будет использовано первое ненулевое значение, обнаруженное функцией, поэтому, если Name свойство существует, оно будет использовано, в противном случае оно будет пытаться объединить свойства имени и фамилии в строку.

Другие вопросы по тегам