Cumulocity арендатор не отвечает

Я развернул следующий пример в своем клиенте:

создать контекст HourlyAvgMeasurementDeviceContext, разбивающий измерение.источник.значение из MeasurementCreated;

@Name("Creating_hourly_measurement")
context HourlyAvgMeasurementDeviceContext
insert into CreateMeasurement
select
  m.measurement.source as source,
  current_timestamp().toDate() as time,
  "c8y_AverageTemperatureMeasurement" as type,
  {
    "c8y_AverageTemperatureMeasurement.T.value", avg(cast(getNumber(m, "c8y_TemperatureMeasurement.T.value"), double)),
    "c8y_AverageTemperatureMeasurement.T.unit", getString(m, "c8y_TemperatureMeasurement.T.unit")
  } as fragments
from MeasurementCreated.win:time(1 hours) m
where getObject(m, "c8y_TemperatureMeasurement") is not null
output last every 1 hours;

После этого я хочу получить средние значения температуры (в идеале с единицей измерения) в течение часа следующим образом:

Select event.c8y_AverageTemperatureMeasurement.T.value from CreateMeasurement event;

но я получаю сообщение об ошибке при развертывании запроса как:

Ошибка запуска оператора: не удалось проверить выражение выбора пункта «event.c8y_AverageTemperatureMeasure... (47 символов)»: не удалось преобразовать свойство «event.c8y_AverageTemperatureMeasurement.T.value» в поток или вложенное свойство в потоке [Выбрать событие. c8y_AverageTemperatureMeasurement.T.value из события CreateMeasurement

Не могли бы вы помочь с этим?


person Mouzzam Hussain    schedule 16.03.2017    source источник
comment
Можете ли вы попробовать удалить весь модуль и создать новый с тем же содержимым. Ваш код работает для меня, а также ошибка говорит «event.c8y_AverageTemperatureMeasurement.T.value», но этой части нет в вашем коде.   -  person TyrManuZ    schedule 16.03.2017
comment
Я пытаюсь получить значение Temprature во фрагментах из следующего: { c8y_AverageTemperatureMeasurement.T.value, avg(cast(getNumber(m, c8y_TemperatureMeasurement.T.value), double)), c8y_AverageTemperatureMeasurement.T.unit, getString(m , c8y_TemperatureMeasurement.T.unit) } как фрагменты   -  person Mouzzam Hussain    schedule 16.03.2017


Ответы (1)


вместо

select event.c8y_AverageTemperatureMeasurement.T.value from CreateMeasurement event;

вам нужно использовать

select getNumber(event, "c8y_AverageTemperatureMeasurement.T.value") from CreateMeasurement event;

Если у вас есть пользовательские свойства в объекте, вы не можете получить к ним доступ с помощью точечного синтаксиса. Вам нужно использовать такие функции, как getNumber или getString, где вы передаете объект и JSONPath для захвата. Если эти функции не будут найдены, они вернут null.

person TyrManuZ    schedule 16.03.2017