Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
✅ Azure Stream Analytics ✅ Fabric Eventstream
Sessievensters groeperen gebeurtenissen die op vergelijkbare tijden aankomen, filteren perioden waarin er geen gegevens zijn. De sessievensterfunctie heeft drie hoofdparameters: time-out, maximale duur en partitioneringssleutel (optioneel).
In het volgende diagram ziet u een stroom met een reeks gebeurtenissen en hoe deze worden toegewezen aan sessievensters van 5 minuten time-out en de maximale duur van 10 minuten.
Een sessievenster begint wanneer de eerste gebeurtenis plaatsvindt. Als er een andere gebeurtenis plaatsvindt binnen de opgegeven time-out van de laatst opgenomen gebeurtenis, wordt het venster uitgebreid met de nieuwe gebeurtenis. Als er geen gebeurtenissen plaatsvinden binnen de time-out, wordt het venster tijdens de time-out gesloten.
Als gebeurtenissen binnen de opgegeven time-out blijven optreden, wordt het sessievenster verlengd totdat de maximale duur is bereikt. Houd er rekening mee dat de intervallen voor maximale duurcontrole zijn ingesteld op dezelfde grootte als de opgegeven maximale duur. Als de maximale duur bijvoorbeeld 10 is, wordt gecontroleerd of het venster de maximale duur overschrijdt op t = 0, 10, 20, 30, enzovoort. Dit betekent dat de werkelijke duur van een sessievenster vervolgens maximaal twee keer maxDuration kan zijn.
Zo eindigt ons sessievenster wiskundig als aan de volgende voorwaarde wordt voldaan:
Wanneer er een partitiesleutel wordt opgegeven, worden de gebeurtenissen gegroepeerd op basis van de sleutel en het sessievenster op elke groep afzonderlijk toegepast. Dit is handig voor gevallen waarin u verschillende sessievensters nodig hebt voor verschillende gebruikers of apparaten.
Syntaxis
{SESSIONWINDOW | SESSION} (timeunit, timeoutSize, maxDurationSize) [OVER (PARTITION BY partitionKey)]
{SESSIONWINDOW | SESSION} (Timeout(timeunit , timeoutSize), MaxDuration(timeunit, maxDurationSize)) [OVER (PARTITION BY partitionKey)]
Opmerking
Het sessievenster kan op de bovenstaande twee manieren worden gebruikt.
Argumenten
tijdeenheid Is de tijdseenheid voor de venstergrootte. De volgende tabel bevat alle geldige tijdeenheidargumenten.
| Tijdeenheid | Afkortingen |
|---|---|
| dagen | dd, d |
| uur | Hh |
| minuut | mi, n |
| tweede | ss, s |
| milliseconde | mevrouw |
| microseconde | Mcs |
time-outsize
Een groot geheel getal dat de tussenruimtegrootte van het sessievenster beschrijft. Gegevens die zich binnen de tussenruimtegrootte voordoen, worden gegroepeerd in hetzelfde venster.
maxdurationsize
Als de totale venstergrootte groter is dan de opgegeven maxDurationSize op een controlepunt, wordt het venster gesloten en wordt er op hetzelfde moment een nieuw venster geopend. Momenteel is de grootte van het controle-interval gelijk aan maxDurationSize.
partitionkey
Een optionele parameter waarmee de sleutel wordt opgegeven waarop het sessievenster werkt. Als dit is opgegeven, worden in het venster alleen gebeurtenissen van dezelfde sleutel gegroepeerd.
Voorbeelden
Stel dat u de volgende json-gegevens hebt:
[
// time: the timestamp when the user clicks on the link
// user_id: the id of the user
// url: the url the user clicked on
{
"time": "2017-01-26T00:00:00.0000000z",
"user_id": 0,
"url": "www.example.com/a.html"
},
{
"time": "2017-01-26T00:00:20.0000000z",
"user_id": 0,
"url": "www.example.com/b.html"
},
{
"time": "2017-01-26T00:00:55.0000000z",
"user_id": 1,
"url": "www.example.com/c.html"
},
// ...
]
Als u wilt meten hoe lang elke gebruikerssessies zijn, kunt u de volgende query gebruiken:
CREATE TABLE localinput(time DATETIME, user_id BIGINT, url NVARCHAR(MAX))
SELECT
user_id,
MIN(time) AS window_start,
System.Timestamp() AS window_end,
DATEDIFF(s, MIN(time), System.Timestamp()) AS duration_in_seconds
FROM localinput TIMESTAMP BY time
GROUP BY user_id, SessionWindow(minute, 2, 60) OVER (PARTITION BY user_id)
De voorgaande query maakt een sessievenster met een time-out van 2 minuten, een maximale duur van 60 minuten en partitioneringssleutel van user_id. Dit betekent dat er voor elke user_id onafhankelijke sessievensters worden gemaakt. Voor elk venster genereert deze query uitvoer met de user_id, de begintijd van het venster (window_start), het einde van het venster (window_end) en de totale duur van de gebruikerssessie (duration_in_seconds).