Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu makale, Microsoft Fabric'te graf için GQL (Graph Sorgu Dili) söz dizimine yönelik hızlı bir başvurudur. Ayrıntılı açıklamalar için GQL dil kılavuzuna bakın.
Uyarı
Bu makalede öncelikli olarak sosyal ağ örnek graf veri kümesi gerçekleştirilir. Ayrıca grafik öğreticisinden Adventure Works veri kümesini kullanan birkaç örnek de sağlar.
Sorgu yapısı
GQL sorguları, grafikten hangi verilerin alındığını, nasıl işlendiğini ve sonuçların nasıl gösterildiğini tanımlayan bir deyim dizisi kullanır. Her deyimin belirli bir amacı vardır ve birlikte grafikteki verileri eşleştiren ve adım adım dönüştüren doğrusal bir işlem hattı oluştururlar.
Tipik sorgu akışı:
GQL sorgusu genellikle eşleşecek graf desenini belirterek başlar. Ardından değişken oluşturma, filtreleme, sıralama, sayfalandırma ve sonuç çıkışı için isteğe bağlı deyimler kullanır.
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
Deyim sırası:
Önemli
graph henüz rastgele deyim bileşimini desteklemez. Geçerli sınırlamalarla ilgili makaleye bakın.
Deyimler genellikle sorgu içinde herhangi bir sırada görünebilir:
-
MATCH– Bulunacak grafik desenlerini belirtin. -
LET– İfadelerden değişkenleri tanımlayın. -
FILTER– Satır eşleştirme koşullarını koruyun. -
ORDER BY– Sonuçları sıralayın. -
OFFSET– Birçok satırı atlayın. -
LIMIT– Satır sayısını kısıtlayın. -
RETURN– Son sonuçların çıktısını alır.
Her deyim öncekini oluşturur, bu nedenle sorgu çıkışını artımlı olarak daraltır ve şekillendirebilirsiniz. Her deyim hakkında daha fazla bilgi için aşağıdaki bölümlere bakın.
Sorgu ifadeleri
MATCH
Verilerinizde grafik desenlerini bulun.
Syntax:
MATCH <graph pattern> [ WHERE <predicate> ]
...
Example:
MATCH (n:Person)-[:knows]-(m:Person) WHERE n.birthday > 2000
RETURN *
Deyimi hakkında MATCH daha fazla bilgi için bkz. Graph desenleri.
IZİN
İfadeleri kullanarak değişkenler oluşturun.
Syntax:
LET <variable> = <expression>, <variable> = <expression>, ...
...
Example:
MATCH (n:Person)
LET fullName = n.firstName || ' ' || n.lastName
RETURN fullName
Deyimi hakkında LET daha fazla bilgi için GQL dil kılavuzuna bakın.
FİLTRE
Koşullarla eşleşen satırları tutar.
Syntax:
FILTER [ WHERE ] <predicate>
...
Example:
MATCH (n:Person)-[:knows]->(m:Person)
FILTER WHERE n.birthday > m.birthday
RETURN *
Deyimi hakkında FILTER daha fazla bilgi için GQL dil kılavuzuna bakın.
SIRALAMA
Sonuçları sıralar.
Syntax:
ORDER BY <expression> [ ASC | DESC ], ...
...
Example:
MATCH (n:Person)
RETURN *
ORDER BY n.lastName ASC, n.firstName ASC
Önemli
İstenen satır sırası, yalnızca önceki ORDER BY bir ifadeden hemen sonra sabit kalması garanti edilir.
Aşağıdaki ifadelerin (varsa) böyle bir düzeni koruması garanti değildir.
Deyimi hakkında ORDER BY daha fazla bilgi için GQL dil kılavuzuna bakın.
UZAKLIK/LIMIT
Satırları atlayın ve sonuç sayısını sınırlayın.
Syntax:
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
ve OFFSET deyimleri hakkında LIMIT daha fazla bilgi için GQL dil kılavuzuna bakın.
RETURN
Son sonuçların çıkışını elde edin.
Syntax:
RETURN [ DISTINCT ] <expression> [ AS <alias> ], ...
Example:
MATCH (n:Person)
RETURN n.firstName, n.lastName
Deyimi hakkında RETURN daha fazla bilgi için GQL dil kılavuzuna bakın.
Grafik desenleri
Graf desenleri, eşleşecek grafın yapısını açıklar.
Düğüm desenleri
Grafik veritabanlarında düğümleri kullanarak kişiler, ürünler veya yerler gibi varlıkları temsil edin.
Düğüm desenleri, grafikteki düğümleri eşleştirmeyi açıklar. Etikete göre filtreleyebilir veya değişkenleri bağlayabilirsiniz.
(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
Düğüm desenleri hakkında daha fazla bilgi için bkz. Grafik desenleri.
Kenar desenleri
Kenar desenleri, yön ve kenar türü dahil olmak üzere düğümler arasındaki ilişkileri belirtir. Graf veritabanlarında kenar, iki düğüm arasındaki bir bağlantıyı veya ilişkiyi temsil eder.
<-[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
Kenar desenleri hakkında daha fazla bilgi için bkz. Grafik desenleri.
Etiket ifadeleri
Etiket ifadeleri, mantıksal işleçler kullanarak düğümleri belirli etiket birleşimleriyle eşleştirmenize olanak sağlar.
:Person&Company -- Both Person AND Company labels
:Person|Company -- Person OR Company labels
:!Company -- NOT Company label
:(Person|!Company)&Active -- Complex expressions with parentheses
Etiket ifadeleri hakkında daha fazla bilgi için bkz. Grafik desenleri.
Yol desenleri
Yol desenleri, atlama sayıları ve değişken bağlamaları da dahil olmak üzere grafikteki dolaşmaları açıklar.
(a)-[:knows|likes]->{1,3}(b) -- 1-3 hops via knows/likes
p=()-[:knows]->() -- Binding a path variable
Yol desenleri hakkında daha fazla bilgi için bkz. Grafik desenleri.
Birden çok desen
Tek bir sorgudaki karmaşık, doğrusal olmayan grafik yapılarını eşleştirmek için birden çok desen kullanın.
(a)->(b), (a)->(c) -- Multiple edges from same node
(a)->(b)<-(c), (b)->(d) -- Nonlinear structures
Birden çok desen hakkında daha fazla bilgi için bkz. Grafik desenleri.
Değerler ve değer türleri
Temel türler
Temel türler dizeler, sayılar, boole'lar ve tarih zamanları gibi temel veri değerleridir.
STRING -- 'hello', "world"
INT64 -- 42, -17
FLOAT64 -- 3.14, -2.5e10
BOOL -- TRUE, FALSE, UNKNOWN
ZONED DATETIME -- ZONED_DATETIME('2023-01-15T10:30:00Z')
Temel türler hakkında daha fazla bilgi için bkz. GQL değerleri ve değer türleri.
Başvuru değeri türleri
Başvuru değeri türleri, sorgularda değer olarak kullandığınız düğümler ve kenarlardır.
NODE -- Node reference values
EDGE -- Edge reference values
Başvuru değer türleri hakkında daha fazla bilgi için bkz. GQL değerleri ve değer türleri.
Koleksiyon türleri
Koleksiyon türleri, listeler ve yollar gibi birden çok değeri gruplandırıyor.
LIST<INT64> -- [1, 2, 3]
LIST<STRING> -- ['a', 'b', 'c']
PATH -- Path values
Koleksiyon türleri hakkında daha fazla bilgi için bkz. GQL değerleri ve değer türleri.
Malzeme ve nullable tipler
Her değer türü null atanabilir (null değeri içerir) veya malzemedir (hariç tutar).
Açıkça belirtmediğiniz NOT NULLsürece türler varsayılan olarak null atanabilir.
STRING NOT NULL -- Material (Non-nullable) string type
INT64 -- Nullable (default) integer type
İfadeler ve işleçler
Conditional
Koşullu ifadeler koşullara göre farklı değerler döndürür.
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
Koşullu ifadeler hakkında daha fazla bilgi için bkz. GQL ifadeleri ve işlevleri.
Karşılaştırma
Karşılaştırma işleçleri değerleri karşılaştırır ve eşitlik, sıralama veya null değerlerini denetler.
=, <>, <, <=, >, >= -- Standard comparison
IS NULL, IS NOT NULL -- Null checks
Karşılaştırma önkoşulları hakkında daha fazla bilgi için bkz. GQL ifadeleri ve işlevleri.
Logical
Mantıksal işleçler sorgularda boole koşullarını birleştirir veya olumsuzleştirir.
AND, OR, NOT, XOR -- Boolean logic
Mantıksal ifadeler hakkında daha fazla bilgi için bkz. GQL ifadeleri ve işlevleri.
Arithmetic
Aritmetik işleçler sayılar üzerinde hesaplamalar yapar.
+, -, *, / -- Basic arithmetic operations
Aritmetik ifadeler hakkında daha fazla bilgi için bkz. GQL ifadeleri ve işlevleri.
Dize desenleri
Dize deseni önkoşulları dizelerdeki alt dizeler, önekler veya soneklerle eşleşir.
n.firstName CONTAINS 'John' -- Has substring
n.browserUsed STARTS WITH 'Chrome' -- Starts with prefix
n.locationIP ENDS WITH '.1' -- Ends with suffix
Dize deseni önkoşulları hakkında daha fazla bilgi için bkz. GQL ifadeleri ve işlevleri.
İşlemleri listeleme
Listeleme işlemleri test üyeliği, erişim öğeleri ve ölçü listesi uzunluğu.
n.gender IN ['male', 'female'] -- Membership test
n.tags[0] -- First element
size(n.tags) -- List length
Liste üyeliği önkoşulları hakkında daha fazla bilgi için bkz. GQL ifadeleri ve işlevleri.
Özellik erişimi
Özellik erişimi bir düğümden veya kenardan bir özelliğin değerini alır.
n.firstName -- Property access
Özellik erişimi hakkında daha fazla bilgi için bkz. GQL ifadeleri ve işlevleri.
Functions
Toplama işlevleri
Toplama işlevleri, satır grupları (dikey toplama) veya grup listesinin öğeleri (yatay toplama) için özet değerleri hesaplar.
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 ifadeleri ve işlevlerindeki toplama işlevleri hakkında daha fazla bilgi edinin.
Dize işlevleri
Dize işlevleri, dize değerleriyle çalışmanıza ve çözümlemenize olanak sağlar.
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 ifadeleri ve işlevlerindeki dize işlevleri hakkında daha fazla bilgi edinin.
Liste işlevleri
Liste işlevleri, uzunluğu denetleme veya kırpma boyutu gibi listelerle çalışmanızı sağlar.
size(list) -- List length
trim(list, n) -- Trim a list to be at most size `n`
Liste işlevleri hakkında daha fazla bilgi için bkz. GQL ifadeleri ve işlevleri.
Graf işlevleri
Graph işlevleri düğümlerden, yollardan ve kenarlardan bilgi almanıza olanak sağlar.
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
Grafik işlevleri hakkında daha fazla bilgi için bkz. GQL ifadeleri ve işlevleri.
Zamana bağlı işlevler
Zamana bağlı işlevler, tarih ve saat değerleriyle çalışmanızı sağlar.
zoned_datetime() -- Get the current timestamp
Zamana bağlı işlevler hakkında daha fazla bilgi için bkz. GQL ifadeleri ve işlevleri.
Genel işlevler
Genel işlevler, verilerle ortak yollarla çalışmanızı sağlar.
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
Genel işlevler hakkında daha fazla bilgi için bkz. GQL ifadeleri ve işlevleri.
Ortak desenler
Bu bölümde kullanabileceğiniz bazı yaygın GQL sorgu desenleri gösterilmektedir.
Sosyal ağ örnekleri
Bu örneklerde sosyal ağ örnek graf veri kümesi kullanılır.
Bir türün tüm düğümlerini bulma
-- Get all nodes with a specific label
MATCH (p:Person) RETURN p
Belirli özelliklere sahip düğümleri bulma
-- Filter nodes by property value
MATCH (p:Person) FILTER p.firstName = 'Annemarie' RETURN p
Bağlantıları bulma
-- Friends of friends
MATCH (me:Person {firstName: 'Annemarie'})-[:knows]->{2}(fof:Person)
WHERE fof <> me
RETURN DISTINCT fof.firstName
çapraz geçiş ilişkileri
-- Multi-hop traversal through different edge types
MATCH (p:Person)-[:knows]->(f:Person)-[:isLocatedIn]->(c:City)
RETURN p.firstName, f.firstName, c.name
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
Üst 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
Filtreleme ve koşullar
-- 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
Yol geçişi
-- Variable length paths
MATCH p = TRAIL (src:Person {firstName: 'Annemarie'})-[:knows]->{1,3}(dst:Person)
WHERE dst.firstName = 'Alexander'
RETURN p
Adventure Works örnekleri
Bu örneklerde grafik öğreticisinden Adventure Works veri kümesi kullanılır.
Tüm müşterileri bul
-- Get all customer nodes
MATCH (c:Customer) RETURN c
Ürünleri ada göre bulma
-- Filter products by name
MATCH (p:Product) FILTER p.productName = 'Mountain Bike' RETURN p
Müşteri siparişlerini dolaşma
-- Multi-hop traversal: customers to orders to products
MATCH (c:Customer)-[:purchases]->(o:Order)-[:contains]->(p:Product)
RETURN c, o, p
Siparişleri çalışana göre sayma
-- 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
İlgili içerik
- GQL dil kılavuzu
- Microsoft Fabric ücretsiz
- Microsoft Fabric Uçtan uca öğreticiler>