Sdílet prostřednictvím


Získání nejnovějších verzí dokumentů Azure Cosmos DB

V tomto článku se dozvíte, jak získat nejnovější verzi přijatých dokumentů.

Získání nejnovějších verzí dokumentů

Pokaždé, když se aktualizace dokumentu ingestuje z kanálu změn, přidá se do cílové tabulky nový řádek. V průběhu času vytvoří tabulka historii každého dokumentu v odpovídajícím kontejneru Cosmos DB. Typickým požadavkem je dotazování na nejnovější verzi dokumentu, který odpovídá získání aktuálního stavu kontejneru Cosmos DB.

K dotazování aktuálního stavu z tabulky můžete použít následující způsoby:

V příkladech získáte nejnovější verze dokumentu souhrnem tabulky podle sloupce ID pomocí funkce arg_max ve sloupci _timestamp a zobrazí se jenom řádky s nejnovějšími časovými razítky.

Poznámka:

Sloupec _timestamp se vytvoří z vlastnosti _ts přijatých dokumentů Cosmos DB. Převod z (_ts) na datetime (_timestamp) provádí mapování tabulky příjmu dat nakonfigurované pro tabulku.DateTimeFromUnixSeconds Převedená data ve sloupci _timestamp činí dotazy a materializovaná zobrazení výkonnější než použití nativní DateTimeFromUnixSeconds hodnoty _ts.

Spuštěním dotazu získejte nejnovější verze dokumentů.

Spuštěním následujícího dotazu získejte nejnovější verze dokumentů:

TestTable
| summarize arg_max(_timestamp, *) by Id

Pokud jste k označení odstraněných dokumentů použili obnovitelné značky, můžete je vyfiltrovat pomocí následujícího dotazu:

TestTable
| summarize arg_max(_timestamp, *) by Id
| where not(IsDeleted)

Vytvoření materializovaného zobrazení nejnovějších verzí dokumentů

Pokud má váš kontejner Cosmos DB hodně aktualizací, může být dotaz na získání nejnovějších verzí dokumentů pomalý. Materializovaná zobrazení mají obvykle lepší výkon než dotaz, pokud existuje velké množství aktualizací. Pokud se dotaz často spouští, může být použití materializovaného zobrazení výhodné a ušetřit náklady.

Spuštěním následujícího příkazu vytvořte materializované zobrazení nejnovějších verzí dokumentů:

.create materialized-view LatestDocuments on table TestTable
{
    CosmosChangeFeed1
    | summarize arg_max(_timestamp, *) by Id
}

V materializovaném zobrazení nemůžete v rámci dotazu filtrovat naše měkké značky. Proto pokud chcete odstranit odstraněné dokumenty označené měkkými značkami, zadejte dotaz na materializované zobrazení a vyfiltrujte výsledky následujícím způsobem:

LatestDocuments
| where not(IsDeleted)

Volitelně můžete zapouzdřit filtrovaný dotaz do uložené funkce a volat ho, aby získal nejnovější filtrované výsledky následujícím způsobem:

.create function LatestDocumentsDeletedRemoved(){
    LatestDocuments
    | where not(IsDeleted)
}

LatestDocumentsDeletedRemoved
| summarize sum(Salary) by Area