Gegevens verrijken met behulp van gegevensstromen
Belangrijk
Deze pagina bevat instructies voor het beheren van Azure IoT Operations-onderdelen met behulp van Kubernetes-implementatiemanifesten, die in preview zijn. Deze functie is voorzien van verschillende beperkingen en mag niet worden gebruikt voor productieworkloads.
Raadpleeg de Aanvullende voorwaarden voor Microsoft Azure-previews voor juridische voorwaarden die van toepassing zijn op Azure-functies die in bèta of preview zijn of die anders nog niet algemeen beschikbaar zijn.
U kunt gegevens verrijken met behulp van de functie contextualisatiegegevenssets . Wanneer binnenkomende records worden verwerkt, kunt u een query uitvoeren op deze gegevenssets op basis van voorwaarden die betrekking hebben op de velden van de binnenkomende record. Met deze mogelijkheid kunnen dynamische interacties worden gebruikt. Gegevens uit deze gegevenssets kunnen worden gebruikt om informatie in de uitvoervelden aan te vullen en deel te nemen aan complexe berekeningen tijdens het toewijzingsproces.
Als u voorbeeldgegevens wilt laden in het statusarchief, gebruikt u de CLI van het statusarchief.
Bekijk bijvoorbeeld de volgende gegevensset met een paar records, die worden weergegeven als JSON-records:
{
"Position": "Analyst",
"BaseSalary": 70000,
"WorkingHours": "Regular"
},
{
"Position": "Receptionist",
"BaseSalary": 43000,
"WorkingHours": "Regular"
}
De mapper opent de referentiegegevensset die is opgeslagen in het statusarchief van Azure IoT Operations met behulp van een sleutelwaarde op basis van een voorwaarde die is opgegeven in de toewijzingsconfiguratie. Sleutelnamen in het statusarchief komen overeen met een gegevensset in de gegevensstroomconfiguratie.
datasets: [
{
key: 'position',
inputs: [
'$source.Position' // - $1
'$context.Position' // - $2
],
expression: '$1 == $2'
}
]
Wanneer een nieuwe record wordt verwerkt, voert de mapper de volgende stappen uit:
- Gegevensaanvraag: De mapper verzendt een aanvraag naar het statusarchief om de gegevensset op te halen die is opgeslagen onder de sleutel
Position
. - Overeenkomende records: De mapper voert vervolgens een query uit op deze gegevensset om de eerste record te vinden waar het
Position
veld in de gegevensset overeenkomt met hetPosition
veld van de binnenkomende record.
{
inputs: [
'$context(position).WorkingHours' // - $1
]
output: 'WorkingHours'
}
{
inputs: [
'BaseSalary' // - - - - - - - - - - - - $1
'$context(position).BaseSalary' // - - $2
]
output: 'BaseSalary'
expression: 'if($1 == (), $2, $1)'
}
In dit voorbeeld wordt het WorkingHours
veld toegevoegd aan de uitvoerrecord, terwijl het BaseSalary
alleen voorwaardelijk wordt gebruikt wanneer de binnenkomende record het veld niet bevat BaseSalary
(of de waarde is null
als het een null-veld is). De aanvraag voor de contextuele gegevens vindt niet plaats bij elke binnenkomende record. De mapper vraagt de gegevensset aan en ontvangt vervolgens meldingen uit het statusarchief over de wijzigingen, terwijl er een in de cache opgeslagen versie van de gegevensset wordt gebruikt.
Het is mogelijk om meerdere gegevenssets te gebruiken:
datasets: [
{
key: 'position'
inputs: [
'$source.Position' // - $1
'$context.Position' // - $2
],
expression: '$1 == $2'
}
{
key: 'permissions'
inputs: [
'$source.Position' // - $1
'$context.Position' // - $2
],
expression: '$1 == $2'
}
]
Gebruik vervolgens de verwijzingen gemengd:
inputs: [
'$context(position).WorkingHours' // - $1
'$context(permissions).NightShift' // - $2
]
De invoerverwijzingen gebruiken de sleutel van de gegevensset zoals position
of permission
. Als de sleutel in het statusarchief niet handig is om te gebruiken, kunt u een alias definiëren:
datasets: [
{
key: 'datasets.parag10.rule42 as position'
inputs: [
'$source.Position' // - $1
'$context.Position' // - $2
],
expression: '$1 == $2'
}
]
De configuratie wijzigt de naam van de gegevensset met de sleutel datasets.parag10.rule42
in position
.