Начало работы
Подключение
Тесты производительности
Развёртывание
Использование данных
Загрузка данных
Миграция данных
Запрос данных
Управление кластерами
Обновление
Глобальное обслуживание
Масштабирование
Мониторинг
Безопасность
Лучшие практики
Технические принципы
Типы данных
Хранилище
Исполняющий движок
Потоковая обработка (Domino)
MARS3 Индексы
Расширения
Расширенные функции
Расширенный запрос
Федеративные запросы
Grafana
Резервное копирование и восстановление
Аварийное восстановление
Графовая база данных
Введение
Предложения
Функции
Расширенные темы
Руководство
Настройка производительности
Устранение неполадок
Инструменты
Параметры конфигурации
SQL-команда
Часто задаваемые вопросы
id()Функция id() возвращает внутренний идентификатор вершины или ребра.
Синтаксис: id(expression)
Возвращаемое значение:
Целое число типа agtype.
Параметры:
| Имя | Описание |
|---|---|
expression |
Выражение, вычисляющееся в вершину или ребро. |
Запрос:
SELECT *
FROM cypher('graph_name', $$
MATCH (a)
RETURN id(a)
$$) as (id agtype);
Результат:
| id |
|---|
| 0 |
| 1 |
| 2 |
| 3 |
| 4 строки |
start_id()Функция start_id() возвращает внутренний идентификатор начальной вершины ребра.
Синтаксис: start_id(expression)
Возвращаемое значение:
Целое число типа agtype.
Параметры:
| Имя | Описание |
|---|---|
expression |
Выражение, вычисляющееся в ребро. |
Запрос:
SELECT *
FROM cypher('graph_name', $$
MATCH ()-[e]->()
RETURN start_id(e)
$$) as (start_id agtype);
Результат:
| start_id |
|---|
| 0 |
| 1 |
| 2 |
| 3 |
| 4 строки |
end_id()Функция end_id() возвращает внутренний идентификатор конечной вершины ребра.
Синтаксис: end_id(expression)
Возвращаемое значение:
Целое число типа agtype.
Параметры:
| Имя | Описание |
|---|---|
expression |
Выражение, вычисляющееся в ребро. |
Запрос:
SELECT *
FROM cypher('graph_name', $$
MATCH ()-[e]->()
RETURN end_id(e)
$$) as (end_id agtype);
Результат:
| end_id |
|---|
| 4 |
| 5 |
| 6 |
| 7 |
| 4 строки |
type()Функция type() возвращает тип ребра в виде строки.
Синтаксис: type(edge)
Возвращаемое значение:
Строка типа agtype.
Параметры:
| Имя | Описание |
|---|---|
edge |
Выражение, вычисляющееся в ребро. |
Запрос:
SELECT *
FROM cypher('graph_name', $$
MATCH ()-[e]->()
RETURN type(e)
$$) as (type agtype);
Результат:
| type |
|---|
| "KNOWS" |
| "KNOWS" |
| 2 строки |
properties()Функция properties() возвращает карту типа agtype, содержащую все свойства вершины или ребра. Если аргумент уже является картой типа agtype, он возвращается без изменений.
Синтаксис: properties(expression)
Возвращаемое значение:
Карта типа agtype.
Параметры:
| Имя | Описание |
|---|---|
expression |
Выражение, вычисляющееся в вершину, ребро или карту типа agtype. |
Примечания:
properties(null) возвращает null.Запрос:
SELECT *
FROM cypher('graph_name', $$
CREATE (p:Person {name: 'Stefan', city: 'Berlin'})
RETURN properties(p)
$$) as (type agtype);
Результат:
| properties |
|---|
| {name: "Stefan", city: "Berlin"} |
| 1 строка |
head()Функция head() возвращает первый элемент списка типа agtype.
Синтаксис: head(list)
Возвращаемое значение:
Результат имеет тот же тип, что и первый элемент списка.
Параметры:
| Имя | Описание |
|---|---|
list |
Выражение, вычисляющееся в список. |
Примечания:
head(null) возвращает null. null, head(list) возвращает null.Запрос:
SELECT *
FROM cypher('graph_name', $$
MATCH (a)
WHERE a.name = 'Eskil'
RETURN a.array, head(a.array)
$$) as (lst agtype, lst_head agtype);
Возвращает первый элемент списка.
Результат:
| lst | lst_head |
|---|---|
| ["one","two","three"] | "one" |
| 1 строка |
last()Функция last() возвращает последний элемент списка типа agtype.
Синтаксис: last(list)
Возвращаемое значение:
Результат имеет тот же тип, что и последний элемент списка.
Параметры:
| Имя | Описание |
|---|---|
list |
Выражение, вычисляющееся в список. |
Примечания:
last(null) возвращает null. null, last(list) возвращает null.Запрос:
SELECT *
FROM cypher('graph_name', $$
MATCH (a)
WHERE a.name = 'Eskil'
RETURN a.array, last(a.array)
$$) as (lst agtype, lst_tail agtype);
Возвращает последний элемент списка.
Результат:
| lst | lst_tail |
|---|---|
| ["one","two","three"] | "three" |
| 1 строка |
length()Функция length() возвращает количество рёбер в пути.
Синтаксис: length(path)
Возвращаемое значение:
Целое число типа agtype.
Параметры:
| Имя | Описание |
|---|---|
path |
Выражение, вычисляющееся в путь. |
Примечания: length(null) возвращает null.
Запрос:
SELECT *
FROM cypher('graph_name', $$
MATCH p = (a)-[]->(b)-[]->(c)
WHERE a.name = 'Alice'
RETURN length(p)
$$) as (length_of_path agtype);
Возвращает длину пути p.
Результат:
| length_of_path |
|---|
| 2 |
| 2 |
| 2 |
| 3 строки |
size()Функция size() возвращает количество элементов в списке типа agtype.
Синтаксис: size(list)
Возвращаемое значение:
Целое число типа agtype.
Параметры:
| Имя | Описание |
|---|---|
list |
Выражение, вычисляющееся в список. |
Примечания: size(null) возвращает null.
Запрос:
SELECT *
FROM cypher('graph_name', $$
RETURN size(['Alice', 'Bob'])
$$) as (size_of_list agtype);
Возвращает длину списка.
Результат:
| size_of_list |
|---|
| 2 |
| 1 строка |
startNode()Функция startNode() возвращает начальную вершину ребра.
[!CAUTION]
В YMatrix AGE функцииstartNode()иendNode()могут завершаться ошибкой в распределённой среде:ERROR: graphid cde <id> does not existЭто происходит, потому что ребро и его начальная вершина могут находиться на разных сегментах. Функция
startNode()пытается разрешить вершину поgraphid, но вершина может отсутствовать на текущем сегменте.Обходное решение: Используйте
start_id()илиend_id()для полученияgraphid, а затем выполните явныйMATCHсоответствующей вершины.
Синтаксис: startNode(edge)
Возвращаемое значение:
Вершина.
Параметры:
| Имя | Описание |
|---|---|
edge |
Выражение, вычисляющееся в ребро. |
Примечания:
startNode(null) возвращает null.Запрос:
SELECT *
FROM cypher('graph_name', $$
MATCH (x:Developer)-[r]-()
RETURN startNode(r)
$$) as (v agtype);
Результат:
| v |
|---|
| Node[0]{name:"Alice",age:38,eyes:"brown"} |
| Node[0]{name:"Alice",age:38,eyes:"brown"} |
| 2 строки |
endNode()Функция endNode() возвращает конечную вершину ребра.
Синтаксис: endNode(edge)
Возвращаемое значение:
Вершина.
Параметры:
| Имя | Описание |
|---|---|
edge |
Выражение, вычисляющееся в ребро. |
Примечания:
endNode(null) возвращает null.Запрос:
SELECT *
FROM cypher('graph_name', $$
MATCH (x:Developer)-[r]-()
RETURN endNode(r)
$$) as (v agtype);
Результат:
| v |
|---|
| Node[2]{name:"Charlie",age:53,eyes:"green"} |
| Node[1]{name:"Bob",age:25,eyes:"blue"} |
| 2 строки |
timestamp()Функция timestamp() возвращает разницу в миллисекундах между текущим временем и полуночью по UTC 1 января 1970 года.
Синтаксис: timestamp()
Возвращаемое значение:
Целое число типа agtype.
Примечания:
timestamp() возвращает одно и то же значение на протяжении всего выполнения запроса — даже для длительных запросов.Запрос:
SELECT *
FROM cypher('graph_name', $$
RETURN timestamp()
$$) as (t agtype);
Возвращает метку времени в миллисекундах.
Результат:
| t |
|---|
| 1613496720760 |
| 1 строка |
toBoolean()Функция toBoolean() преобразует строковое значение в булево.
Синтаксис: toBoolean(expression)
Возвращаемое значение:
Булево значение типа agtype.
Параметры:
| Имя | Описание |
|---|---|
expression |
Выражение, вычисляющееся в булево или строку. |
Примечания:
toBoolean(null) возвращает null. expression уже является булевым значением, оно возвращается без изменений. null.Запрос:
SELECT *
FROM cypher('graph_name', $$
RETURN toBoolean('TRUE'), toBoolean('not a boolean')
$$) as (a_bool agtype, not_a_bool agtype);
Результат:
| a_bool | not_a_bool |
|---|---|
| true | NULL |
| 1 строка |
toFloat()Функция toFloat() преобразует целое число или строку в число с плавающей точкой.
Синтаксис: toFloat(expression)
Возвращаемое значение:
Число с плавающей точкой.
Параметры:
| Имя | Описание |
|---|---|
expression |
Выражение, вычисляющееся в числовое значение или строку типа agtype. |
Примечания:
toFloat(null) возвращает null. expression уже является числом с плавающей точкой, оно возвращается без изменений. null.Запрос:
SELECT *
FROM cypher('graph_name', $$
RETURN toFloat('11.5'), toFloat('not a number')
$$) as (a_float agtype, not_a_float agtype);
Результат:
| a_float | not_a_float |
|---|---|
| 11.5 | NULL |
| 1 строка |
toInteger()Функция toInteger() преобразует число с плавающей точкой или строку в целое число.
Синтаксис: toInteger(expression)
Возвращаемое значение:
Целое число типа agtype.
Параметры:
| Имя | Описание |
|---|---|
expression |
Выражение, вычисляющееся в числовое значение или строку типа agtype. |
Примечания:
toInteger(null) возвращает null. expression уже является целым числом, оно возвращается без изменений. null.Запрос:
SELECT *
FROM cypher('graph_name', $$
RETURN toInteger('42'), toInteger('not a number')
$$) as (an_integer agtype, not_an_integer agtype);
Результат:
| an_integer | not_an_integer |
|---|---|
| 42 | NULL |
| 1 строка |
coalesce()Функция coalesce() возвращает первое ненулевое значение из списка выражений.
Синтаксис: coalesce(expression [, expression]*)
Возвращаемое значение:
Результат имеет тот же тип, что и первое ненулевое выражение.
Параметры:
| Имя | Описание |
|---|---|
expression |
Выражение, которое может быть равно null. |
Примечания:
null, coalesce() возвращает null.Запрос:
SELECT *
FROM cypher('graph_name', $$
MATCH (a)
WHERE a.name = 'Alice'
RETURN coalesce(a.hairColor, a.eyes), a.hair_color, a.eyes
$$) as (color agtype, hair_color agtype, eyes agtype);
Результат:
| color | hair_color | eyes |
|---|---|---|
| "brown" | NULL | "Brown" |
| 1 строка |