Kommandot .replace extents
Det här kommandot körs i kontexten för en specifik databas. Den flyttar de angivna utsträckningarna från källtabellerna till måltabellen och släpper sedan de angivna utsträckningarna från måltabellen. Alla släpp- och flyttåtgärder utförs i en enda transaktion.
Anteckning
Datashards kallas omfattningar och alla kommandon använder "extent" eller "extents" som synonym. Mer information om omfattningar finns i Översikt över omfattningar (datashards).
Behörigheter
Du måste ha minst table Admin behörigheter för käll- och måltabellerna.
Begränsningar
- Både käll- och måltabeller måste finnas i kontextdatabasen.
- Alla utsträckningar som anges av ExtentsToDropQuery förväntas tillhöra måltabellen.
- Alla kolumner i källtabellerna förväntas finnas i måltabellen med samma namn och datatyp.
- Om måltabellen är en källtabell i en materialiserad vy kan kommandot misslyckas eftersom den materialiserade vyn inte bearbetar posterna i de flyttade utsträckningarna. Mer information finns på sidan med begränsningar för materialiserade vyer . Du kan lösa det här felet genom att ange en ny inmatningstid under flyttkommandot. Se
setNewIngestionTime
i egenskaper som stöds.
Syntax
.replace
[async
] extents
table
in
DestinationTableName [ with
(
PropertyName=
PropertyValue [,
...])
] <|
{
ExtentsToDropQuery},{
ExtentsToMoveQuery}
Läs mer om syntaxkonventioner.
Parametrar
Namn | Typ | Obligatorisk | Beskrivning |
---|---|---|---|
async |
string |
Om det anges körs kommandot asynkront. | |
DestinationTableName | string |
✔️ | Namnet på den tabell som utsträckningarna ska flyttas till. |
FromDate | datetime |
Startdatum för frågefönstret. | |
ToDate | datetime |
Slutdatum för frågefönstret. | |
PropertyName, PropertyValue | string |
En eller flera egenskaper som stöds. | |
ExtentsToDropQuery | string |
✔️ | Resultatet av den här frågan anger i vilken utsträckning ID:t som ska tas bort från måltabellen. Ska returnera en postuppsättning med en kolumn med namnet "ExtentId". |
ExtentsToMoveQuery | string |
✔️ | Resultatet av den här KQL-frågan (Kusto-frågespråk) anger källtabellerna och omfattningens ID:n som ska flyttas till måltabellen. Ska returnera en postuppsättning med kolumnerna "ExtentId" och "TableName". |
Egenskaper som stöds
Egenskapsnamn | Typ | Obligatorisk | Beskrivning |
---|---|---|---|
setNewIngestionTime |
bool |
Om värdet true är tilldelas en ny inmatningstid till alla poster i de utsträckningar som flyttas. Detta är användbart när poster ska bearbetas av arbetsbelastningar som är beroende av databasmarkörer, till exempel materialiserade vyer och kontinuerlig dataexport. |
|
extentCreatedOnFrom |
datetime |
✔️ | Tillämpa på omfattningar som skapats efter den här tidpunkten. |
extentCreatedOnTo |
datetime |
✔️ | Tillämpa på omfattningar som skapats före den här tidpunkten. |
Anteckning
För bättre prestanda anger du extentCreatedOnFrom och extentCreatedOnTo-parametrar till minsta möjliga intervall.
Returer
När kommandot körs synkront returneras en tabell med följande schema.
Utdataparameter | Typ | Description |
---|---|---|
OriginalExtentId | string |
En unik identifierare (GUID) för den ursprungliga omfattningen i källtabellen som har flyttats till måltabellen eller omfattningen i måltabellen som har tagits bort. |
ResultExtentId | string |
En unik identifierare (GUID) för den resultatmängd som har flyttats från källtabellen till måltabellen. Tom om omfattningen togs bort från måltabellen. Vid fel: "Misslyckades". |
Information | string |
Innehåller felinformationen om åtgärden misslyckas. |
När kommandot körs asynkront returneras ett åtgärds-ID (GUID). Övervaka åtgärdens status med kommandot .show operations och hämta resultatet av en lyckad körning med kommandot .show-åtgärdsinformation .
Anteckning
Kommandot misslyckas om omfattningar som returneras av Frågan ExtentsToDropQuery inte finns i måltabellen. Detta kan inträffa om omfattningarna sammanfogades innan kommandot replace kördes. Kontrollera att kommandot misslyckas i saknade omfattningar genom att kontrollera att frågan returnerar förväntade ExtentIds. Exempel 1 nedan misslyckas om det inte finns någon utsträckning att släppa i tabellen MyOtherTable. Exempel 2 lyckas dock även om det inte finns någon utsträckning att släppa, eftersom frågan som ska tas bort inte returnerade några utsträcknings-ID:er.
Exempel
Flytta alla områden i ett angivet tidsintervall för skapande från två tabeller
Flytta alla omfattningar från två specifika tabeller (MyTable1
, MyTable2
) i ett angivet tidsintervall för skapande till tabellen MyOtherTable
och släpp alla omfattningar i MyOtherTable
taggade med drop-by:MyTag
:
.replace extents in table MyOtherTable with (extentCreatedOnFrom=datetime(2023-03-10), extentCreatedOnTo=datetime(2023-03-12)) <|
{
.show table MyOtherTable extents where tags has 'drop-by:MyTag'
},
{
.show tables (MyTable1,MyTable2) extents
}
Exempelutdata
OriginalExtentId | ResultExtentId | Information |
---|---|---|
e133f050-a1e2-4dad-8552-1f5cf47cab69 | 0d96ab2d-9dd2-4d2c-a45e-b24c65aa6687 | |
cdbeb35b-87ea-499f-b545-defbae091b57 | a90a303c-8a14-4207-8f35-d8ea94ca45be | |
4fcb4598-9a31-4614-903c-0c67c286da8c | 97aafea1-59ff-4312-b06b-08f42187872f | |
2dfdef64-62a3-4950-a130-96b5b1083b5a | 0fb7f3da-5e28-4f09-a000-e62eb41592df |
Flytta alla områden i ett angivet tidsintervall för skapande från en tabell till en annan, släpp specifik omfattning
Flytta alla områden i ett angivet tidsintervall för skapande från en specifik tabell (MyTable1
) till tabellen MyOtherTable
och släpp en viss utsträckning i MyOtherTable
, med dess ID:
.replace extents in table MyOtherTable with (extentCreatedOnFrom=datetime(2023-03-10), extentCreatedOnTo=datetime(2023-03-12)) <|
{
print ExtentId = "2cca5844-8f0d-454e-bdad-299e978be5df"
},
{
.show table MyTable1 extents
}
.replace extents in table MyOtherTable with (extentCreatedOnFrom=datetime(2023-03-10), extentCreatedOnTo=datetime(2023-03-12)) <|
{
.show table MyOtherTable extents
| where ExtentId == guid(2cca5844-8f0d-454e-bdad-299e978be5df)
},
{
.show table MyTable1 extents
}
Implementera en idempotent-logik
Implementera en idempotent-logik så att Kusto tar bort omfattningar från tabellen t_dest
endast om det finns utrymme att flytta från tabell t_source
till tabell t_dest
:
.replace async extents in table t_dest with (extentCreatedOnFrom=datetime(2023-03-10), extentCreatedOnTo=datetime(2023-03-12)) <|
{
let any_extents_to_move = toscalar(
t_source
| where extent_tags() has 'drop-by:blue'
| summarize count() > 0
);
let extents_to_drop =
t_dest
| where any_extents_to_move and extent_tags() has 'drop-by:blue'
| summarize by ExtentId = extent_id()
;
extents_to_drop
},
{
let extents_to_move =
t_source
| where extent_tags() has 'drop-by:blue'
| summarize by ExtentId = extent_id(), TableName = 't_source'
;
extents_to_move
}
Feedback
https://aka.ms/ContentUserFeedback.
Kommer snart: Under hela 2024 kommer vi att fasa ut GitHub-problem som feedbackmekanism för innehåll och ersätta det med ett nytt feedbacksystem. Mer information finns i:Skicka och visa feedback för