Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Observação
Esse recurso está atualmente em versão prévia pública. Essa versão prévia é oferecida sem um SLA e não é recomendada para cargas de trabalho de produção. Alguns recursos podem não ter suporte ou podem ter restrição de recursos. Para obter mais informações, consulte Termos de Uso Complementares para Versões Prévias do Microsoft Azure.
As expressões GQL permitem que você execute cálculos, comparações e transformações em dados em suas consultas. Em combinação com funções internas, as expressões fornecem ferramentas avançadas para processamento, filtragem e análise de dados em consultas de grafo.
Literals
Literais são expressões simples que avaliam diretamente o valor declarado. Literais de cada tipo de valor são explicados em detalhes em valores GQL e tipos de valor.
Example:
1
1.0d
TRUE
"Hello, graph!"
[ 1, 2, 3 ]
NULL
Para obter uma sintaxe literal detalhada para cada tipo de dados, consulte valores GQL e tipos de valor.
Predicates
Predicados são expressões boolianas, que geralmente são usadas para filtrar resultados em consultas GQL. Eles são avaliados como TRUE, FALSEou UNKNOWN (nulo).
Cuidado
Quando usados como um filtro, os predicados retêm apenas esses itens, para os quais o predicado é TRUEavaliado como .
Predicados de comparação
Compare os valores usando estes operadores:
-
=(igual) -
<>(não é igual) -
<(menor que) -
>(maior que) -
<=(menor ou igual) -
>=(maior ou igual)
O GQL usa uma lógica de três valores em que as comparações com o retorno UNKNOWNnulo :
| Expression | Resultado |
|---|---|
5 = 5 |
TRUE |
5 = 3 |
FALSE |
5 = NULL |
UNKNOWN |
NULL = NULL |
UNKNOWN |
Para obter um comportamento de comparação específico, consulte a documentação de cada tipo de valor em valores GQL e tipos de valor.
Example:
MATCH (p:Person)
FILTER WHERE p.birthday <= 20050915
RETURN p.firstName
Regras de coerção numéricas:
Em ordem de precedência:
- Expressões de comparação envolvendo argumentos de tipos numéricos aproximados coagim todos os argumentos a serem de um tipo numérico aproximado.
- Expressões de comparação que envolvem argumentos de tipos inteiros assinados e não assinados coagim todos os argumentos a serem de um tipo inteiro com sinal.
Expressões lógicas
Combinar condições com operadores lógicos:
-
AND(ambas as condições são verdadeiras) -
OR(qualquer condição verdadeira) -
NOT(condição nega)
Example:
MATCH (p:Person)
FILTER WHERE p.birthday <= 20050915 AND p.firstName = 'John'
RETURN p.firstName || ' ' || p.lastName AS fullName
Predicados de existência de propriedade
Para verificar se existem propriedades, você pode usar:
p.locationIP IS NOT NULL
p.browserUsed IS NULL
Observação
Tentar acessar uma propriedade conhecida como inexistente resulta em um erro de sintaxe.
O acesso a uma propriedade potencialmente inexistente avalia para null.
A determinação de se uma propriedade é conhecida ou potencialmente inexistente é feita com base no tipo de nó ou aresta acessada.
Listar predicados de associação
Teste se os valores estão em listas:
p.firstName IN ['Alice', 'Bob', 'Charlie']
p.gender NOT IN ['male', 'female']
Predicados de padrão de cadeia de caracteres
Corresponder cadeias de caracteres usando a correspondência de padrões:
p.firstName CONTAINS 'John'
p.browserUsed STARTS WITH 'Chrome'
p.locationIP ENDS WITH '.1'
Expressões aritméticas
Use operadores aritméticos padrão com valores numéricos:
-
+(adição) -
-(subtração) -
*(multiplicação) -
/(divisão)
Operadores aritméticos seguem convenções matemáticas gerais.
Precedência:
Geralmente, os operadores seguem regras de precedência de operador estabelecidas, como * antes +. Use parênteses para controlar a ordem de avaliação conforme necessário.
Example:
(p.birthday < 20050915 OR p.birthday > 19651231) AND p.gender = 'male'
Regras de coerção:
Em ordem de precedência:
- Expressões aritméticas que envolvem argumentos de tipos de número aproximados retornam um resultado de um tipo numérico aproximado.
- Expressões aritméticas que envolvem argumentos de tipos inteiros assinados e não assinados retornam um resultado de um tipo inteiro com sinal.
Example:
LET birth_year = p.birthday / 10000
RETURN birth_year
Acesso à propriedade
Acessar propriedades usando notação de ponto:
p.firstName
edge.creationDate
Listar acesso
Elementos da lista de acesso usando indexação baseada em zero:
interests[0] -- first element
interests[1] -- second element
Funções internas
O GQL dá suporte a várias funções internas para processamento e análise de dados.
Funções de agregação
As funções de agregação são usadas para avaliar uma expressão em um conjunto de linhas e obter um valor de resultado final combinando os valores computados para cada linha. As seguintes funções de agregação têm suporte para grafo no Microsoft Fabric:
-
count(*)- conta linhas -
sum(expression)– soma valores numéricos -
avg(expression)– médias de valores numéricos -
min(expression)- localiza o valor mínimo -
max(expression)- localiza o valor máximo -
collect_list(expression)– coleta valores em uma lista
Em geral, as funções de agregação ignoram valores nulos e sempre retornam um valor nulo quando nenhum valor de entrada material é fornecido. Você pode usar coalesce para obter um valor padrão diferente: coalesce(sum(expr), 0). A única exceção é a count função de agregação, que sempre conta os valores não nulos fornecidos, retornando 0 se não houver nenhum. Use count(*) também para incluir valores nulos na contagem.
As funções de agregação são usadas de três maneiras diferentes:
- Para agregações de computação (vertical) em tabelas inteiras
- Para agregações de computação (vertical) sobre subtables determinadas por uma chave de agrupamento
- Para agregações de computação (horizontal) sobre os elementos de uma lista de grupos
Agregações verticais:
-- Vertical aggregate over whole table
MATCH (p:Person)
RETURN count(*) AS total_people, avg(p.birthday) AS average_birth_year
-- Vertical aggregate with grouping
MATCH (p:Person)-[:isLocatedIn]->(c:City)
RETURN c.name, count(*) AS population, avg(p.birthday) AS average_birth_year
GROUP BY c.name
Agregações horizontais:
A agregação horizontal calcula agregações sobre os elementos de variáveis de lista de grupo de padrões de comprimento variável:
-- Horizontal aggregate over a group list variable
MATCH (p:Person)-[edges:knows]->{1,3}(:Person)
RETURN p.firstName, avg(edges.creationDate) AS avg_connection_date
A agregação horizontal sempre tem precedência sobre a agregação vertical.
Para converter uma lista de grupos em uma lista regular, use collect_list(edges).
Observação
Para obter uma cobertura abrangente de técnicas de agregação, incluindo associação de borda de comprimento variável e combinação de agregação horizontal/vertical, consulte Técnicas avançadas de agregação.
Funções de cadeia de caracteres
-
char_length(string)– retorna o comprimento da cadeia de caracteres -
upper(string)- retorna uma variante maiúscula da cadeia de caracteres fornecida (somente US ASCII) -
lower(string)- retorna uma variante minúscula da cadeia de caracteres fornecida (somente US ASCII) -
trim(string)– remove o espaço em branco à esquerda e à direita -
string_join(list, separator)– une elementos de lista com separador
Example:
MATCH (p:Person)
WHERE char_length(p.firstName) > 5
RETURN upper(p.firstName) AS name_upper
Funções de grafo
-
nodes(path)– retorna nós de um valor de caminho -
edges(path)– retorna bordas de um valor de caminho -
labels(node_or_edge)– retorna os rótulos de um nó ou borda como uma lista de cadeias de caracteres
Example:
MATCH p=(:Company)<-[:workAt]-(:Person)-[:knows]-{1,3}(:Person)-[:workAt]->(:Company)
RETURN nodes(p) AS chain_of_colleagues
Listar funções
-
size(list)- retorna o tamanho de um valor de lista -
trim(list,n)- cortar uma lista para ter a maior parte do tamanhon
Example:
MATCH (p:Person)-[:hasInterest]->(t:Tag)
WHERE size(collect_list(t)) > 3
RETURN p.firstName, collect_list(t.name) AS interests
Funções temporais
-
zoned_datetime()– retorna datetime zoneado atual -
zoned_datetime("2025-09-12T10:10:52Z")– retorna datetime zoneado fornecido pelo argumento no formato ISO 8601
Example:
RETURN zoned_datetime() AS now
Funções genéricas
-
coalesce(value1, value2, ...)– retorna o primeiro valor não nulo
Example:
MATCH (p:Person)
RETURN coalesce(p.firstName, 'Unknown') AS display_name