Använd filtersteget i ett dataflöde för att släppa meddelanden som matchar ett villkor. När ett filteruttryck utvärderas till sant tas meddelandet bort. När uttrycket utvärderas till false skickas meddelandet vidare till nästa steg.
Du kan definiera flera filterregler. Varje regel anger indatafält och ett booleskt uttryck. Reglerna använder OR-logik: om någon regel utvärderas till true tas meddelandet bort.
Varje filterregel har följande egenskaper:
| Fastighet |
Obligatoriskt |
Beskrivning |
inputs |
Ja |
Lista över fältvägar som ska läsas från det inkommande meddelandet. Tilldelade positionsvariabler: den första inmatningen är $1, den andra är $2och så vidare. |
expression |
Ja |
Booleskt uttryck utvärderas mot varje meddelande. Om sant tas meddelandet bort. |
description |
No |
Läsbar beskrivning av filterregeln. |
Använd senast kända värde
? $last Lägg till i indata för att använda det senast kända värdet när fältet saknas i det aktuella meddelandet. Den här metoden är användbar för glesa data där inte varje meddelande innehåller varje fält.
Exempel
Filtrera efter ett tröskelvärde
Släpp meddelanden där temperaturen är 20 eller lägre:
Under Transformera (valfritt) väljer du Filtrera>lägg till.
Ange följande inställningar:
| Inställning |
Beskrivning |
| Filtervillkor |
temperature <= 20 |
| Beskrivning |
Ignorera avläsningar med låg temperatur |
I fältet för filtervillkor anger du @ eller väljer Ctrl + Blanksteg för att välja datapunkter från en listruta.
Välj Tillämpa.
{
"operationType": "BuiltInTransformation",
"builtInTransformationSettings": {
"filter": [
{
"inputs": [
"temperature"
],
"expression": "$1 <= 20"
}
]
}
}
builtInTransformationSettings: {
filter: [
{
inputs: [
'temperature'
]
expression: '$1 <= 20'
}
]
}
Viktigt!
Användning av Kubernetes-distributionsmanifest stöds inte i produktionsmiljöer och bör endast användas för felsökning och testning.
builtInTransformationSettings:
filter:
- inputs:
- temperature
expression: "$1 <= 20"
Filtrera med det senast kända värdet
Använd det senast kända temperaturvärdet om det aktuella meddelandet inte innehåller det. Släpp meddelanden där den senast kända temperaturen är 20 eller lägre:
I fältet filtervillkor anger du @temperature ? $last <= 20.
{
"operationType": "BuiltInTransformation",
"builtInTransformationSettings": {
"filter": [
{
"inputs": [
"$source.temperature ? $last"
],
"expression": "$1 <= 20"
}
]
}
}
builtInTransformationSettings: {
filter: [
{
inputs: [
'temperature ? $last'
]
expression: '$1 <= 20'
}
]
}
Viktigt!
Användning av Kubernetes-distributionsmanifest stöds inte i produktionsmiljöer och bör endast användas för felsökning och testning.
builtInTransformationSettings:
filter:
- inputs:
- temperature ? $last
expression: "$1 <= 20"
Filtrera med flera villkor
Släpp meddelanden där produkten av temperatur och luftfuktighet är 100 000 eller mer:
I fältet filtervillkor anger du @temperature * @humidity >= 100000.
{
"operationType": "BuiltInTransformation",
"builtInTransformationSettings": {
"filter": [
{
"inputs": [
"temperature.Value",
"humidity.Value"
],
"expression": "$1 * $2 >= 100000"
}
]
}
}
builtInTransformationSettings: {
filter: [
{
inputs: [
'temperature.Value'
'humidity.Value'
]
expression: '$1 * $2 >= 100000'
}
]
}
Viktigt!
Användning av Kubernetes-distributionsmanifest stöds inte i produktionsmiljöer och bör endast användas för felsökning och testning.
builtInTransformationSettings:
filter:
- inputs:
- temperature.Value
- humidity.Value
expression: "$1 * $2 >= 100000"
Filtrera med berikade data
Om du har konfigurerat en berikningsdatauppsättning kan du använda berikade fält under filtervillkor. Du kan till exempel filtrera mot en gräns specifik för enheten från en datauppsättning för statuslagringsdatabas.
För närvarande är berikningsbaserad filtrering inte tillgänglig i driftupplevelsen.
{
"operationType": "BuiltInTransformation",
"builtInTransformationSettings": {
"datasets": [
{
"key": "device_limits",
"inputs": [
"$source.deviceId",
"$context(device_limits).deviceId"
],
"expression": "$1 == $2"
}
],
"filter": [
{
"inputs": [
"temperature",
"$context(device_limits).maxTemperature"
],
"expression": "$1 <= $2"
}
]
}
}
builtInTransformationSettings: {
datasets: [
{
key: 'device_limits'
inputs: [
'$source.deviceId'
'$context(device_limits).deviceId'
]
expression: '$1 == $2'
}
]
filter: [
{
inputs: [
'temperature'
'$context(device_limits).maxTemperature'
]
expression: '$1 <= $2'
}
]
}
Viktigt!
Användning av Kubernetes-distributionsmanifest stöds inte i produktionsmiljöer och bör endast användas för felsökning och testning.
builtInTransformationSettings:
datasets:
- key: device_limits
inputs:
- $source.deviceId
- $context(device_limits).deviceId
expression: "$1 == $2"
filter:
- inputs:
- temperature
- $context(device_limits).maxTemperature
expression: "$1 <= $2"
Det här exemplet släpper meddelanden där temperaturen överskrider det enhetsspecifika maxvärdet från tillståndsarkivet.
Regler för flera filter
Du kan definiera flera filterregler. Alla regler använder OR-logik: om någon regel utvärderas till true tas meddelandet bort:
Under Transformera (valfritt) väljer du Filtrera>Lägg till flera gånger för att lägga till ytterligare filterregler.
{
"operationType": "BuiltInTransformation",
"builtInTransformationSettings": {
"filter": [
{
"inputs": ["temperature"],
"expression": "$1 <= 20",
"description": "Drop low temperatures"
},
{
"inputs": ["humidity"],
"expression": "$1 >= 80",
"description": "Drop high humidity readings"
}
]
}
}
builtInTransformationSettings: {
filter: [
{
inputs: ['temperature']
expression: '$1 <= 20'
description: 'Drop low temperatures'
}
{
inputs: ['humidity']
expression: '$1 >= 80'
description: 'Drop high humidity readings'
}
]
}
Viktigt!
Användning av Kubernetes-distributionsmanifest stöds inte i produktionsmiljöer och bör endast användas för felsökning och testning.
builtInTransformationSettings:
filter:
- inputs:
- temperature
expression: "$1 <= 20"
description: Drop low temperatures
- inputs:
- humidity
expression: "$1 >= 80"
description: Drop high humidity readings
Relaterat innehåll