Fürtök közötti és adatbázisközi lekérdezések

Szolgáltatások váltása a Verzió legördülő listával. További információ a navigációról.
A következőkre vonatkozik: ✅ Microsoft Fabric ✅ Azure Data Explorer ✅ Azure Monitor ✅ Microsoft Sentinel

A lekérdezések egy adott adatbázissal futnak, amely a környezetben adatbázisként van kijelölve. Ez az adatbázis az engedélyek ellenőrzésének alapértelmezett beállítása. Ha egy entitásra a fürt vagy az adatbázis megadása nélkül hivatkozik egy lekérdezés, az adatbázissal lesz feloldva.

A lekérdezések egy adott adatbázissal futnak, amely a környezetben adatbázisként van kijelölve. Ez az adatbázis az engedélyek ellenőrzésének alapértelmezett beállítása. Ha egy entitásra a környezet megadása nélkül hivatkoznak egy lekérdezésben, az adatbázison belül lesz feloldva.

Ez a cikk azt ismerteti, hogyan hajthat végre olyan lekérdezéseket, amelyek az aktuális környezeti adatbázison kívül található entitásokat is érintenek.

Előfeltételek

A fürt és az adatbázis azonosítása a környezetben

Az eseményház és az adatbázis azonosítása a kontextusban

Az alábbi táblázat bemutatja, hogyan azonosíthatja az adatbázist a környezetben lekérdezési környezet alapján.

Környezet Adatbázis a környezetben
Kusto Explorer Az alapértelmezett adatbázis a kapcsolatok panelen van kiválasztva, az aktuális fürt pedig az az adatbázist tartalmazó fürt.
Az Azure Data Explorer webes felhasználói felülete A kapcsolatpanelen az alapértelmezett adatbázis van kiválasztva, az aktuális fürt pedig az adatbázist tartalmazó fürt.
Klienskönyvtárak Adja meg az alapértelmezett adatbázist és fürtöt a Data SourceInitial Catalog és tulajdonságainak alapján.
Környezet Adatbázis/Eseményház a kontextusban
Kusto Explorer Az alapértelmezett adatbázis a kapcsolatok panelen van kiválasztva, az aktuális eseményház pedig az adatbázist tartalmazó eseményház.
Real-Time Intelligence KQL-lekérdezéskészlet Az alapértelmezett adatbázis az aktuális adatbázis , amely közvetlenül vagy egy eseményházban van kiválasztva.
Klienskönyvtárak Adja meg a Kusto kapcsolati sztringek tulajdonságaihoz Data Source használt alapértelmezett adatbázist az adatbázis URI-jával. Az eseményházhoz használja a fürt URI-ját. Ezt a rendszer áttekintésének kiválasztásával találja meg a kiválasztott eseményház Eseményház részletei szakaszában.

Fürtközi vagy adatbázisközi lekérdezések végrehajtása

Eseményközi vagy adatbázisközi lekérdezések végrehajtása

Az adatbázison kívüli entitások környezetbeli eléréséhez használja a fürt() és az adatbázis() függvényt az entitásnév minősítéséhez.

Egy másik adatbázis tábláihoz ugyanabban a fürtben:

database("<DatabaseName>").<TableName>

Távoli fürtön lévő tábla esetén:

cluster("<ClusterName>").database("<DatabaseName>").<TableName>

Egy másik adatbázis tábláihoz ugyanabban az eseményházban:

database("<DatabaseName>").<TableName>

Egy távoli eseményközpontban vagy távoli szolgáltatásban (például az Azure Data Explorerben) lévő tábla esetén:

cluster("<EventhouseClusterURI>").database("<DatabaseName>").<TableName>

Megjegyzés:

A lekérdezés végrehajtásához megtekintői engedéllyel kell rendelkeznie az alapértelmezett adatbázishoz és a lekérdezésben hivatkozott összes többi adatbázishoz. További információkért lásd a Kusto szerepköralapú hozzáférés-vezérléscímű részt.

Jótanács

A lekérdezésből visszaadott rekordok száma alapértelmezés szerint korlátozott, még akkor is, ha az take operátor nincs konkrétan használva. A korlát feloldásához használja az notruncation ügyfélkérési lehetőséget. További információ: Lekérdezési korlátok.

Minősített nevek és az egyesítő operátor

Ha egy minősített név az egyesítő operátor operandusaként jelenik meg, akkor helyettesítő karakterek használatával több táblát és több adatbázist is megadhat. A fürtnevekben nem engedélyezettek a helyettesítő karakterek.

union withsource=TableName *, database("OtherDb*").*Table, cluster("OtherCluster").database("*").*

Ha egy minősített név az egyesítő operátor operandusaként jelenik meg, akkor helyettesítő karakterek használatával több táblát és több adatbázist is megadhat. Az eseményháznevekben nem engedélyezettek a helyettesítő karakterek.

union withsource=TableName *, database("OtherDb*").*Table, cluster("OtherEventhouseClusterURI").database("*").*

Megjegyzés:

Az alapértelmezett adatbázis neve szintén lehetséges egyezés, ezért database("*") az összes adatbázis tábláját megadja, beleértve az alapértelmezettet is.

Minősített nevek és hozzáférési utasítások korlátozása

A korlátozott hozzáférési utasításban minősített nevek vagy minták is szerepelhetnek. A fürtnevek helyettesítő karakterei nem engedélyezettek.

Az eventhouse-nevek helyettesítő karakterei nem engedélyezettek.

Az alábbi lekérdezés korlátozza a lekérdezési hozzáférést a következő entitásokhoz:

  • Bármely entitásnév, amely az alapértelmezett adatbázisban a saját... névvel kezdődik.
  • Bármely tábla az aktuális fürt MyOther nevű adatbázisában.
  • A fürt OtherCluster.kusto.windows.net minden táblája az összes my2 nevű adatbázisban.
restrict access to (my*, database("MyOther*").*, cluster("OtherCluster").database("my2*").*);
  • Bármely entitás neve, amely eseménytől kezdve... az alapértelmezett adatbázisban található.
  • Az összes eventhouse-nak az EventOther nevű adatbázisában lévő bármely tábla.
  • Az eventhouse OtherEventhouse.kusto.data.microsoft.com minden tábla az összes event2 nevű adatbázisban.
restrict access to (event*, database("EventOther*").*, cluster("OtherEventhouseClusterURI").database("event2*").*);

Távoli entitások sémamódosításainak kezelése

A fürtök közötti lekérdezések feldolgozásához a kezdeti lekérdezési értelmezést végző fürtnek távoli fürtökön kell hivatkoznia az entitások sémájára. Az információk beszerzéséhez a rendszer egy parancsot küld a sémák lekéréséhez, amelyeket aztán egy gyorsítótárban tárol.

Ha sémaváltozás történt a távoli fürtben, előfordulhat, hogy a gyorsítótárazott séma elavulttá válik. Ez nem kívánt effektusokhoz vezethet, beleértve azokat a forgatókönyveket is, amelyekben az új vagy törölt oszlopok okoznak Partial query failure. Az ilyen problémák megoldásához frissítse manuálisan a sémát a .clear cache remote-schema paranccsal.

Az eseményházközi vagy az eventhouse-to-ADX-fürtre vonatkozó lekérdezés feldolgozásához a kezdeti lekérdezési értelmezést végző eseményháznak távoli eseményházakon vagy fürtökön kell hivatkoznia az entitások sémájára. Az információk beszerzéséhez a rendszer egy parancsot küld a sémák lekéréséhez, amelyeket aztán egy gyorsítótárban tárol.

Távoli sémamódosítás esetén előfordulhat, hogy a gyorsítótárazott séma elavulttá válik. Ez nem kívánt effektusokhoz vezethet, beleértve azokat a forgatókönyveket is, amelyekben az új vagy törölt oszlopok okoznak Partial query failure. Az ilyen problémák megoldásához frissítse manuálisan a sémát a .clear cache remote-schema paranccsal.

Függvények és nézetek

A függvények és nézetek (állandó és beágyazott) hivatkozhatnak táblákra adatbázis- és fürthatárokon keresztül. Az alábbi kód érvényes.

let MyView = Table1 join database("OtherDb").Table2 on Key | join cluster("OtherCluster").database("SomeDb").Table3 on Key;
MyView | where ...

Az állandó függvények és nézetek egy másik adatbázisból érhetők el ugyanabban a fürtben.

Tegyük fel például, hogy a következő táblázatos függvényt (nézetet) hozza létre egy adatbázisban OtherDb:

.create function MyView(v:string) { Table1 | where Column1 has v ...  }  

Ezután a következő skaláris függvényt hozza létre egy adatbázisban OtherDb:

.create function MyCalc(a:double, b:double, c:double) { (a + b) / c }  

Az alapértelmezett adatbázisban ezekre az entitásokra az alábbiak szerint lehet hivatkozni:

database("OtherDb").MyView("exception") | extend CalCol=database("OtherDb").MyCalc(Col1, Col2, Col3) | take 10

A függvények és nézetek (állandó és beágyazott) hivatkozhatnak a táblákra az adatbázis és az eseményház határán. Az alábbi kód érvényes.

let EventView = Table1 join database("OtherDb").Table2 on Key | join cluster("OtherEventhouseClusterURI").database("SomeDb").Table3 on Key;
EventView | where ...

Az állandó függvények és nézetek egy másik adatbázisból is elérhetők ugyanabban az eseményházban.

Tegyük fel például, hogy a következő táblázatos függvényt (nézetet) hozza létre egy adatbázisban OtherDb:

.create function EventView(v:string) { Table1 | where Column1 has v ...  }  

Ezután a következő skaláris függvényt hozza létre egy adatbázisban OtherDb:

.create function EventCalc(a:double, b:double, c:double) { (a + b) / c }  

Tegyük fel például, hogy a következő táblázatos függvényt (nézetet) hozza létre egy adatbázisban OtherDb:

.create function EventView(v:string) { Table1 | where Column1 has v ...  }  

Ezután a következő skaláris függvényt hozza létre egy adatbázisban OtherDb:

.create function EventCalc(a:double, b:double, c:double) { (a + b) / c }  

Az alapértelmezett adatbázisban ezekre az entitásokra az alábbiak szerint lehet hivatkozni:

database("OtherDb").EventView("exception") | extend CalCol=database("OtherDb").EventCalc(Col1, Col2, Col3) | take 10

Fürtközi függvényhívások korlátozásai

A táblázatos függvényekre vagy nézetekre a fürtök között lehet hivatkozni. A következő korlátozások érvényesek:

  • A távoli függvények táblázatos sémát adnak vissza. A skaláris függvények csak ugyanabban a fürtben érhetők el.
  • A távoli függvények csak skaláris argumentumokat fogadnak el. Egy vagy több táblaargumentumot lekérő függvények csak ugyanabban a fürtben érhetők el.
  • A távoli függvények eredménysémát rögzíteni kell (előre ismert, a lekérdezés egyes részeinek végrehajtása nélkül). Így a lekérdezési szerkezetek, például a pivot beépülő modul nem használhatók. Egyes beépülő modulok, például a bag_unpack beépülő modul, támogatják az eredményséma statikus jelzését, és ebben a formában fürtközi függvényhívásokban is használhatók.
  • Teljesítménybeli okokból a hívó fürt gyorsítótárazza a távoli entitások sémáját a kezdeti hívás után. Ezért a távoli entitás módosításai a gyorsítótárazott sémaadatokkal való eltérést eredményezhetik, ami lekérdezési hibákhoz vezethet. További információ: Fürtök közötti lekérdezések és sémamódosítások.

Az eseményházközi függvényhívások korlátozásai

A táblázatos függvényekre vagy nézetekre az eseményházakban lehet hivatkozni. A következő korlátozások érvényesek:

  • A távoli függvények táblázatos sémát adnak vissza. A skaláris függvények csak ugyanabban az eseményházban érhetők el.
  • A távoli függvények csak skaláris argumentumokat fogadnak el. Egy vagy több táblaargumentumot lekérő függvények csak ugyanabban az eseményházban érhetők el.
  • A távoli függvények eredménysémát rögzíteni kell (előre ismert, a lekérdezés egyes részeinek végrehajtása nélkül). Így a lekérdezési szerkezetek, például a pivot beépülő modul nem használhatók. Egyes beépülő modulok, például a bag_unpack beépülő modul, támogatják az eredményséma statikus jelzését, és ebben a formában az eseményházfüggvények közötti hívásokhoz használhatók .
  • Teljesítménybeli okokból a hívó eseményház gyorsítótárazza a távoli entitások sémáját a kezdeti hívás után. Ezért a távoli entitás módosításai a gyorsítótárazott sémaadatokkal való eltérést eredményezhetik, ami lekérdezési hibákhoz vezethet. További információ: Fürtök közötti lekérdezések és sémamódosítások.

Példák

A következő fürtközi hívás érvényes.

cluster("OtherCluster").database("SomeDb").MyView("exception") | count

Az alábbi lekérdezés távoli skaláris függvényt MyCalchív meg. Ez a hívás megsérti az 1. szabályt, ezért érvénytelen.

MyTable | extend CalCol=cluster("OtherCluster").database("OtherDb").MyCalc(Col1, Col2, Col3) | take 10

Az alábbi lekérdezés távoli függvényt MyCalc hív meg, és táblázatos paramétert biztosít. Ez a hívás megsérti a 2. szabályt, ezért érvénytelen.

cluster("OtherCluster").database("OtherDb").MyCalc(datatable(x:string, y:string)["x","y"] )

Az alábbi eseményközi hívás érvényes.

cluster("OtherEventhouseURI").database("SomeDb").EventView("exception") | count

Az alábbi lekérdezés távoli skaláris függvényt EventCalchív meg. Ez a hívás megsérti az 1. szabályt, ezért érvénytelen.

Eventtable | extend CalCol=cluster("OtherEventhouseClusterURI").database("OtherDb").MyCalc(Col1, Col2, Col3) | take 10

Az alábbi lekérdezés távoli függvényt EventCalc hív meg, és táblázatos paramétert biztosít. Ez a hívás megsérti a 2. szabályt, ezért érvénytelen.

cluster("EventhouseClusterURI").database("OtherDb").MyCalc(datatable(x:string, y:string)["x","y"] )

Az alábbi lekérdezés olyan távoli függvényt SomeTable hív meg, amely a paraméter tablenamealapján változó sémakimenettel rendelkezik. Ez a hívás megsérti a 3. szabályt, ezért érvénytelen.

Táblázatos függvény a következőben: OtherDb.

.create function SomeTable(tablename:string) { table(tablename)  }  

Az alapértelmezett adatbázisban.

cluster("OtherCluster").database("OtherDb").SomeTable("MyTable")
cluster("OtherEventhouseClusterURI").database("OtherDb").SomeTable("EventTable")

Az alábbi lekérdezés olyan távoli függvényt GetDataPivot hív meg, amely az adatokon (pivot() beépülő modulon alapuló változóséma-kimenettel rendelkezik, dinamikus kimenettel rendelkezik. Ez a hívás megsérti a 3. szabályt, ezért érvénytelen.

Táblázatos függvény a következőben: OtherDb.

.create function GetDataPivot() { T | evaluate pivot(PivotColumn) }  

Táblázatos függvény az alapértelmezett adatbázisban.

cluster("OtherCluster").database("OtherDb").GetDataPivot()
cluster("OtherEventhouseClusterURI").database("OtherDb").GetDataPivot()