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
Met de operator APPLY kunt u een tabelwaardefunctie aanroepen voor elke rij die wordt geretourneerd door een buitenste tabelexpressie van een query. De tabelwaardefunctie fungeert als de rechterinvoer en de buitenste tabelexpressie fungeert als de linkerinvoer. De rechterinvoer wordt geëvalueerd voor elke rij uit de linkerinvoer en de geproduceerde rijen worden gecombineerd voor de uiteindelijke uitvoer. De lijst met kolommen die door de operator APPLY worden geproduceerd, is de set kolommen in de linkerinvoer, gevolgd door de lijst met kolommen die door de rechterinvoer worden geretourneerd.
Er zijn twee soorten APPLY: CROSS APPLY en OUTER APPLY.
CROSS APPLY retourneert alleen rijen uit de buitenste tabel die een resultatenset produceren van de functie met tabelwaarde. Het resultaat van een CROSS APPLY kan niet worden gebruikt als de doelwaarde van de TIMESTAMP BY. U kunt echter één Azure Stream Analytics-taak gebruiken die de CROSS APPLY uitvoert en een tweede taak gebruiken om de TIMESTAMP BY uit te voeren.
OUTER APPLY retourneert zowel rijen die een resultatenset produceren als rijen die geen NULL-waarden bevatten in de kolommen die door de functie tabelwaarde worden geproduceerd.
Er zijn twee tabelwaardefuncties beschikbaar in Azure Stream Analytics om het werken met matrix- en recordtypevelden te vergemakkelijken. Ze zijn GetArrayElements en GetRecordProperties.
Syntaxis
<input> {CROSS | OUTER} APPLY <elements_selector>
<input> ::= input_name | input_alias
<elements_selector> ::=
{GetArrayElements | GetRecordProperties} (<column_name>) AS element_name
Argumenten
input_name | input_alias
De naam of alias van de invoerstroom.
column_name
De naam van een kolom van de invoerstroom.
element_name
De naam van de nieuwe kolom met het resultaat van de tabelwaardefunctie.
Retourtypen
De uitvoer is een record met de initiële nettolading en een record 'element_name', die het resultaat van de tabelwaardefunctie bevat.
Voor de functie GetArrayElements is het resultaat een record met twee velden:
ArrayIndex: de index van het element in de matrix
ArrayValue: de waarde van het element in de matrix.
Voor de functie GetRecordProperties is het resultaat een record met twee velden:
PropertyName: de naam van de eigenschap in de record.
PropertyValue: de waarde van de eigenschap in de record.
Voorbeelden
In dit voorbeeld, waarbij het tolbooth-scenario wordt uitgebreid, gaan we ervan uit dat auto's meer dan één kentekenplaat kunnen hebben (bijvoorbeeld een auto die een trailer sleept, twee heeft). Cross/outer apply kan worden gebruikt om deze matrix plat te maken, d.w.w.v. één rij per kentekenplaat.
CREATE TABLE input(TollId nvarchar(max), EntryTime datetime, Licenses array)
SELECT e.TollId, e.EntryTime, flat.ArrayValue AS licensePlate
FROM input AS e
CROSS APPLY GetArrayElements(e.Licenses) AS flat
De query kan worden aangepast om buitengebruik te gebruiken om ook auto's zonder licentieplaat bij te houden.
SELECT e.TollId, e.EntryTime,
flat.ArrayValue AS licensePlate, flat.ArrayIndex AS licensePlateIndex
FROM input AS e
OUTER APPLY GetArrayElements(e.Licenses) AS flat
Een ander voorbeeld van geneste matrices (matrix met matrices).
WITH firstQuery AS (
SELECT input.TollId, input.EntryTime,
flat.ArrayIndex AS i1, flat.ArrayValue AS licenses
FROM input
CROSS APPLY GetArrayElements(input.ArrayOfArray) AS flat)
SELECT firstQuery.TollId, firstQuery.EntryTime, firstQuery.i1,
flat2.ArrayIndex AS i2, flat2.ArrayValue AS license
FROM firstQuery
CROSS APPLY GetArrayElements(firstQuery.licenses) AS flat2