Sdílet prostřednictvím


row_window_session()

Platí pro: ✅Microsoft FabricAzure Data Explorer✅Azure MonitorMicrosoft Sentinel

Vypočítá počáteční hodnoty relace sloupce v serializované sadě řádků.

Syntaxe

row_window_session( Výraz MaxDistanceFromFirst , MaxDistanceBetweenNeighbors [, Restart] , )

Parametry

Název Type Požadováno Popis
Výraz datetime ✔️ Výraz, jehož hodnoty jsou seskupené v relacích. Když výsledkem výrazu je hodnota null, další hodnota spustí novou relaci.
MaxDistanceFromFirst timespan ✔️ Určuje, kdy nová relace začne používat maximální vzdálenost mezi aktuální hodnotou výrazu a její hodnotou na začátku relace.
MaxDistanceBetweenNeighbors timespan ✔️ Dalším kritériem pro zahájení nové relace s použitím maximální vzdálenosti od jedné hodnoty výrazu k další.
Restartovat boolean Pokud je tato hodnota zadaná, každá hodnota, která se vyhodnotí jako true okamžitá, restartuje relaci.

Přečtěte si další informace o konvencích syntaxe.

Návraty

Funkce vrátí hodnoty na začátku každé relace. Používá následující koncepční výpočetní model:

  1. Iteruje přes vstupní sekvenci hodnot výrazů v pořadí.

  2. Pro každou hodnotu se rozhodne, jestli se má vytvořit nová relace.

  3. Pokud je vytvořena nová relace, vrátí funkce aktuální hodnotu výrazu. V opačném případě vrátí předchozí hodnotu výrazu.

Poznámka:

Hodnota představuje novou relaci, pokud splňuje následující podmínky pomocí logické operace OR:

  • Pokud nebyla žádná předchozí hodnota relace nebo hodnota předchozí relace byla null.
  • Pokud se hodnota Výraz rovná nebo překročí předchozí hodnotu relace plus MaxDistanceFromFirst.
  • Pokud se hodnota Výraz rovná nebo překročí předchozí hodnotu Výraz plus MaxDistanceBetweenNeighbors.
  • Pokud Restart je zadaná podmínka a vyhodnotí se jako true.

Příklady

Následující příklad vypočítá počáteční hodnoty relace pro tabulku, datatablese sloupcem ID sekvence a sloupcem časového razítka, který zaznamená čas každého záznamu. Data se seřadí podle ID sekvence a časových razítek a pak příklad vrátí hodnoty pro ID, časové razítko a nový sloupec SessionStarted. Relace nemůže překročit jednu hodinu. Pokračuje tak dlouho, dokud jsou záznamy kratší než pět minut a ID zůstane stejné. Příklad obsahuje záznamy, které jsou méně než pět minut od sebe.

datatable (ID:string, Timestamp:datetime) [
    "1", datetime(2024-04-11 10:00:00),
    "2", datetime(2024-04-11 10:18:00),
    "1", datetime(2024-04-11 11:00:00),
    "3", datetime(2024-04-11 11:30:00),
    "2", datetime(2024-04-11 13:30:00),
    "2", datetime(2024-04-11 10:16:00)
]
| sort by ID asc, Timestamp asc
| extend SessionStarted = row_window_session(Timestamp, 1h, 5m, ID != prev(ID))

Výstup

ID Časové razítko SessionStarted
0 2024-04-11T10:00:00Z 2024-04-11T10:00:00Z
0 2024-04-11T11:00:00Z 2024-04-11T11:00:00Z
2 2024-04-11T10:16:00Z 2024-04-11T10:16:00Z
2 2024-04-11T10:18:00Z 2024-04-11T10:16:00Z
2 2024-04-11T13:30:00Z 2024-04-11T13:30:00Z
3 2024-04-11T11:30:00Z 2024-04-11T11:30:00Z