Poznámka
Na prístup k tejto stránke sa vyžaduje oprávnenie. Môžete sa skúsiť prihlásiť alebo zmeniť adresáre.
Na prístup k tejto stránke sa vyžaduje oprávnenie. Môžete skúsiť zmeniť adresáre.
Tento článok poskytuje komplexný odkaz na výrazy GQL, predikáty a vstavané funkcie dostupné v dotazoch služby Microsoft Fabric v grafe. Pomocou tohto odkazu môžete porozumieť tomu, ako vykonávať výpočty, filtrovať výsledky a transformovať údaje v grafových dotazoch.
Prehľad jazyka dotazu GQL a príkladov komplexných dotazov nájdete v téme Sprievodca jazykom GQL. Informácie o podporovaných typoch údajov a literálovej syntaxi nájdete v téme Hodnoty a typy hodnôt GQL.
Explicitné hodnoty premenných
Literáky sú jednoduché výrazy, ktoré sa priamo vyhodnotia na danej hodnote. V článku Hodnoty a typy hodnôt jazyka GQL sa podrobnosti vysvetľujú literálmi každého druhu hodnoty.
Príklad:
1
1.0d
TRUE
"Hello, graph!"
[ 1, 2, 3 ]
NULL
Podrobnú literálovú syntax pre každý typ údajov nájdete v téme Hodnoty gql a typy hodnôt.
Predikáty
Predikáty sú booleovské výrazy, ktoré sa bežne používajú na filtrovanie výsledkov v dotazoch GQL. Vyhodnotia sa na TRUE, FALSEalebo UNKNOWN (null).
Upozornenie
Keď použijete predikáty ako filter, zachovajú sa iba tie položky, pre ktoré sa predikát vyhodnotí ako TRUE.
Predikáty porovnania
Na porovnanie hodnôt použite tieto operátory:
-
=(rovná sa) -
<>(nerovná sa) -
<(menšie ako) -
>(väčšie ako) -
<=(menšie ako alebo rovná sa) -
>=(väčšie alebo rovné)
GQL používa logiku s tromi hodnotami, kde porovnania s vrátenou UNKNOWNhodnotou null:
| Expression | Výsledok |
|---|---|
5 = 5 |
TRUE |
5 = 3 |
FALSE |
5 = NULL |
UNKNOWN |
NULL = NULL |
UNKNOWN |
Konkrétne správanie pri porovnávaní nájdete v dokumentácii pre každý typ hodnoty v hodnotách a typoch hodnôt GQL.
Príklad:
MATCH (p:Person)
FILTER WHERE p.birthday <= 20050915
RETURN p.firstName
Pravidlá pre vynútenie čísel:
Podľa priority použite nasledujúce pravidlá:
- Výrazy porovnania, ktoré obsahujú argumenty približných číselných typov, vynútia, aby všetky argumenty boli približného číselného typu.
- Výrazy porovnania, ktoré zahŕňajú argumenty oboch typov celých aj znamiarovaných celých čísel, nútia všetky argumenty, aby boli celočíselného typu so znamiteľom.
Logické výrazy
Kombinovanie podmienok s logickými operátormi:
-
AND(obidve podmienky sú pravdivé) -
OR(obe podmienky majú hodnotu true) -
NOT(neguje podmienku) -
XOR(exkluzívna disjunkcia - pravda, keď presne jeden operand je pravdivá)
Príklad:
MATCH (p:Person)
FILTER WHERE p.birthday <= 20050915 AND p.firstName = 'John'
RETURN p.firstName || ' ' || p.lastName AS fullName
Existencia vlastností predikáty
Ak chcete skontrolovať, či existujú vlastnosti, použite tieto predikáty:
p.locationIP IS NOT NULL
p.browserUsed IS NULL
Poznámka
Pokus o prístup k známej neexistujúcej vlastnosti vedie k chybe v syntaxi.
Prístup k potenciálne neexistujúcej vlastnosti sa hodnotí na null.
Určenie, či je vlastnosť známa alebo potenciálne nie je existujúca, závisí od typu prístupného uzla alebo okraja.
Zoznam predikátov členstva
Testovanie, či sú hodnoty v zoznamoch:
p.firstName IN ['Alice', 'Bob', 'Charlie']
p.gender NOT IN ['male', 'female']
Predikáty vzoru reťazca
Priradiť reťazce pomocou techník zhody vzorov:
p.firstName CONTAINS 'John'
p.browserUsed STARTS WITH 'Chrome'
p.locationIP ENDS WITH '.1'
Aritmetické výrazy
S číselnými hodnotami použite štandardné aritmetické operátory:
-
+(sčítanie) -
-(odčítanie) -
*(násobenie) -
/(delenie)
Aritmetické operátory sa riadia všeobecnými matematickými konvenciami.
Priorita:
Vo všeobecnosti operátory dodržiavaujú zavedené pravidlá poradia operátorov podľa priority, napríklad * predtým +. Pomocou zátvoriek môžete podľa potreby kontrolovať poradie vyhodnocovania.
Príklad:
(p.birthday < 20050915 OR p.birthday > 19651231) AND p.gender = 'male'
Pravidlá nátlaku:
Podľa priority použite nasledujúce pravidlá:
- Aritmetické výrazy zahŕňajúce argumenty približných typov čísiel vrátia výsledok približného číselného typu.
- Aritmetické výrazy zahŕňajúce argumenty oboch typov celých čísel so znamietmi aj bez zátvoriek vrátia výsledok celočíselného typu so znamiteľom.
Príklad:
LET birth_year = p.birthday / 10000
RETURN birth_year
Prístup k vlastnostiach
Prístup k vlastnostiam pomocou zápisu bodky:
p.firstName
edge.creationDate
Prístup k zoznamu
Prístup k prvkom zoznamu pomocou indexovania založeného na nule:
interests[0] -- first element
interests[1] -- second element
Vstavané funkcie
Jazyk GQL podporuje rôzne vstavané funkcie na spracovanie a analýzu údajov.
Agregačné funkcie
Pomocou agregačných funkcií môžete vyhodnotiť výraz na základe množiny riadkov a získať konečnú hodnotu výsledku skombinovaním hodnôt vypočítaných pre každý riadok. Graph podporuje nasledujúce agregačné funkcie:
-
count(*)– spočíta riadky -
sum(expression)– sčíta číselné hodnoty -
avg(expression)– priemery číselných hodnôt -
min(expression)– nájde minimálnu hodnotu -
max(expression)– nájde maximálnu hodnotu -
collect_list(expression)– zhromažďuje hodnoty do zoznamu
Vo všeobecnosti agregačné funkcie ignorujú hodnoty null a vždy vracajú hodnotu null, keď nie sú zadané žiadne vstupné hodnoty materiálu. Pomocou tejto možnosti môžete coalesce získať inú predvolenú hodnotu: coalesce(sum(expr), 0). Jedinou výnimkou je agregatá count funkcia, ktorá vždy počíta zadané hodnoty bez hodnoty null a vráti hodnotu 0, ak nie sú žiadne. Používa count(*) sa na zahrnutie hodnôt null do počtu.
Agregačné funkcie môžete používať tromi rôznymi spôsobmi:
- Výpočet (zvislých) agregátov na celých tabuľkách
- Výpočet (zvislých) agregátov na podtabuľkách určených kľúčom zoskupenia
- Výpočet (vodorovných) agregátov prostredníctvom prvkov zoznamu skupín
Zvislé agregáty:
-- 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
Vodorovné agregáty:
Vodorovná agregácia vypočíta agregácie medzi prvkami premenných zoznamu skupín zo vzorov s premenlivou dĺžkou:
-- 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
Vodorovná agregácia má vždy prednosť pred zvislou agregáciou.
Ak chcete skonvertovať zoznam skupín na bežný zoznam, použite funkciu collect_list(edges).
Poznámka
Komplexné pokrytie techník agregácie vrátane väzby na okraj s premenlivou dĺžkou a kombinovania vodorovnej/zvislej agregácie nájdete v časti Pokročilé techniky agregácie.
Podmienené výrazy
Pomocou podmienených výrazov môžete na základe podmienok vrátiť rôzne hodnoty.
Prehľadávané PRÍPAD:
CASE
WHEN condition1 THEN result1
WHEN condition2 THEN result2
ELSE default_result
END
Jednoduchá case ( CASE):
CASE expression
WHEN value1 THEN result1
WHEN value2 THEN result2
ELSE default_result
END
NULLIF:
NULLIF(a, b) Vráti hodnotu NULL , ak a sa rovná bhodnote , v opačnom prípade vráti hodnotu a.
Príklad:
MATCH (p:Person)
RETURN p.firstName,
CASE
WHEN p.gender = 'male' THEN 'M'
WHEN p.gender = 'female' THEN 'F'
ELSE 'Other'
END AS gender_code,
NULLIF(p.browserUsed, 'Unknown') AS browser
Reťazcové funkcie
-
char_length(string)– vráti dĺžku reťazca. -
upper(string)– vráti variant zadaného reťazca (iba US ASCII). -
lower(string)– vráti variant zadaného reťazca malými písmenami (iba US ASCII). -
trim(string)– odstráni úvodný aj koncový prázdny znak. -
string_join(list, separator)– spojí prvky zoznamu s oddeľovačom.
Príklad:
MATCH (p:Person)
WHERE char_length(p.firstName) > 5
RETURN upper(p.firstName) AS name_upper
Funkcie grafu
-
nodes(path)– vráti uzly z hodnoty cesty. -
edges(path)– vráti okraje z hodnoty cesty. -
elements(path)– vráti všetky uzly a okraje z cesty ako jeden zoznam v poradí ciest. -
labels(node_or_edge)– vráti označenia uzla alebo okraja ako zoznam reťazcov. -
path_length(path)– vráti počet okrajov v ceste.
Príklad:
MATCH p=(:Company)<-[:workAt]-(:Person)-[:knows]-{1,3}(:Person)-[:workAt]->(:Company)
RETURN nodes(p) AS chain_of_colleagues, path_length(p) AS hops
Funkcie zoznamu
-
size(list)– vráti veľkosť hodnoty zoznamu. -
trim(list,n)– orezať zoznam tak, aby mal najväčšiu veľkosťn.
Príklad:
MATCH (p:Person)-[:hasInterest]->(t:Tag)
WHERE size(collect_list(t)) > 3
RETURN p.firstName, collect_list(t.name) AS interests
Časové funkcie
-
zoned_datetime()– vráti aktuálny dátum a čas v pásme. -
zoned_datetime("2025-09-12T10:10:52Z")– vráti hodnotu datetime pre pásmo zadaná argumentom vo formáte ISO 8601.
Príklad:
RETURN zoned_datetime() AS now
Všeobecné funkcie
-
coalesce(value1, value2, ...)– vráti prvú hodnotu bez hodnoty null. -
to_json_string(value)– konvertuje hodnotu na vyjadrenie reťazca JSON.
Príklad:
MATCH (p:Person)
RETURN coalesce(p.firstName, 'Unknown') AS display_name,
to_json_string(p) AS person_json