NetXMS Support Forum

Russian Support => Общие вопросы => Topic started by: Mikhail V. Platonov on July 28, 2008, 11:59:30 AM

Title: Transformation script для string
Post by: Mikhail V. Platonov on July 28, 2008, 11:59:30 AM
Каким образом можно сменить формат данных Data Collection из строкового в цифровой? Например, мне приходит с датчика температура в виде string ("20.0" или "23.4", к примеру), но мне нужно получить из этого цифру (float скорее всего), чтобы иметь возможность обрабатывать значение в threshold'е. Есть ли какая-нибудь функция навроде str2float или есть способ это сделать по-другому?

Извините, если такой вопрос уже был, но я не нашёл ответа, перепробовав все возможные поисковые запросы.
Нашел лишь следующее:

Quote from: Victor Kirhenshtein on May 21, 2008, 12:40:30 PMFor thresholds on strings - you can use "equal", "not equal", "like", and "not like" operations in thresholds for string DCIs. Or use transformation script to transform them into numbers if it's possible.

, но там к сожалению не сказано, каким должен быть transformation script, чтобы "transform them into numbers".

Спасибо.
Title: Re: Transformation script для string
Post by: Anth0ny on July 28, 2008, 03:27:40 PM
хм... я тож получаю температуры с серверов... но както не заморачивался на такое...
а можно поподробнее, зачем нужно это превращение?

Threshold'ы и без этого прекрасно работают.
Title: Re: Transformation script для string
Post by: Mikhail V. Platonov on July 28, 2008, 03:46:26 PM
Quote from: Anth0ny on July 28, 2008, 03:27:40 PM
хм... я тож получаю температуры с серверов... но както не заморачивался на такое...
а можно поподробнее, зачем нужно это превращение?

Threshold'ы и без этого прекрасно работают.

А вот у меня не работают. Поясню. Мне нужно отслеживать, чтобы температура в помещении была от 20 до 25 градусов. Но так как температура приходит в виде string (так ее датчик отдаёт по SNMP), то в threshold'е я могу использовать только "equal", "not equal", "like" и "not like", иначе не срабатывает. Но мне нужны такие вещи как "greater" или "less", т.е. неравенство, а они доступны только для цифровых форматов данных, как integer или float.
Может быть, конечно, можно сравнить строковое представление цифрового значения, но как это сделать, мне не понятно.
Title: Re: Transformation script для string
Post by: Victor Kirhenshtein on July 28, 2008, 07:04:04 PM
Quote from: Indigo on July 28, 2008, 11:59:30 AM
Каким образом можно сменить формат данных Data Collection из строкового в цифровой? Например, мне приходит с датчика температура в виде string ("20.0" или "23.4", к примеру), но мне нужно получить из этого цифру (float скорее всего), чтобы иметь возможность обрабатывать значение в threshold'е. Есть ли какая-нибудь функция навроде str2float или есть способ это сделать по-другому?

Достаточно просто поставить тип данных float для данного DCI. Если полученная строка содержит число, то будет произведена конвертация, иначе будет подставлено значение 0.
Title: Re: Transformation script для string
Post by: Mikhail V. Platonov on July 30, 2008, 11:36:47 AM
Quote from: Victor Kirhenshtein on July 28, 2008, 07:04:04 PM
Достаточно просто поставить тип данных float для данного DCI. Если полученная строка содержит число, то будет произведена конвертация, иначе будет подставлено значение 0.

О, отлично, спасибо.