2017-03-16 30 views
0

我在我的租戶部署了下面的例子:Cumulocity租客不會響應

創建MeasurementCreated方面HourlyAvgMeasurementDeviceContext 分區measurement.source.value;

@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; 

,但我得到,同時部署查詢作爲一個錯誤:

錯誤啓動語句:無法驗證select-clause表達式'event.c8y_AverageTemperatureMeasure ...(47個字符)':無法將屬性'event.c8y_AverageTemperatureMeasurement.T.value'解析爲流中的流或嵌套屬性[Select event.c8y_AverageTemperatureMeasurement .T.value來自CreateMeasurement事件

請問您能協助嗎?

+0

您可以嘗試刪除完整的模塊並使用相同的內容創建一個新模塊。你的代碼正在爲我工​​作,並且錯誤顯示'event.c8y_AverageTemperatureMeasurement.T.value',但是這部分代碼並不存在。 – TyrManuZ

+0

我試圖從以下片段中獲得片段中的臨時值: 「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 –

回答

1

代替

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

你需要使用

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

如果你有一個對象的自定義屬性無法通過點語法訪問它們。您需要使用getNumber或getString之類的函數來傳遞對象和JSONPath來抓取。如果沒有找到,這些函數將返回null。