Скалярные функции

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 строка