Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Замечание
Эта функция сейчас доступна в общедоступной предварительной версии. Эта предварительная версия предоставляется без соглашения на уровне обслуживания и не рекомендуется для рабочих нагрузок. Некоторые функции могут не поддерживаться или их возможности могут быть ограничены. Для получения дополнительной информации см. Дополнительные условия использования для предварительных версий Microsoft Azure.
Эта статья — краткий справочник по синтаксису графов GQL (Graph Query Language) для графов в Microsoft Fabric. Подробные объяснения см. в руководстве по языку GQL.
Это важно
В этой статье исключительно используется пример графа социальных сетей.
Структура запроса
Запросы GQL используют последовательность инструкций, определяющих, какие данные нужно получить из графа, как обработать его и как отобразить результаты. Каждая инструкция имеет определенную цель, и вместе они создают линейный конвейер, который соответствует данным из графа и преобразует его пошаговые инструкции.
Типичный поток запросов:
Обычно запрос GQL начинается с указания шаблона графа для сопоставления, а затем использует необязательные инструкции для создания переменных, фильтрации, сортировки, разбиения на страницы и выходных данных результатов.
Example:
MATCH (n:Person)-[:knows]->(m:Person)
LET fullName = n.firstName || ' ' || n.lastName
FILTER m.gender = 'female'
ORDER BY fullName ASC
OFFSET 10
LIMIT 5
RETURN fullName, m.firstName
Порядок инструкций:
Это важно
Graph в Microsoft Fabric пока не поддерживает произвольный состав инструкций. См. статью о текущих ограничениях.
Операторы обычно могут отображаться в любом порядке в запросе:
-
MATCH— укажите шаблоны графов для поиска. -
LET— определение переменных из выражений. -
FILTER— сохраняйте соответствующие условия строк. -
ORDER BY— сортировать результаты. -
OFFSET— пропускать много строк. -
LIMIT— ограничить количество строк. -
RETURN— выводит окончательные результаты.
Каждая инструкция основывается на предыдущей, поэтому вы добавочно уточняете и формируете выходные данные запроса. Дополнительные сведения о каждой инструкции см. в следующих разделах.
Запросные выражения
MATCH
Поиск шаблонов графов в данных.
Синтаксис
MATCH <graph pattern> [ WHERE <predicate> ]
...
Example:
MATCH (n:Person)-[:knows]-(m:Person) WHERE n.birthday > 2000
RETURN *
Дополнительные сведения об инструкции MATCH см. в шаблонах Graph.
РАЗРЕШАТЬ
Создайте переменные с помощью выражений.
Синтаксис
LET <variable> = <expression>, <variable> = <expression>, ...
...
Example:
MATCH (n:Person)
LET fullName = n.firstName || ' ' || n.lastName
RETURN fullName
Дополнительные сведения об инструкции LET см. в руководстве по языку GQL.
FILTER
Сохраняйте строки, соответствующие условиям.
Синтаксис
FILTER [ WHERE ] <predicate>
...
Example:
MATCH (n:Person)-[:knows]->(m:Person)
FILTER WHERE n.birthday > m.birthday
RETURN *
Дополнительные сведения об инструкции FILTER см. в руководстве по языку GQL.
ORDER BY (СОРТИРОВАТЬ ПО)
Сортируйте результаты.
Синтаксис
ORDER BY <expression> [ ASC | DESC ], ...
...
Example:
MATCH (n:Person)
RETURN *
ORDER BY n.lastName ASC, n.firstName ASC
Это важно
Запрошенный порядок строк гарантированно сохраняется только сразу после предыдущего ORDER BY оператора.
Любые последующие утверждения (если они присутствуют) не гарантируют сохранения такого порядка.
Дополнительные сведения об инструкции ORDER BY см. в руководстве по языку GQL.
СМЕЩЕНИЕ/ОГРАНИЧЕНИЕ
Пропустить строки и ограничить количество результатов.
Синтаксис
OFFSET <offset> [ LIMIT <limit> ]
LIMIT <limit>
...
Example:
MATCH (n:Person)
ORDER BY n.birthday
OFFSET 10 LIMIT 20
RETURN n.firstName || ' ' || n.lastName AS name, n.birthday
Дополнительные сведения о OFFSET инструкциях и LIMIT инструкциях см. в руководстве по языку GQL.
RETURN
Выводит окончательные результаты.
Синтаксис
RETURN [ DISTINCT ] <expression> [ AS <alias> ], ...
Example:
MATCH (n:Person)
RETURN n.firstName, n.lastName
Дополнительные сведения об инструкции RETURN см. в руководстве по языку GQL.
Шаблоны графов
Шаблоны графа описывают структуру графа для сопоставления.
Шаблоны узлов
В графовых базах данных узлы обычно используются для представления сущностей, таких как люди, продукты или места.
Шаблоны узлов описывают сопоставление узлов в графе. Можно фильтровать по метки или привязке переменных.
(n) -- Any node
(n:Person) -- Node with Person label
(n:City&Place) -- Node with City AND Place label
(:Person) -- Person node, don't bind variable
Дополнительные сведения о шаблонах узлов см. в шаблонах Graph.
Шаблоны пограничных вычислений
Шаблоны пограничных вычислений указывают связи между узлами, включая тип направления и края. В графовых базах данных край представляет соединение или связь между двумя узлами.
<-[e]- -- Incoming edge
-[e]-> -- Outgoing edge
-[e]- -- Any edge
-[e:knows]-> -- Edge with label ("relationship type")
-[e:knows|likes]-> -- Edges with different labels
-[:knows]-> -- :knows edge, don't bind variable
Дополнительные сведения о пограничных шаблонах см. в шаблонах Graph.
Выражения меток
Выражения меток позволяют сопоставлять узлы с определенными сочетаниями меток с помощью логических операторов.
:Person&Company -- Both Person AND Company labels
:Person|Company -- Person OR Company labels
:!Company -- NOT Company label
:(Person|!Company)&Active -- Complex expressions with parentheses
Дополнительные сведения о выражениях меток см. в шаблонах Graph.
Шаблоны пути
Шаблоны пути описывают обходы по графу, включая количество прыжков и привязки переменных.
(a)-[:knows|likes]->{1,3}(b) -- 1-3 hops via knows/likes
p=()-[:knows]->() -- Binding a path variable
Дополнительные сведения о шаблонах путей см. в шаблонах Graph.
Несколько шаблонов
Несколько шаблонов позволяют сопоставлять сложные нелинейные структуры графов в одном запросе.
(a)->(b), (a)->(c) -- Multiple edges from same node
(a)->(b)<-(c), (b)->(d) -- Nonlinear structures
Дополнительные сведения о нескольких шаблонах см. в шаблонах Graph.
Значения и типы значений
Основные типы
Базовые типы — это примитивные значения данных, такие как строки, числа, логические значения и даты и времени.
STRING -- 'hello', "world"
INT64 -- 42, -17
FLOAT64 -- 3.14, -2.5e10
BOOL -- TRUE, FALSE, UNKNOWN
ZONED DATETIME -- ZONED_DATETIME('2023-01-15T10:30:00Z')
Дополнительные сведения о базовых типах в значениях и типах значений GQL.
Ссылочные типы значений
Ссылочные типы значений — это узлы и края, используемые в качестве значений в запросах.
NODE -- Node reference values
EDGE -- Edge reference values
Дополнительные сведения о ссылочных типах значений в значениях И типах значений GQL.
Типы коллекций
Типы коллекций группирует несколько значений, например списки и пути.
LIST<INT64> -- [1, 2, 3]
LIST<STRING> -- ['a', 'b', 'c']
PATH -- Path values
Дополнительные сведения о типах коллекций в значениях и типах значений GQL.
Типы материалов и нулируемых
Каждый тип значения либо обнуливает (включая нулевое значение), либо материально (исключает его).
По умолчанию типы обнулируемы, если только явно не указаны как NOT NULL.
STRING NOT NULL -- Material (Non-nullable) string type
INT64 -- Nullable (default) integer type
Выражения и операторы
Comparison
Операторы сравнения сравнивают значения и проверяют равенство, упорядочивание или значения NULL.
=, <>, <, <=, >, >= -- Standard comparison
IS NULL, IS NOT NULL -- Null checks
Дополнительные сведения о предикаатах сравнения см. в выражениях и функциях GQL.
Логичный
Логические операторы объединяют или не выполняют логические условия в запросах.
AND, OR, NOT -- Boolean logic
Дополнительные сведения о логических выражениях см. в выражениях и функциях GQL.
Arithmetic
Арифметические операторы выполняют вычисления по числам.
+, -, *, / -- Basic arithmetic operations
Дополнительные сведения об арифметических выражениях см. в выражениях и функциях GQL.
Строковые шаблоны
Предикаты шаблонов строк соответствуют подстрокам, префиксам или суффиксам в строках.
n.firstName CONTAINS 'John' -- Has substring
n.browserUsed STARTS WITH 'Chrome' -- Starts with prefix
n.locationIP ENDS WITH '.1' -- Ends with suffix
Дополнительные сведения о предикатах шаблонов строк см. в выражениях и функциях GQL.
Операции со списком
Список операций тестирования членства, элементов доступа и длины списка мер.
n.gender IN ['male', 'female'] -- Membership test
n.tags[0] -- First element
size(n.tags) -- List length
Дополнительные сведения о предикаатах членства в списке см. в выражениях и функциях GQL.
Доступ к свойствам
Доступ к свойствам получает значение свойства из узла или края.
n.firstName -- Property access
Дополнительные сведения о доступе к свойствам см. в выражениях и функциях GQL.
Functions
Агрегатные функции
Статистические значения суммарных функций для групп строк (вертикальной агрегирования) или элементов списка групп (горизонтальное агрегирование).
count(*) -- Count all rows
count(expr) -- Count non-null values
sum(p.birthday) -- Sum values
avg(p.birthday) -- Average
min(p.birthday), max(p.birthday) -- Minimum and maximum values
collect_list(p.firstName) -- Collect values into a list
Дополнительные сведения о агрегатных функциях в выражениях и функциях GQL.
Строковые функции
Строковые функции позволяют работать со строковыми значениями и анализировать их.
char_length(s) -- String length
upper(s), lower(s) -- Change case (US ASCII only)
trim(s) -- Remove leading and trailing whitespace
string_join(list, separator) -- Join list elements with a separator
Дополнительные сведения о строковых функциях в выражениях и функциях GQL.
Перечисление функций
Функции списка позволяют работать со списками, такими как проверка длины или обрезки размера.
size(list) -- List length
trim(list, n) -- Trim a list to be at most size `n`
Дополнительные сведения о функциях списка в выражениях и функциях GQL.
Функции Graph
Функции Graph позволяют получать сведения из узлов, путей и ребер.
labels(node) -- Get node labels
nodes(path) -- Get path nodes
edges(path) -- Get path edges
Дополнительные сведения о функциях графа см. в выражениях и функциях GQL.
Темпоральные функции
Темпоральные функции позволяют работать со значениями даты и времени.
zoned_datetime() -- Get the current timestamp
Дополнительные сведения о темпоральных функциях в выражениях и функциях GQL.
Универсальные функции
Универсальные функции позволяют работать с данными общими способами.
coalesce(expr1, expr2, ...) -- Get the first non-null value
Дополнительные сведения о универсальных функциях в выражениях и функциях GQL.
Распространенные шаблоны
Поиск подключений
-- Friends of friends
MATCH (me:Person {firstName: 'Annemarie'})-[:knows]->{2}(fof:Person)
WHERE fof <> me
RETURN DISTINCT fof.firstName
Aggregation
-- Count by group
MATCH (p:Person)-[:isLocatedIn]->(c:City)
RETURN c.name AS name, count(*) AS population
GROUP BY name
ORDER BY population DESC
Top k
-- Top 10
MATCH (p:Person)-[:hasCreator]-(m:Post)
RETURN p.firstName AS name, count(m) AS posts
GROUP BY name
ORDER BY posts DESC
LIMIT 10
Фильтрация и условия
-- Complex conditions
MATCH (p:Person)-[:isLocatedIn]->(c:City)
WHERE p.birthday >= 19800101 AND p.birthday <= 20000101
AND c.name IN ['Seattle', 'Portland']
AND p.firstName IS NOT NULL
RETURN p.firstName, p.birthday
Обход пути
-- Variable length paths
MATCH p = TRAIL (src:Person {firstName: 'Annemarie'})-[:knows]->{1,3}(dst:Person)
WHERE dst.firstName = 'Alexander'
RETURN p