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 je rýchlym odkazom na syntax jazyka GQL (Graph Query Language) pre graf v službe Microsoft Fabric. Podrobné vysvetlenia nájdete v téme Príručka jazyka GQL.
Poznámka
V tomto článku sa primárne používa graf množiny údajov grafu sociálnej siete. Poskytuje tiež niekoľko príkladov, ktoré používajú množinu údajov Adventure Works z kurzu grafu.
Štruktúra dotazu
Dotazy GQL používajú postupnosť príkazov, ktoré definujú, aké údaje sa majú získať z grafu, ako ich spracovať a ako zobraziť výsledky. Každý príkaz má konkrétny účel a spolu vytvárajú lineárny kanál, ktorý zodpovedá údajom z grafu a transformuje ho postupne.
Typický postup dotazu:
Dotaz GQL sa zvyčajne začína zadaním vzoru grafu, ktorý sa má zhodovať. Potom používa voliteľné príkazy na vytváranie premenných, filtrovanie, zoraďovanie, stránkovanie a výstup výsledkov.
Príklad:
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
Príkaz zoradenia:
Dôležité
graph zatiaľ nepodporuje svojvoľné zloženie vyhlásení. Pozrite si článok o aktuálnych obmedzeniach.
Príkazy sa vo všeobecnosti môžu zobrazovať v ľubovoľnom poradí v rámci dotazu:
-
MATCH– špecifikujte vzory grafu, ktoré sa majú vyhľadať. -
LET– definuje premenné z výrazov. -
FILTER– ponechajte zhodné podmienky pre riadky. -
ORDER BY– zoradí výsledky. -
OFFSET– vynechajte veľa riadkov. -
LIMIT– obmedzí počet riadkov. -
RETURN– Výstup konečných výsledkov.
Každý príkaz vychádza z predchádzajúceho príkazu, takže ho postupne spresníte a tvarujete. Ďalšie informácie o každom príkaze nájdete v nasledujúcich častiach.
Príkazy dotazu
ZÁPALKA
Vyhľadajte v údajoch vzory grafu.
Syntax:
MATCH <graph pattern> [ WHERE <predicate> ]
...
Príklad:
MATCH (n:Person)-[:knows]-(m:Person) WHERE n.birthday > 2000
RETURN *
Ďalšie informácie o príkaze nájdete v MATCH téme Vzory grafu.
NECHAŤ
Vytvárať premenné pomocou výrazov.
Syntax:
LET <variable> = <expression>, <variable> = <expression>, ...
...
Príklad:
MATCH (n:Person)
LET fullName = n.firstName || ' ' || n.lastName
RETURN fullName
Ďalšie informácie o príkaze nájdete v LETpríručke pre jazyk GQL.
FILTER
Uchováva riadky, ktoré spĺňajú podmienky.
Syntax:
FILTER [ WHERE ] <predicate>
...
Príklad:
MATCH (n:Person)-[:knows]->(m:Person)
FILTER WHERE n.birthday > m.birthday
RETURN *
Ďalšie informácie o príkaze nájdete v FILTERpríručke pre jazyk GQL.
OBJEDNAŤ PODĽA
Zoradí výsledky.
Syntax:
ORDER BY <expression> [ ASC | DESC ], ...
...
Príklad:
MATCH (n:Person)
RETURN *
ORDER BY n.lastName ASC, n.firstName ASC
Dôležité
Požadované poradie riadkov je zaručené, že platí až bezprostredne po predchádzajúcom ORDER BY príkaze.
Nasledujúce príkazy (ak existujú) nie sú zaručené, že sa takéto poradie zachovajú.
Ďalšie informácie o príkaze nájdete v ORDER BYpríručke pre jazyk GQL.
OFFSET/LIMIT
Vynechajte riadky a obmedzte počet výsledkov.
Syntax:
OFFSET <offset> [ LIMIT <limit> ]
LIMIT <limit>
...
Príklad:
MATCH (n:Person)
ORDER BY n.birthday
OFFSET 10 LIMIT 20
RETURN n.firstName || ' ' || n.lastName AS name, n.birthday
Ďalšie informácie o príkazoch OFFSET a LIMIT nájdete v téme Sprievodca jazykom GQL.
VRÁTIŤ
Výstup konečných výsledkov.
Syntax:
RETURN [ DISTINCT ] <expression> [ AS <alias> ], ...
Príklad:
MATCH (n:Person)
RETURN n.firstName, n.lastName
Ďalšie informácie o príkaze nájdete v RETURNpríručke pre jazyk GQL.
Vzory grafu
Vzory grafu popisujú štruktúru grafu, ktorá sa má zhodovať.
Vzory uzla
V databázach služby Graph použite uzly na znázornenie entít, ako sú napríklad ľudia, produkty alebo miesta.
Vzory uzlov popisujú, ako nájsť zhodu s uzlami v grafe. Môžete filtrovať podľa označenia alebo naviazať premenné.
(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
Ďalšie informácie o vzoroch uzla nájdete v téme Vzory grafu.
Vzory okrajov
Vzory okrajov určujú vzťahy medzi uzlami vrátane smeru a typu okraja. V databázach služby Graph okraj predstavuje prepojenie alebo vzťah medzi dvoma uzlami.
<-[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
Ďalšie informácie o vzoroch okrajov nájdete v téme Vzory grafu.
Výrazy označenia
Výrazy označenia vám umožňujú zhodovať uzly s konkrétnymi kombináciami označení pomocou logických operátorov.
:Person&Company -- Both Person AND Company labels
:Person|Company -- Person OR Company labels
:!Company -- NOT Company label
:(Person|!Company)&Active -- Complex expressions with parentheses
Ďalšie informácie o výrazoch označenia nájdete v téme Vzory grafu.
Vzory cesty
Vzory cesty popisujú prechádzanie prostredníctvom grafu, vrátane počtov skokov a väzieb premenných.
(a)-[:knows|likes]->{1,3}(b) -- 1-3 hops via knows/likes
p=()-[:knows]->() -- Binding a path variable
Ďalšie informácie o vzoroch cesty nájdete v téme Vzory grafu.
Viaceré vzory
Použite viacero vzorov na zhodu zložitých, nelineárnych štruktúr grafu v jednom dotaze.
(a)->(b), (a)->(c) -- Multiple edges from same node
(a)->(b)<-(c), (b)->(d) -- Nonlinear structures
Ďalšie informácie o viacerých vzoroch nájdete v téme Vzory grafu.
Hodnoty a typy hodnôt
Základné typy
Základné typy sú primitívne údajové hodnoty, ako napríklad reťazce, čísla, booleovské hodnoty a hodnoty datetime.
STRING -- 'hello', "world"
INT64 -- 42, -17
FLOAT64 -- 3.14, -2.5e10
BOOL -- TRUE, FALSE, UNKNOWN
ZONED DATETIME -- ZONED_DATETIME('2023-01-15T10:30:00Z')
Ďalšie informácie o základných typoch nájdete v téme Hodnoty GQL a typy hodnôt.
Typy referenčnej hodnoty
Typy referenčných hodnôt sú uzly a okraje, ktoré používate ako hodnoty v dotazoch.
NODE -- Node reference values
EDGE -- Edge reference values
Ďalšie informácie o typoch referenčných hodnôt nájdete v téme Hodnoty GQL a typy hodnôt.
Typy kolekcie
Typy kolekcie zoskupujú viacero hodnôt, ako sú napríklad zoznamy a cesty.
LIST<INT64> -- [1, 2, 3]
LIST<STRING> -- ['a', 'b', 'c']
PATH -- Path values
Ďalšie informácie o typoch kolekcie nájdete v téme Hodnoty GQL a typy hodnôt.
Typy materiálov a nulovateľných
Každý typ hodnoty je buď nulovateľný (vrátane hodnoty null) alebo materiál (vylučuje ju).
V predvolenom nastavení môžu byť typy nulovateľné, pokiaľ explicitne neurčte NOT NULL.
STRING NOT NULL -- Material (Non-nullable) string type
INT64 -- Nullable (default) integer type
Výrazy a operátory
Podmienený
Podmienené výrazy vracajú rôzne hodnoty na základe podmienok.
CASE WHEN cond THEN val ELSE val END -- Searched CASE
CASE expr WHEN val THEN val ELSE val END -- Simple CASE
NULLIF(a, b) -- NULL if a = b
Ďalšie informácie o podmienených výrazoch nájdete v téme Výrazy a funkcie GQL.
Porovnanie
Operátory porovnávania porovnávajú hodnoty a kontrolu rovnosti, zoradenia alebo hodnôt null.
=, <>, <, <=, >, >= -- Standard comparison
IS NULL, IS NOT NULL -- Null checks
Ďalšie informácie o predikátov porovnania nájdete v téme Výrazy a funkcie GQL.
Logický
Logické operátory kombinujú alebo negujú booleovské podmienky v dotazoch.
AND, OR, NOT, XOR -- Boolean logic
Ďalšie informácie o logických výrazoch nájdete v téme Výrazy a funkcie GQL.
Aritmetika
Aritmetické operátory vykonávajú výpočty s číslami.
+, -, *, / -- Basic arithmetic operations
Ďalšie informácie o aritmetických výrazoch nájdete v téme Výrazy a funkcie jazyka GQL.
Vzory reťazcov
Predikáty vzoru reťazca zodpovedajú podreťazciám, predponám alebo príponám v reťazcoch.
n.firstName CONTAINS 'John' -- Has substring
n.browserUsed STARTS WITH 'Chrome' -- Starts with prefix
n.locationIP ENDS WITH '.1' -- Ends with suffix
Ďalšie informácie o predikátov vzorov reťazcov nájdete v téme Výrazy a funkcie jazyka GQL.
Operácie so zoznamom
Testovanie členstva v zozname, prvkov prístupu a dĺžky zoznamu mierok.
n.gender IN ['male', 'female'] -- Membership test
n.tags[0] -- First element
size(n.tags) -- List length
Ďalšie informácie o predikátov členstva v zozname nájdete v téme Výrazy a funkcie jazyka GQL.
Prístup k vlastnostiach
Prístup k vlastnosti získa hodnotu vlastnosti z uzla alebo okraja.
n.firstName -- Property access
Ďalšie informácie o prístupe k vlastnostiach nájdete v téme Výrazy a funkcie GQL.
Funkcie
Agregačné funkcie
Agregačné funkcie vypočítava súhrnné hodnoty pre skupiny riadkov (zvislá agregácia) alebo v rámci prvkov zoznamu skupín (vodorovná agregácia).
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
Ďalšie informácie o agregačných funkciách nájdete vo výrazoch a funkciách jazyka GQL.
Reťazcové funkcie
Funkcie reťazcov vám umožňujú pracovať s hodnotami reťazcov a analyzovať ich.
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
Ďalšie informácie o funkciách reťazcov vo výrazoch a funkciách jazyka GQL.
Funkcie zoznamu
Funkcie zoznamu umožňujú pracovať so zoznamami, napríklad skontrolovať dĺžku alebo orezanie veľkosti.
size(list) -- List length
trim(list, n) -- Trim a list to be at most size `n`
Ďalšie informácie o funkciách zoznamu nájdete v téme Výrazy a funkcie GQL.
Funkcie grafu
Funkcie grafu umožňujú získať informácie z uzlov, ciest a okrajov.
labels(node) -- Get node labels
nodes(path) -- Get path nodes
edges(path) -- Get path edges
elements(path) -- Get all path nodes and edges
path_length(path) -- Get number of edges in a path
Ďalšie informácie o funkciách grafu nájdete v téme Výrazy a funkcie jazyka GQL.
Časové funkcie
Časové funkcie vám umožňujú pracovať s hodnotami dátumu a času.
zoned_datetime() -- Get the current timestamp
Ďalšie informácie o dočasných funkciách nájdete v téme Výrazy a funkcie GQL.
Všeobecné funkcie
Všeobecné funkcie vám umožňujú pracovať s údajmi bežnými spôsobmi.
coalesce(expr1, expr2, ...) -- Get the first non-null value
to_json_string(value) -- Convert value to JSON string
nullif(a, b) -- NULL if a = b, else a
Ďalšie informácie o všeobecných funkciách nájdete v téme Výrazy a funkcie jazyka GQL.
Bežné vzory
Táto časť uvádza niektoré bežné vzory dotazov GQL, ktoré môžete použiť.
Príklady sociálnych sietí
Tieto príklady používajú graf množiny údajov v príklade sociálnej siete.
Vyhľadanie všetkých uzlov typu
-- Get all nodes with a specific label
MATCH (p:Person) RETURN p
Vyhľadanie uzlov so špecifickými vlastnosťami
-- Filter nodes by property value
MATCH (p:Person) FILTER p.firstName = 'Annemarie' RETURN p
Vyhľadanie pripojení
-- Friends of friends
MATCH (me:Person {firstName: 'Annemarie'})-[:knows]->{2}(fof:Person)
WHERE fof <> me
RETURN DISTINCT fof.firstName
Prechádzať vzťahmi
-- Multi-hop traversal through different edge types
MATCH (p:Person)-[:knows]->(f:Person)-[:isLocatedIn]->(c:City)
RETURN p.firstName, f.firstName, c.name
Agregácia
-- Count by group
MATCH (p:Person)-[:isLocatedIn]->(c:City)
RETURN c.name AS name, count(*) AS population
GROUP BY name
ORDER BY population DESC
Horný 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
Filtrovanie a podmienky
-- 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
Cesta traversal
-- Variable length paths
MATCH p = TRAIL (src:Person {firstName: 'Annemarie'})-[:knows]->{1,3}(dst:Person)
WHERE dst.firstName = 'Alexander'
RETURN p
Príklady adventure works
Tieto príklady používajú množinu údajov Adventure Works z kurzu grafu.
Nájsť všetkých zákazníkov
-- Get all customer nodes
MATCH (c:Customer) RETURN c
Vyhľadanie produktov podľa názvu
-- Filter products by name
MATCH (p:Product) FILTER p.productName = 'Mountain Bike' RETURN p
Prechádzať zákazníckymi objednávkami
-- Multi-hop traversal: customers to orders to products
MATCH (c:Customer)-[:purchases]->(o:Order)-[:contains]->(p:Product)
RETURN c, o, p
Počet objednávok podľa zamestnanca
-- Count orders by employee
MATCH (e:Employee)-[:sells]->(o:Order)
RETURN e.employeeName, count(o) AS total_orders
GROUP BY e.employeeName
ORDER BY total_orders DESC