APPLY (Azure Stream Analytics)
Az APPLY operátor lehetővé teszi, hogy egy lekérdezés külső táblakifejezése által visszaadott minden egyes sorhoz meghívjon egy táblaértékű függvényt. A táblaértékű függvény a jobb oldali bemenetként, a külső táblakifejezés pedig bal oldali bemenetként működik. A bal oldali bemenet minden sorához kiértékeli a jobb oldali bemenetet, a létrehozott sorokat pedig kombinálja a rendszer a végső kimenethez. Az APPLY operátor által létrehozott oszlopok listája a bal oldali bemenet oszlopainak halmaza, amelyet a jobb oldali bemenet által visszaadott oszlopok listája követ.
Az APPLY két formája létezik: CROSS APPLY és OUTER APPLY.
A CROSS APPLY függvény csak olyan sorokat ad vissza a külső táblából, amelyek eredményhalmazt hoznak létre a táblaértékkel rendelkező függvényből. A CROSS APPLY eredménye nem használható a TIMESTAMP BY célértékeként. Használhat azonban egy Azure Stream Analytics-feladatot, amely végrehajtja a CROSS APPLY műveletet, és használhat egy második feladatot a TIMESTAMP BY végrehajtásához.
Az OUTER APPLY függvény az eredményhalmazt előállító sorokat és azokat a sorokat is visszaadja, amelyek nem, a táblaértékű függvény által létrehozott oszlopokban null értékekkel.
Az Azure Stream Analyticsben két táblaértékű függvény érhető el, amelyek megkönnyítik a Tömb és a Rekord típusú mezők használatát. Ezek a GetArrayElements és a GetRecordProperties.
Szintaxis
<input> {CROSS | OUTER} APPLY <elements_selector>
<input> ::= input_name | input_alias
<elements_selector> ::=
{GetArrayElements | GetRecordProperties} (<column_name>) AS element_name
Argumentumok
input_name | input_alias
A bemeneti stream neve vagy aliasa.
column_name
A bemeneti adatfolyam egy oszlopának neve.
element_name
A táblaértékű függvény eredményét tartalmazó új oszlop neve.
Visszatérési típusok
A kimenet egy rekord, amely tartalmazza a kezdeti hasznos adatokat és egy "element_name" rekordot, amely a táblaértékfüggvény eredményét tartalmazza.
A GetArrayElements függvény eredménye egy két mezőt tartalmazó rekord lesz:
ArrayIndex: a tömb elemének indexe
ArrayValue: a tömb elemének értéke.
A GetRecordProperties függvény eredménye egy rekord lesz, két mezővel:
PropertyName: a rekordban lévő tulajdonság neve.
PropertyValue: a rekordban lévő tulajdonság értéke.
Példák
Ebben a példában, a díjfizetési forgatókönyv kiterjesztése során feltételezzük, hogy az autók több rendszámtáblával is rendelkezhetnek (például egy pótkocsit vonó autónak kettő lenne). A kereszt/külső alkalmazás használható a tömb simítására, azaz rendszámtáblánként egy sor lekérésére.
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
A lekérdezés módosítható úgy, hogy külső alkalmazás használatával is nyomon követhesse a rendszám nélküli autókat.
SELECT e.TollId, e.EntryTime,
flat.ArrayValue AS licensePlate, flat.ArrayIndex AS licensePlateIndex
FROM input AS e
OUTER APPLY GetArrayElements(e.Licenses) AS flat
Egy másik példa beágyazott tömbök (tömbök tömbje) használatával.
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
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: