Очень удобная вещь для сбора однотипных данных - таблицы DCI, но функционал ограничен. Есть ли способ сделать transformation для columns?
Есть - для таблиц тоже можно делать transformation script - на входе в $1 он получает объект класса Table (https://wiki.netxms.org/wiki/NXSL:Table), по которому можно пройти в цикле по всем строкам и внести изменения.
https://wiki.netxms.org/wiki/NXSL:TableColumn
Непонятно, а в каком атрибуте хранится собственно value? Как его изменить? Вот например таблица со значением входных напряжений, мне нужно значение поделить на 10:
for (i=0;i<$1->columnCount;i++)
{
column = $1->columns[i];
switch (column->name)
{
case "input voltage":
break;
}
}
Я так понимаю, нужно воспользоваться методом getColumnIndex, но в вики нет документации по методам.
Всё, нашел:
https://www.netxms.org/forum/configuration/transformations-scripts-for-table-dci/
idxVoltage = $1->getColumnIndex("input voltage");
for(i = 0; i < $1->rowCount; i++)
{
$1->set(i, idxVoltage, $1->get(i, idxVoltage) / 10);
}
Странное дело, по какой-то причиние в Table Last Value я вижу только три столбца, сколько бы я их не добавлял, причем данные по невидимым столбцам собираются. Для решения проблемы удаляю кеш клиента (каталог ~/.nxmc), но при новом добавлении столбцов приходиться чистить заново.
А как выглядит описание столбцов в настройках DCI?
Прикладываю скрин