Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
✅Eventstream prostředků infrastruktury Azure Stream Analytics ✅
Snapshot okna seskupí události se stejným časovým razítkem. Na rozdíl od jiných typů oken, které vyžadují konkrétní funkci okna (například SessionWindow(), můžete okno snímku použít přidáním System.Timestamp() do klauzule GROUP BY.
Následující diagram znázorňuje datový proud s řadou událostí a jejich mapování do oken snímků.
System.Timestamp() lze v klauzuli GROUP BY považovat za klíčový sloupec nebo definici okna snímku, protože seskupuje události do okna na základě rovnosti časových razítek. V kombinaci s jinou funkcí okna se System.Timestamp() považuje za klíč, nikoli jako definici okna. System.Timestamp() negeneruje chybu při použití s jinými funkcemi okna na rozdíl od použití více funkcí okna v klauzuli GROUP BY. Použití system.Timestamp() a funkce okna v group BY může být užitečné k dávkování výsledků.
Žádný výraz, který obsahuje System.Timestamp(), se nepovažuje za okno.
GROUP BY DATEPART(minute, System.Timestamp()) Například selže s chybou "Okno musí být zadáno".
Syntaxe
System.Timestamp()
Příklady
Základní příklad
Následující příklad vrátí počet tweetů se stejným typem tématu, ke kterému dochází ve stejnou dobu:
SELECT Topic, COUNT(*)
FROM TwitterStream TIMESTAMP BY CreatedAt
GROUP BY Topic, System.Timestamp()
Příklad snímku přeskakujícího okna
Běžným použitím oken snímků je agregace událostí po jejich seskupení do jednoho časového razítka prostřednictvím předchozí funkce okna, jako je například TumblingWindow níže.
Následující příklad vrátí počet tweetů se stejným typem tématu stejného uživatele do 30minutových intervalů:
WITH PerInterval AS (
SELECT Topic, User, COUNT(*)
FROM TwitterStream TIMESTAMP BY CreatedAt
GROUP BY Topic, User, TumblingWindow(minute, 30)
)
SELECT * INTO UserTopicsCount FROM PerInterval
Pokud chcete zjistit počet uživatelů a celkový počet tweetů na téma ve stejném intervalu, můžete použít výsledek předchozího dotazu. Vzhledem k tomu, že výsledky přeskakujícího okna budou mít všechna časová razítka zarovnaná na 30minutovou hranici, můžete pomocí okna snímku vracet události na každé hranici, protože všechny mají stejnou hodnotu časového razítka.
SELECT Topic, Users = COUNT(*), Total = SUM (count)
FROM PerInterval
GROUP BY Topic, System.Timestamp()
Předchozí dotaz vrátil počet uživatelů a celkový počet tweetů na téma ve stejném 30minutovém intervalu. Pokud chcete získat stejné výsledky jednou za 2 hodiny, přidejte do klauzule GROUP BY přeskakující okno o 2 hodinách.
Následující dotaz vrátí výsledky ze všech čtyř 30minutových intervalů na konci každého 2hodinového intervalu.
SELECT Topic, Users = COUNT(*), Total = SUM (count)
FROM PerInterval
GROUP BY Topic, System.Timestamp(), Tumbling (hour, 2)
Příklad agregace oken
System.Timestamp() můžete použít jako jedno z oken v agregované konstruktoru Windows().
SELECT
TollId,
COUNT(*)
FROM Input TIMESTAMP BY EntryTime
GROUP BY
TollId,
Windows(
TumblingWindow(minute, 10),
TumblingWindow(minute, 20),
System.Timestamp())