Apache AGE — создание ошибки материализованного представления
Я хотел создать материализованное представление из таблицы меток, а затем создать для него индексы. Однако, когда я набираю запрос для создания этого представления, postgres выдает ошибку.
Вот запрос, который я набираю, чтобы вернуть все вершины, содержащие метку «Книга»:
demo=# SELECT * FROM cypher ('demo', $$
demo$# MATCH (v:Book)
demo$# RETURN v
demo$# $$) as (vertex agtype);
vertex
---------------------------------------------------------------------------------------------------------------------------------------
{"id": 1125899906842625, "label": "Book", "properties": {"title": "The Hobbit"}}::vertex
{"id": 1125899906842626, "label": "Book", "properties": {"title": "SPQR: A History of Ancient Rome", "author": "Mary Beard"}}::vertex
(2 rows)
Вот как я создаю материализованное представление:
demo=# CREATE MATERIALIZED VIEW book_view AS SELECT * FROM cypher ('demo', $$
MATCH (v:Book)
RETURN v.author, v.title
$$) as (author agtype, title agtype);
ERROR: unhandled cypher(cstring) function call
DETAIL: demo
2 ответа
Я считаю, что вы не можете вызвать такую функцию, какcypher
чтобы создать представление. Поэтому вам следует попробовать использовать оператор SQL SELECT следующим образом:
CREATE MATERIALIZED VIEW book_view AS
SELECT properties->'author' AS author,
properties->'title' AS title
FROM demo."Book";
Вы можете попробовать обходной путь, сначала создав временную таблицу и заполнив ее результатами вашего запроса Cypher. Затем создайте материализованное представление, используя данные из временной таблицы. Используйте следующие шаги:
- Создайте временную таблицу для хранения результатов вашего запроса Cypher.
- Создайте материализованное представление, используя данные из временной таблицы.
- При необходимости создайте индексы для материализованного представления.