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 makalede, Microsoft Fabric yaygın graf görevleri için pratik GQL sorgu desenleri sağlanır: komşu bulma, çok bağlantılı bağlantılarda dolaşma, paylaşılan bağlantıları tanımlama, ilişkileri sayma ve bağlantısız varlıkları bulma.
Örneklerde sosyal ağ örnek veri kümesi kullanılır. Tam dil referansı için GQL dil kılavuzu bölümüne bakın.
Prerequisites
- Verilerin yüklendiği bir grafik öğesi. Grafı yeni kullanıyorsanız, önce öğreticiyi tamamlayın.
- Temel
MATCHveRETURNsorgularına aşinalık. Bkz. GQL dil kılavuzu.
Doğrudan komşuları bulma
Başlangıç düğümüne bir adımda bağlı olan tüm düğümleri geri getir.
Belirli bir kişinin tanıdığı herkesi bulun:
MATCH (p:Person WHERE p.firstName = 'Alice')-[:knows]->(friend:Person)
RETURN friend.firstName, friend.lastName
Bir kişinin çalıştığı tüm şirketleri bulun:
MATCH (p:Person WHERE p.firstName = 'Alice')-[:workAt]->(c:Company)
RETURN c.name, c.url
Arkadaşlarınızı bulma (çoklu atlama)
Birden fazla atlamadan geçiş yapmak için değişken uzunlukta desenler {min,max} ile kullanın.
alice'in doğrudan bilmediği arkadaşlarının arkadaşları olan iki atlama ötedeki kişileri bulun:
MATCH (alice:Person WHERE alice.firstName = 'Alice')-[:knows]->{2,2}(fof:Person)
RETURN DISTINCT fof.firstName, fof.lastName
LIMIT 100
Üç derece içinde ulaşılabilen herkesi bulun:
MATCH (src:Person WHERE src.firstName = 'Alice')-[:knows]->{1,3}(dst:Person)
RETURN DISTINCT dst.firstName, dst.lastName
LIMIT 100
Tavsiye
Değişken uzunlukta geçişte her zaman bir üst sınır ayarlayın. Büyük veya yoğun graflardaki ilişkisiz desenler sorgu zaman aşımı sınırlarına isabet edebilir. Bkz . Geçerli sınırlamalar.
Varlık başına ilişki sayısı
Her bir varlığın kaç ilişkisi olduğunu saymak için GROUP BY ve count(*) ile kullanın.
Her bir kişinin kaç arkadaşı olduğunu say ve en çoktan en aza sırala.
MATCH (p:Person)-[:knows]->(friend:Person)
LET name = p.firstName || ' ' || p.lastName
RETURN name, count(*) AS friendCount
GROUP BY name
ORDER BY friendCount DESC
LIMIT 20
Her şirkette kaç çalışanın çalıştığını say:
MATCH (p:Person)-[:workAt]->(c:Company)
LET companyName = c.name
RETURN companyName, count(*) AS employeeCount
GROUP BY companyName
ORDER BY employeeCount DESC
Paylaşılan bağlantıları bulma
Bir değişkeni desenin iki bölümünde yeniden kullanma örtük bir "aynı düğüm" kısıtlaması oluşturur. Paylaşılan bir üçüncü varlık aracılığıyla bağlanan varlıkları bulmak için bu kısıtlamayı kullanın.
Her ikisi de aynı kişiyi bilen kişi çiftlerini bulun:
MATCH (a:Person)-[:knows]->(mutual:Person)<-[:knows]-(b:Person)
WHERE a.id < b.id
RETURN a.firstName, b.firstName, mutual.firstName AS sharedContact
LIMIT 100
Aynı şirkette çalışan kişi çiftlerini bulun:
MATCH (c:Company)<-[:workAt]-(a:Person), (c)<-[:workAt]-(b:Person)
WHERE a.id < b.id
RETURN a.firstName, b.firstName, c.name AS company
LIMIT 100
Tavsiye
Koşul, WHERE a.id < b.id yinelenen çiftlerin (Alice–Bob ve Bob–Alice) sonuçlarda görünmesini engeller.
İlişkisi olmayan varlıkları bulma
OPTIONAL MATCH kullandıktan sonra düğümleri bulmak için bir null denetimi yapın ve eşleşen bir ilişkisi olmayanları belirleyin.
Herhangi bir şirkette çalışmayan kişileri bulun:
MATCH (p:Person)
OPTIONAL MATCH (p)-[:workAt]->(c:Company)
FILTER c IS NULL
RETURN p.firstName, p.lastName
LIMIT 100
Yorum içermeyen gönderileri bulun:
MATCH (post:Post)
OPTIONAL MATCH (comment:Comment)-[:replyOf]->(post)
FILTER comment IS NULL
RETURN post.id, post.content
LIMIT 100
Birçok bağlantısı olan varlıkları bulma
GROUP BY ve FILTER öğelerini birleştirerek yüksek bağlı düğümleri tanımlayın. Bu yöntem hub'ları veya aykırı değerleri bulmak için kullanışlıdır.
10'dan fazla arkadaşı olan kişileri bulun:
MATCH (p:Person)-[:knows]->(friend:Person)
LET name = p.firstName || ' ' || p.lastName
RETURN name, count(*) AS friendCount
GROUP BY name
FILTER friendCount > 10
ORDER BY friendCount DESC
Note
FILTER sonra GROUP BY SQL'de olduğu gibi HAVING çalışır. Tek tek satırları değil, toplanan sonucu filtreler.