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 .append vonatkozik. 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 egyikextend_schema
vagyrecreate_schema
a betöltési tulajdonság értéketrue
..set-or-append
és.append
a parancsok megőrzik a sémát, kivéve, ha aextend_schema
betöltési tulajdonság értéketrue
.- 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
azdistributed
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:myTag
mé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 |
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: