Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik: ✅Microsoft Fabric✅Azure Data Explorer
Megjegyzés:
Ez a funkció jelenleg nyilvános előzetes verzióban érhető el. A funkciók és a szintaxis az általános elérhetőség előtt változhat.
Az Azure Data Explorer gráfmodelljei lehetővé teszik az adatbázis állandó gráfstruktúráinak meghatározását, kezelését és hatékony lekérdezését. A make-graph operátorral létrehozott átmeneti gráfokkal ellentétben a gráfmodellek olyan tárolt ábrázolások, amelyek ismételten lekérdezhetők anélkül, hogy az egyes lekérdezésekhez újra kellene építeni a gráfot, ami jelentősen javítja az összetett kapcsolatalapú elemzés teljesítményét.
Áttekintés
A gráfmodell egy adatbázis-objektum, amely egy címkézett tulajdonságdiagramot (LPG) jelöl az Azure Data Explorerben. Csomópontokból, más néven csúcsokból és élekből, más néven kapcsolatokból áll. Mind a csomópontok, mind az élek rendelkezhetnek azokat leíró tulajdonságokkal. A modell meghatározza a gráf sémáját, beleértve a csomópont- és éltípusokat a tulajdonságaikkal együtt. Emellett meghatározza a gráf KQL-adatbázistáblákban tárolt táblázatos adatokból és táblázatos kifejezésekből történő létrehozásának folyamatát is.
Főbb jellemzők
Gráfmodellek ajánlata:
- Metaadatok megőrzése: Gráfspecifikációk tárolása az adatbázis metaadataiban a tartósság és az újrahasználhatóság érdekében
- Materialized snapshots: Nem szükséges újraépíteni a gráfokat az egyes lekérdezésekhez, ami jelentősen javítja a lekérdezési teljesítményt
- Sémadefiníció: Nem kötelező, de ajánlott definiált sémák támogatása csomópontokhoz és élekhez, biztosítva az adatkonzisztenciát
- Mély KQL-integráció: Zökkenőmentes integráció a gráf szemantikával
- Optimalizált bejárások: Speciális indexelés belefoglalása a hatékony gráfbejárási műveletekhez, így az összetett minták egyeztetése és az elérési útkeresési lekérdezések jelentősen gyorsabbak
Mikor érdemes gráfmodelleket használni?
A gráfmodellek jelentős előnyöket biztosítanak a kapcsolatalapú elemzéshez, de az alkalmi gráfos lekérdezésekhez képest további beállításokat igényelnek. Fontolja meg a gráfmodellek használatát a következő esetekben:
- A teljesítmény kritikus fontosságú: Gráf típusú lekérdezéseket ismétlődően futtat ugyanazon az alapul szolgáló adatokon, és optimalizált teljesítményre van szüksége
- Összetett kapcsolatadatok: Számos összekapcsolt kapcsolattal rendelkezik olyan adatokkal, amelyek gráfábrázolásból származnak
- Stabil struktúra: A gráfstruktúra viszonylag stabil, rendszeres, de nem állandó frissítésekkel
- Speciális gráfműveletek: Összetett bejárásokat, útvonalkeresést, mintaegyeztetést vagy közösségi észlelést kell végrehajtania az adatokon
- Konzisztens séma: A gráfelemzéshez jól definiált struktúra szükséges konzisztens csomópont- és éltípusokkal
A kisebb adathalmazokon végzett egyszerűbb, egyszeri gráfelemzéshez a make-graph operátor megfelelőbb lehet.
Gráfmodell összetevői
A gráfmodellek két fő összetevőből állnak:
Séma (nem kötelező)
A séma meghatározza a csomópontok és élek szerkezetét és tulajdonságait a gráfmodellben. Bár nem kötelező, a séma számos fontos célt szolgál:
- Típusbiztonság: A sématulajdonságok határozzák meg a csomópont- és éltulajdonságok várt adattípusát, biztosítva a típuskonzisztenciát a gráfos lekérdezések során
- Tulajdonságérvényesítés: A sémában definiált összes tulajdonság érvényes tulajdonságokká válik a megfelelő címkékkel rendelkező csomópontok/élek számára, függetlenül attól, hogy ezek a tulajdonságok megjelennek-e a lépés lekérdezési oszlopaiban.
- Lekérdezéskompatibilitás: A sématulajdonságok biztonságosan hivatkozhatók gráfegyeztetésű lekérdezésekben anélkül, hogy típusütközések ütköznek a lépéses lekérdezés oszlopaival
Sémastruktúra
-
Csomópontok: Meghatározza a csomópontcímkék típusait és azok gépelt tulajdonságait (pl.
"Person": {"Name": "string", "Age": "long"}
) -
Élek: Meghatározza az élcímkék típusait és azok gépelt tulajdonságait (pl.
"WORKS_AT": {"StartDate": "datetime", "Position": "string"}
)
Definíció
A definíció azt határozza meg, hogyan hozhatja létre a gráfot táblázatos adatokból szekvenciális műveletek sorozatán keresztül. Ez a szakasz a gráfmodell lényege, mivel gráfstruktúrává alakítja a relációs adatokat.
A definíció főbb jellemzői:
Szekvenciális végrehajtás: A lépések végrehajtása pontosan a Definíció tömbben megjelenő sorrendben történik. Ez a sorrend kritikus fontosságú, mert:
- A csomópontokat általában azokra hivatkozó élek előtt kell létrehozni
- A későbbi lépések a korábbi lépések eredményeire építhetnek vagy módosíthatnak
- A sorozat hatással van a teljesítményre és a memóriahasználatra a gráfok felépítése során
Növekményes konstrukció: Minden lépés hozzáadja a készülő gráfot, így a következőket teszi lehetővé:
- Több táblából vagy forrásból származó adatok egyesítése
- Különböző logika alkalmazása különböző csomóponttípusokhoz vagy élekhez
- Összetett gráfstruktúrák növekményes létrehozása
Lépéstípusok:
AddNodes: A csomópontok táblázatos adatokból való létrehozásának módját meghatározó lépések
- Több alkalommal is használható különböző típusú csomópontok hozzáadásához
- Minden lépés különböző adatforrásokból lekérhető, vagy különböző szűrőket alkalmazhat
- A csomópont tulajdonságai a lekérdezés eredményének oszlopaiból származnak
AddEdges: Lépések, amelyek meghatározzák, hogyan hozhat létre éleket táblázatos adatokból
- Hivatkozhat olyan csomópontokra, amelyek még nem léteznek (a rendszer helyőrző csomópontokat hoz létre, és frissíti őket az AddNodes-lépések későbbi feldolgozásakor)
- Létrehozhat kapcsolatokat a csomópontok között ugyanazon vagy különböző AddNodes-lépésekből
- Az éltulajdonságok a lekérdezés eredményének oszlopaiból származnak
- Bár a csomópontok előtt lehetőség van élek hozzáadására, javasoljuk, hogy először csomópontokat adjon hozzá a jobb olvashatóság és megértés érdekében
Végrehajtási folyamat példája:
Step 1 (AddNodes): Create Person nodes from Employees table
Step 2 (AddNodes): Create Company nodes from Organizations table
Step 3 (AddEdges): Create WORKS_AT edges between Person and Company nodes
Step 4 (AddEdges): Create KNOWS edges between Person nodes
Ez a szekvenciális megközelítés biztosítja, hogy amikor a 3. lépés WORKS_AT éleket hoz létre, a Person csomópontok (az 1. lépésből) és a Vállalati csomópontok (a 2. lépésből) már léteznek a gráfban.
Címkék a Graph-modellekben
A címkék kritikus azonosítók, amelyek kategorizálják a csomópontokat és a széleket a gráfban, így hatékony szűrést és mintaegyezést tesz lehetővé. Az Azure Data Explorer gráfmodelljei két kiegészítő címketípust támogatnak:
Statikus címkék
- Explicit módon definiálva a gráfmodell Séma szakaszában
- Csomópont- vagy éltípusok megjelenítése előre definiált tulajdonságokkal
- Konzisztens séma biztosítása a gráfelemekhez
- Hivatkozás az AddNodes és az AddEdges lépések "Címkék" tömbjében
- Ideális jól ismert, stabil entitás- és kapcsolattípusokhoz
Dinamikus címkék
- Nincs előre definiálva a Séma szakaszban
- Futásidőben generálva az alapul szolgáló táblák adataiból
- A "LabelsColumn" használatával van megadva az AddNodes vagy az AddEdges lépésekben
- Lehet egy címke (sztringoszlop) vagy több címke (dinamikus tömboszlop)
- Rugalmasabb gráfstruktúrák engedélyezése, amelyek alkalmazkodnak az adatokhoz
- Olyan rendszereknél hasznos, ahol a csomópont-/éltípusok idővel fejlődnek
Jótanács
A statikus és a dinamikus címkék kombinálásával mindkét módszer előnyeit élvezheti: az alapvető entitástípusok sémaérvényesítését, a változó besorolások rugalmasságának fenntartása mellett.
Részletes definíciós lépések
A gráfmodell Definíció szakasza olyan lépéseket tartalmaz, amelyek meghatározzák, hogyan lehet táblázatos adatokból létrehozni a gráfot. Minden lépésnek adott paraméterei vannak a típusától függően.
AddNodes steps
Az AddNodes-lépések meghatározzák, hogyan hozhat létre csomópontokat a gráfban táblázatos adatokból:
Paraméter | Kötelező | Leírás |
---|---|---|
Kedves | Igen | "AddNodes" (AddNodes) értékre kell állítani |
Lekérdezés | Igen | KQL-lekérdezés, amely lekéri a csomópontok adatait. A lekérdezés eredményének tartalmaznia kell a csomópont tulajdonságaihoz és azonosítóihoz szükséges összes oszlopot |
NodeIdColumn | Igen | Az egyes csomópontok egyedi azonosítójaként használt lekérdezési eredmény oszlopa |
Címkék | Nem | A sémaszakaszban definiált statikus címkenevek tömbje, amely ezekre a csomópontokra vonatkozik |
LabelsColumn | Nem | A lekérdezés eredményének oszlopa, amely dinamikus címkéket biztosít az egyes csomópontokhoz. Lehet sztringoszlop (egyetlen címke) vagy dinamikus tömboszlop (több címke) |
Hozzáadási lépések
Az AddEdges lépések meghatározzák, hogyan hozhat létre kapcsolatokat a csomópontok között a gráfban:
Paraméter | Kötelező | Leírás |
---|---|---|
Kedves | Igen | "AddEdges" értékre kell állítani |
Lekérdezés | Igen | KQL-lekérdezés, amely lekéri az élek adatait. A lekérdezés eredményének tartalmaznia kell a forrás- és célcsomópont-azonosítókat, valamint az éltulajdonságokat |
ForrásOszlop | Igen | A forráscsomópont-azonosítókat tartalmazó lekérdezési eredmény oszlopa |
TargetColumn | Igen | A célcsomópont-azonosítókat tartalmazó lekérdezési eredmény oszlopa |
Címkék | Nem | A sémaszakaszban definiált statikus címkenevek tömbje, amely ezekre a élekre vonatkozik |
LabelsColumn | Nem | A lekérdezés eredményének oszlopa, amely dinamikus címkéket biztosít az egyes élekhez. Lehet sztringoszlop (egyetlen címke) vagy dinamikus tömboszlop (több címke) |
Példák gráfmodellekre
Egyszerű példa statikus és dinamikus címkékkel
Az alábbi példa egy professzionális hálózati gráfmodellt hoz létre, amely egyesíti a statikus sémadefiníciókat a dinamikus címkézéssel:
.create-or-alter graph_model ProfessionalNetwork ```
{
"Schema": {
"Nodes": {
"Person": {"Name": "string", "Age": "long", "Title": "string"},
"Company": {"Name": "string", "Industry": "string", "FoundedYear": "int"}
},
"Edges": {
"WORKS_AT": {"StartDate": "datetime", "Position": "string", "Department": "string"},
"KNOWS": {"ConnectionDate": "datetime", "ConnectionStrength": "int"}
}
},
"Definition": {
"Steps": [
{
"Kind": "AddNodes",
"Query": "Employees | project Id, Name, Age, Title, NodeType",
"NodeIdColumn": "Id",
"Labels": ["Person"],
"LabelsColumn": "NodeType"
},
{
"Kind": "AddNodes",
"Query": "Organizations | project Id, Name, Industry, FoundedYear",
"NodeIdColumn": "Id",
"Labels": ["Company"]
},
{
"Kind": "AddEdges",
"Query": "EmploymentRecords | project EmployeeId, CompanyId, StartDate, Position, Department",
"SourceColumn": "EmployeeId",
"TargetColumn": "CompanyId",
"Labels": ["WORKS_AT"]
},
{
"Kind": "AddEdges",
"Query": "Connections | project PersonA, PersonB, ConnectionDate, ConnectionType, ConnectionStrength",
"SourceColumn": "PersonA",
"TargetColumn": "PersonB",
"Labels": ["KNOWS"],
"LabelsColumn": "ConnectionType"
}
]
}
}
```
Ez a modell olyan lekérdezéseket tenne lehetővé, mint a többfokú elkülönítéssel összekapcsolt munkatársak megkeresése, az azonos iparágban dolgozó személyek azonosítása vagy a szervezeti kapcsolatok elemzése.
Graph-modellek létrehozása és kezelése
Az Azure Data Explorer átfogó felügyeleti parancsokat biztosít a gráfmodellek teljes életciklusuk során történő kezeléséhez.
Parancs összefoglalása
Parancs | Cél | Kulcsparaméterek |
---|---|---|
.create-or-alter graph_model | Új gráfmodell létrehozása vagy meglévő módosítása | Adatbázis, név, séma, definíció |
.drop graph_model | Gráfmodell eltávolítása | Adatbázis, név |
.show graph_models | Elérhető gráfmodellek listázása | Adatbázis [nem kötelező] |
Gráfmodell életciklusa
A gráfmodellek kezelésének tipikus munkafolyamata a következőket foglalja magában:
- Fejlesztés – Kezdeti gráfmodell létrehozása az adatokhoz leképező sémával és definícióval
- Érvényesítés – A modell lekérdezése a helyes struktúra és a várt eredmények ellenőrzéséhez
- Karbantartás – A modell rendszeres frissítése az adatstruktúra fejlődésével
- Pillanatkép-kezelés – Pillanatképek létrehozása és kivonása a teljesítmény és a frissesség egyensúlya érdekében
Jótanács
A gráfmodellekkel kezdve kezdje az adatok egy kis részhalmazával, hogy érvényesítse a tervet, mielőtt nagyobb adathalmazokra skálázhat.
Gráf-pillanatképek
A gráfpillanatképek olyan adatbázis-entitások, amelyek adott időpontban ábrázolják a gráfmodellek példányait. Míg a gráfmodellek a gráfok struktúráját és adatforrásait határozzák meg, a pillanatkép a ténylegesen lekérdezhető materializált gráf.
A gráfpillanatképek főbb jellemzői:
- Minden pillanatkép egy adott gráfmodellhez van csatolva
- Egy gráfmodellhez több pillanatkép is társítható
- A rendszer pillanatképeket hoz létre a
.make graph_snapshot
paranccsal - A pillanatképek olyan metaadatokat tartalmaznak, mint a létrehozási idő és a forrásgráfmodell
- A pillanatképek lehetővé teszik a gráf lekérdezését, mivel az egy adott időpontban létezett
A gráfpillanatképek használatával kapcsolatos további információkért tekintse meg a Gráf pillanatképek áttekintését.
Graph-modellek lekérdezése
A gráfmodellek lekérdezése a graph()
függvény használatával történik, amely hozzáférést biztosít a gráf entitásához. Ez a függvény támogatja a gráf legfrissebb pillanatképének lekérését, vagy a gráf lekérdezési időpontban történő létrehozását, ha a pillanatképek nem érhetők el.
Egyszerű lekérdezési struktúra
graph("GraphModelName")
| graph-match <pattern>
where <filters>
project <output fields>
Lekérdezési példák
1. Alapszintű csomópont-élcsomópont-minta
// Find people who commented on posts by employees in the last week
graph("SocialNetwork")
| graph-match (person)-[comments]->(post)<-[authored]-(employee)
where person.age > 30
and comments.createTime > ago(7d)
project person.name, post.title, employee.userName
2. Több kapcsolati minta
// Find people who both work with and are friends with each other
graph("ProfessionalNetwork")
| graph-match (p1)-[worksWith]->(p2)-[friendsWith]->(p1)
where labels(worksWith) has "WORKS_WITH" and labels(friendsWith) has "FRIENDS_WITH" and
labels(p1) has "Person" and labels(p2) has "Person"
project p1.name, p2.name, p1.department
3. Változó hosszúságú elérési utak
// Find potential influence paths up to 3 hops away
graph("InfluenceNetwork")
| graph-match (influencer)-[influences*1..3]->(target)
where influencer.id == "user123" and all(influences, labels() has "INFLUENCES")
project influencePath = influences,
pathLength = array_length(influences),
target.name
A graph()
függvény konzisztens módot biztosít a gráfadatok elérésére anélkül, hogy explicit módon kellene létrehoznia a gráfot az egyes lekérdezésekhez.
Megjegyzés:
A gráflekérdezés szintaxisával és képességeivel kapcsolatos teljes referenciaért tekintse meg a Gráf operátorokat .
Gyakori kérdések
Ki felel a gráf frissítéséért?
A felhasználóknak vagy folyamatoknak maguknak kell frissíteniük a gráfot. Kezdetben nem léteznek automatikus frissítési szabályzatok az új gráfentitásokhoz. A gráf azonban akkor is lekérdezhető marad, ha a pillanatkép létrehozása folyamatban van, vagy még nem lett létrehozva.
Hogyan frissíthető egy gráf?
Gráf frissítése:
- Új pillanatkép létrehozása aszinkron művelettel (
.make graph_snapshot
) - A létrehozás után a bejövő gráfos lekérdezések automatikusan használják az új pillanatképet
- Nem kötelező: A régi pillanatkép elvetése erőforrások felszabadításához (
.drop graph_snapshot
)
Mi történik, ha a különböző lépések duplikált éleket vagy csomópontokat hoznak létre?
A definíciós lépések egymás után futnak, és a duplikált kezelés csomópontok és élek között eltérő:
Élek: Az ismétlődések alapértelmezés szerint ismétlődnek, mivel az élek nem rendelkeznek egyedi azonosítókkal. Ha több lépés is azonos forrás-cél kapcsolatokat hoz létre, mindegyik külön él lesz a gráfban. Ez a viselkedés szándékos, mivel ugyanazon csomópontok közötti több kapcsolat különböző interakciókat vagy eseményeket jelölhet az idők során.
Csomópontok: Az "ismétlődések" automatikusan egyesülnek a NodeIdColumn érték alapján – a rendszer feltételezi, hogy ugyanazt az entitást képviselik. Ha több lépés is létrehoz csomópontokat ugyanazzal az azonosítóval:
- A különböző lépések összes tulajdonsága egyetlen csomópontba van kombinálva
- Ha ugyanahhoz a tulajdonságnévhez ütköző tulajdonságértékek vannak, a legutóbb végrehajtott lépés értéke elsőbbséget élvez
- Az egyik lépésben meglévő, de egy másikban nem szereplő tulajdonságok megmaradnak
Ez az egyesítési viselkedés lehetővé teszi csomópontok növekményes összeállítását a lépések között, például alapszintű információkat adhat hozzá egy lépésben, és további tulajdonságokkal bővülhet a következő lépésekben.
Hogyan kezelik a gráfmodellek a sémamódosításokat?
Amikor a mögöttes adatok sémája megváltozik:
- A gráfmodell módosítása a parancs használatával a
.create-or-alter graph_model
sémájának vagy definíciójának frissítéséhez - A módosítások megvalósulásához hozzon létre egy új pillanatképet
- A régebbi pillanatképek továbbra is elérhetők maradnak, amíg explicit módon el nem dobják
Lekérdezhetek több gráfmodellt?
Igen, több gráfmodellt is lekérdezhet egyetlen lekérdezésben a kompozíció használatával:
- Az egyik
graph()
operátor kimenetének használata egy másikgraph()
operátor bemeneteként - Az eredmények feldolgozása és átalakítása egy gráfból egy másik gráf lekérdezésbe való betáplálás előtt
- Több gráfművelet láncolása tartományok közötti elemzéshez egységes modell létrehozása nélkül
Példa:
// Query the first graph model
graph("EmployeeNetwork")
| graph-match (person)-[manages]->(team)
where labels(manages) has "MANAGES" and labels(person) has "Employee"
project manager=person.name, teamId=team.id
// Use these results to query another graph model
| join (
graph("ProjectNetwork")
| graph-match (project)-[assignedTo]->(team)
where labels(assignedTo) has "ASSIGNED_TO"
project projectName=project.name, teamId=team.id
) on teamId
Mi a különbség a címkék és a tulajdonságok között?
- Címkék: Csomópontok és élek kategorizálása a szerkezeti minták egyeztetéséhez
- Tulajdonságok: Csomópontokhoz és élekhez társított adatértékek tárolása (szűréshez és kimenethez használatos)