Betöltés lekérdezésből (.set, .append, .set-or-append, .set-or-replace)

Ezek a parancsok végrehajtanak egy lekérdezést vagy egy felügyeleti parancsot, és a lekérdezés eredményeit egy táblába betöltik. A parancsok közötti különbség az, hogy hogyan kezelik a meglévő vagy nem létező táblákat és adatokat.

Parancs Ha a tábla létezik Ha a tábla nem létezik
.set A parancs meghiúsul Létrejön a tábla, és betölti az adatokat
.append Az adatok hozzá lesznek fűzve a táblához A parancs meghiúsul
.set-or-append Az adatok hozzá lesznek fűzve a táblához Létrejön a tábla, és betölti az adatokat
.set-or-replace Az adatok a táblában lévő adatokat cserélik le Létrejön a tábla, és betölti az adatokat

A lekérdezési parancsból való betöltés megszakításához lásd: cancel operation.

Megjegyzés

Ez a betöltési módszer feltárásra és prototípus-mentesítésre szolgál. Éles vagy nagy volumenű forgatókönyvekben ne használja.

Engedélyek

Ha különböző műveleteket szeretne végrehajtani egy táblán, konkrét engedélyekre van szükség:

  • Ha sorokat szeretne hozzáadni egy meglévő táblához a .append paranccsal, legalább Table Ingestor-engedélyekre van szüksége.
  • Ha új táblát szeretne létrehozni a különböző .set parancsokkal, legalább adatbázis-felhasználó engedélyre van szüksége.
  • Ha egy meglévő tábla sorait szeretné lecserélni a .set-or-replace paranccsal, legalább Table Rendszergazda engedélyre van szüksége.

Az engedélyekkel kapcsolatos további információkért lásd: Kusto szerepköralapú hozzáférés-vezérlés.

Syntax

(.set | .append.set-or-replace | | .set-or-append) [async] tableName [with(propertyName= propertyValue [, ...]] <|)queryOrCommand

További információ a szintaxis konvenciókról.

Paraméterek

Név Típus Kötelező Leírás
Aszinkron string Ha meg van adva, a parancs visszaadja a parancsot, és a háttérben folytatja a betöltést. A visszaadott OperationId paranccsal .show operations lekérheti a betöltési befejezés állapotát és eredményeit.
tableName string ✔️ Annak a táblának a neve, amelybe adatokat szeretne beemésztni. A tableName mindig kapcsolódik az adatbázishoz a környezetben.
propertyName, propertyValue string A betöltési folyamat szabályozásához használt egy vagy több támogatott betöltési tulajdonság .
queryOrCommand string ✔️ Annak a lekérdezésnek vagy felügyeleti parancsnak a szövege, amelynek eredményeit a rendszer adatokként használja a betöltendő adatokhoz.

Megjegyzés

Csak .show a felügyeleti parancsok támogatottak.

Támogatott betöltési tulajdonságok

Tulajdonság Típus Description
creationTime string Az ISO8601 sztringként formázott datetime érték, amelyet a betöltött adat kiterjedésének létrehozásakor használhat. Ha nincs meghatározva, now() akkor a függvényt használja. Ha meg van adva, győződjön meg arról, hogy a Lookback céltábla hatályos Extents merge szabályzatának tulajdonsága igazodik a megadott értékhez.
extend_schema bool Ha true, a parancs kibővítheti a tábla sémáját. Az alapértelmezett szint a false. Ez a beállítás csak a , .set-or-appendés set-or-replace parancsokra .appendvonatkozik. Ehhez a beállításhoz legalább Tábla Rendszergazda engedély szükséges.
recreate_schema bool Ha true, a parancs újra létrehozhatja a tábla sémáját. Az alapértelmezett szint a false. Ez a beállítás csak a .set-or-replace parancsra vonatkozik. Ez a beállítás elsőbbséget élvez a extend_schema tulajdonságnál, ha mindkettő be van állítva. Ehhez a beállításhoz legalább Tábla Rendszergazda engedély szükséges.
folder string A táblához hozzárendelni kívánt mappa. Ha a tábla már létezik, ez a tulajdonság felülírja a tábla mappáját.
ingestIfNotExists string Ha meg van adva, a betöltés meghiúsul, ha a táblában már vannak azonos értékű címkével ingest-by: ellátott adatok. További információ: betöltési címkék.
policy_ingestiontime bool Ha true, a betöltési idő szabályzata engedélyezve lesz a táblában. A mező alapértelmezett értéke: true.
tags string JSON-sztring, amely a létrehozott mértékhez társítandó címkék listáját jelöli.
docstring string A tábla dokumentálásához használt leírás.
distributed bool Ha true, a parancs a lekérdezést párhuzamosan végrehajtó összes csomópontról betölti a parancsot. Az alapértelmezett szint a false. Tekintse meg a teljesítménnyel kapcsolatos tippeket.
persistDetails Egy logikai érték, amely ha meg van adva, azt jelzi, hogy a parancsnak meg kell őriznie a .show művelet részletei parancs által történő lekérés részletes eredményeit. Alapértelmezés szerint a értékre van kapcsolva false. with (persistDetails=true)

Sémavezértek

  • .set-or-replace megőrzi a sémát, kivéve, ha az egyik extend_schema vagy recreate_schema a betöltési tulajdonság értéke true.
  • .set-or-append és .append a parancsok megőrzik a sémát, kivéve, ha a extend_schema betöltési tulajdonság értéke true.
  • Az eredményhalmaz sémájának és a céltábla sémájának egyeztetése az oszloptípusokon alapul. Az oszlopnevek nem egyeznek. Győződjön meg arról, hogy a lekérdezés eredménysémaoszlopai ugyanabban a sorrendben vannak, mint a tábla, máskülönben az adatok helytelen oszlopokba lesznek betöltve.

Figyelemfelhívás

Ha a séma módosul, az egy külön tranzakcióban történik a tényleges adatbetöltés előtt. Ez azt jelenti, hogy a séma akkor is módosítható, ha az adatok betöltése sikertelen.

Teljesítménnyel kapcsolatos tippek

  • Az adatbetöltés erőforrás-igényes művelet, amely hatással lehet a fürt egyidejű tevékenységeire, beleértve a lekérdezések futtatását is. Ne futtasson egyszerre túl sok betöltési parancsot.
  • A betöltéshez szükséges adatokat a betöltési műveletenként legfeljebb 1 GB-ra korlátozhatja. Szükség esetén használjon több betöltési parancsot.
  • Állítsa a jelzőt arra true az distributed esetre, ha a lekérdezés által előállított adatok mennyisége nagy, meghaladja az 1 GB-ot, és nem igényel szerializálást. Ezután több csomópont is képes párhuzamosan előállítani a kimenetet. Ne használja ezt a jelzőt, ha a lekérdezési eredmények kicsik, mivel szükségtelenül sok kis adathardvet hozhat létre.

Karakterkorlátozás

A parancs sikertelen lesz, ha a lekérdezés létrehoz egy entitásnevet a $ karakterrel. Az entitásneveknek meg kell felelniük az elnevezési szabályoknak, ezért a $ karaktert el kell távolítani ahhoz, hogy a betöltési parancs sikeres legyen.

Az alábbi lekérdezésben például az search operátor létrehoz egy oszlopot $table. A lekérdezés eredményeinek tárolásához a project-rename paranccsel nevezze át az oszlopot.

.set Texas <| search State has 'Texas' | project-rename tableName=$table

Példák

Hozzon létre egy új táblát RecentErrors az adatbázisban, amely ugyanazzal a sémával rendelkezik, mint LogsTable az elmúlt óra összes hibarekordja.

.set RecentErrors <|
   LogsTable
   | where Level == "Error" and Timestamp > now() - time(1h)

Hozzon létre egy "OldExtents" nevű új táblát az adatbázisban, amely egyetlen oszlopot (ExtentId) tartalmaz, és a több mint 30 nappal korábban létrehozott adatbázis összes kiterjedésének azonosítóját tartalmazza. Az adatbázis egy "MyExtents" nevű táblával rendelkezik. Mivel az adathalmaz várhatóan nagyobb, mint 1 GB (több mint ~1 millió sor), használja az elosztott jelzőt

.set async OldExtents with(distributed=true) <|
   MyExtents 
   | where CreatedOn < now() - time(30d)
   | project ExtentId

Az adatok hozzáfűzése az aktuális adatbázis "OldExtents" nevű táblához, amely egyetlen oszlopot (ExtentId) tartalmaz, és az adatbázis 30 napnál korábban létrehozott összes kiterjedésének azonosítóját tárolja. Jelölje meg az új mértéket címkékkel tagA és tagB, egy "MyExtents" nevű meglévő tábla alapján.

.append OldExtents with(tags='["TagA","TagB"]') <| 
   MyExtents 
   | where CreatedOn < now() - time(30d) 
   | project ExtentId

Fűzze hozzá az adatokat az aktuális adatbázis "OldExtents" táblához, vagy hozza létre a táblát, ha még nem létezik. Címkézze meg az új mértéket a következővel: ingest-by:myTag. Ezt csak akkor végezze el, ha a tábla még nem tartalmaz egy , a "MyExtents" nevű meglévő tábla alapján címkézett ingest-by:myTagmértéket.

.set-or-append async OldExtents with(tags='["ingest-by:myTag"]', ingestIfNotExists='["myTag"]') <|
   MyExtents
   | where CreatedOn < now() - time(30d)
   | project ExtentId

Cserélje le az adatokat az aktuális adatbázis "OldExtents" táblájában, vagy hozza létre a táblát, ha még nem létezik. Címkézze meg az új mértéket a következővel: ingest-by:myTag.

.set-or-replace async OldExtents with(tags='["ingest-by:myTag"]', ingestIfNotExists='["myTag"]') <| 
   MyExtents 
   | where CreatedOn < now() - time(30d) 
   | project ExtentId

Adatok hozzáfűzése az aktuális adatbázis "OldExtents" táblájához, miközben a létrehozott mérték(ek) létrehozási idejét egy adott dátum/idő értékre állítja a múltban.

.append async OldExtents with(creationTime='2017-02-13T11:09:36.7992775Z') <| 
   MyExtents 
   | where CreatedOn < now() - time(30d) 
   | project ExtentId     

Kimenet visszaadva

A vagy .append parancs miatt .set létrehozott mértékekre vonatkozó információkat ad vissza.

Példakimenet

ExtentId OriginalSize ExtentSize Tömörített méret Indexméret RowCount
23a05ed6-376d-4119-b1fc-6493bcb05563 1291 5882 1568 4314 10