Использование узла where() для фильтрации пустых тегов в Kapacitor

Используя Kapacitor 1.3, я пытаюсь использовать следующий узел where для хранения измерений с пустым тегом. Ничего не проходит, и я получаю тот же результат с ==''.

| where(lambda: 'process-cpu__process-name' =~ /^$/)

Я могу обойти эту проблему, используя значение по умолчанию для отсутствующих тегов и отфильтровать этот тег по умолчанию в следующем узле, но мне интересно, есть ли лучший способ структурировать начальный оператор where и избежать дополнительного узла.

| default()
  .tag('process-cpu__process-name','system')
| where(lambda: \"process-cpu__process-name\" == 'system' )

person marco umer    schedule 21.12.2017    source источник


Ответы (1)


Конечно, это не пройдет, потому что это

'process-cpu__process-name'

это строковый литерал TICKScript, не ссылка на поле, которое

"process-cpu__process-name"

В этом случае вы, очевидно, получили условие всегда ложное.

Однако довольно распространенная ошибка, особенно для тех, у кого есть предыдущий опыт работы с языками, которые допускают как одинарные, так и двойные кавычки для простой строки. :-)

Кроме того, в лямбда-выражении TICKScript есть функция под названием strLength(), документ можно найти здесь< /а>, пожалуйста.

person Yuri G    schedule 22.01.2018