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.
  • Создайте материализованное представление, используя данные из временной таблицы.
  • При необходимости создайте индексы для материализованного представления.
Другие вопросы по тегам