Bir koşulla eşleşen iletileri bırakmak için veri akışındaki filtre aşamasını kullanın. Bir filtre ifadesi true olarak değerlendirildiğinde ileti bırakılır. İfade false olarak değerlendirildiğinde, ileti sonraki aşamaya geçer.
Birden çok filtre kuralı tanımlayabilirsiniz. Her kural giriş alanlarını ve boole ifadesini belirtir. Kurallar OR mantığını kullanır: Herhangi bir kural true olarak değerlendirilirse ileti bırakılır.
Her filtre kuralı aşağıdaki özelliklere sahiptir:
| Mülkiyet |
Zorunlu |
Açıklama |
inputs |
Evet |
Gelen iletiden okunacak alan yollarının listesi. Atanan konumsal değişkenler: ilk giriş olur $1, ikincisi ise $2, vb. olur. |
expression |
Evet |
Her bir ileti için değerlendirilen bir Boole ifadesi. Doğru ise, ileti görmezden gelinir. |
description |
Hayır |
Filtre kuralının okunabilir açıklaması. |
Bilinen son değeri kullan
Alan mevcut mesajda eksik olduğunda bilinen son değeri kullanmak için bir girdiye ? $last ekleyin. Bu yaklaşım, her iletinin her alanı içermediği seyrek veriler için kullanışlıdır.
Örnekler
Eşiğe göre filtreleme
Sıcaklığın 20 veya altında olduğu iletileri bırakın:
Dönüştür (isteğe bağlı) altında Filtre
Aşağıdaki ayarları girin:
| Setting |
Açıklama |
| Filtre koşulu |
temperature <= 20 |
| Açıklama |
Düşük sıcaklık okumalarını düşürme |
Filtre koşulu alanına @ girin veya açılır listeden veri noktaları seçmek için Ctrl + Space tuşlarına basın.
seçin, sonra daUygula'yı seçin.
{
"operationType": "BuiltInTransformation",
"builtInTransformationSettings": {
"filter": [
{
"inputs": [
"temperature"
],
"expression": "$1 <= 20"
}
]
}
}
builtInTransformationSettings: {
filter: [
{
inputs: [
'temperature'
]
expression: '$1 <= 20'
}
]
}
Önemli
Kubernetes dağıtım bildirimlerinin kullanımı üretim ortamlarında desteklenmez ve yalnızca hata ayıklama ve test için kullanılmalıdır.
builtInTransformationSettings:
filter:
- inputs:
- temperature
expression: "$1 <= 20"
Bilinen son değerle filtreleme
Geçerli ileti bunu içermiyorsa bilinen son sıcaklık değerini kullanın. Bilinen son sıcaklığın 20 veya altında olduğu iletileri bırakın:
Filtre koşulu alanına girin @temperature ? $last <= 20.
{
"operationType": "BuiltInTransformation",
"builtInTransformationSettings": {
"filter": [
{
"inputs": [
"$source.temperature ? $last"
],
"expression": "$1 <= 20"
}
]
}
}
builtInTransformationSettings: {
filter: [
{
inputs: [
'temperature ? $last'
]
expression: '$1 <= 20'
}
]
}
Önemli
Kubernetes dağıtım bildirimlerinin kullanımı üretim ortamlarında desteklenmez ve yalnızca hata ayıklama ve test için kullanılmalıdır.
builtInTransformationSettings:
filter:
- inputs:
- temperature ? $last
expression: "$1 <= 20"
Birden çok koşulla filtreleme
Sıcaklık ve nem çarpımının 100.000 veya daha fazla olduğu iletileri bırakın:
Filtre koşulu alanına girin @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'
}
]
}
Önemli
Kubernetes dağıtım bildirimlerinin kullanımı üretim ortamlarında desteklenmez ve yalnızca hata ayıklama ve test için kullanılmalıdır.
builtInTransformationSettings:
filter:
- inputs:
- temperature.Value
- humidity.Value
expression: "$1 * $2 >= 100000"
Zenginleştirilmiş verilerle filtreleme
Zenginleştirme veri kümesi yapılandırdıysanız, filtre koşullarında zenginleştirilmiş alanları kullanabilirsiniz. Örneğin, bir durum deposu veri kümesinden cihaza özgü bir sınıra göre filtreleyin:
Şu anda işlem deneyiminde zenginleştirme tabanlı filtreleme sağlanmamaktadır.
{
"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'
}
]
}
Önemli
Kubernetes dağıtım bildirimlerinin kullanımı üretim ortamlarında desteklenmez ve yalnızca hata ayıklama ve test için kullanılmalıdır.
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"
Bu örnek, sıcaklığın durum deposundan cihaza özgü maksimum değeri aştığı iletileri bırakır.
Birden çok filtre kuralı
Birden çok filtre kuralı tanımlayabilirsiniz. Tüm kurallar OR mantığını kullanır: Herhangi bir kural true olarak değerlendirilirse ileti bırakılır:
Dönüştür (isteğe bağlı) altında, ek filtre kuralları eklemek için Filtre>Ekle'yi birden çok kez seçin.
{
"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'
}
]
}
Önemli
Kubernetes dağıtım bildirimlerinin kullanımı üretim ortamlarında desteklenmez ve yalnızca hata ayıklama ve test için kullanılmalıdır.
builtInTransformationSettings:
filter:
- inputs:
- temperature
expression: "$1 <= 20"
description: Drop low temperatures
- inputs:
- humidity
expression: "$1 >= 80"
description: Drop high humidity readings
İlgili içerik