2017-04-16 35 views
0

我試圖從艾斯波文檔的where枚舉法爲例擴大,並有問題。這裏是有問題的例子:嘗試使用艾斯波Lambda表達式

select items.where(i => i.location.x = 0 and i.location.y = 0) as zeroloc 
from LocationReport 

我想要做的事似乎很簡單。相反,選擇items匹配這個表達式的:

  • 我想選擇包含至少一個item該表達式匹配LocationReport秒。

  • 它通過time_batch窗口(強調文本非批處理時間窗口也是一種可能性)。

所以每ň的秒數我會收到的LocationReport S IN,每個報告包含在項目清單至少一個零位置的集合。

作爲參考,這裏是在艾斯波例中使用的Java對象的結構:

公共類LocationReport {列表項; ...

public class Item {String assetId; //乘客或行李資產 id位置位置; //(x,y)位置布爾型行李箱; // 如果此項目是行李件,則爲true String assetIdPassenger; //如果 該項目是行李,乘客含有相關...

公共類位置{INT X; int y; ...

背景細節:假設LocationReport是實際的對象我感興趣的...
使用EPL如上面的例子中,where邏輯的作品,但問題是,在只有回國該items成員,我沒有看到LocationReport類它是從哪裏來的,它包含除了itemsUpdateListener需要的其他屬性。

此外,可能不相關,但在我的情況下,我收到很多LocationReports重複(或足夠接近被認爲重複)的消息率,並且我的where子句將需要做出該決定並且僅轉發「新」消息。

謝謝!

+0

你應該添加一些可測試的代碼(重現問題)。提及預期結果與當前結果,然後有人可以幫助您解決問題。 –

回答

1

您可以添加「*」的選擇,並且讓你的事件旁邊的對象。 select *, items.where(...) from LocationReport 您可以添加「輸出每N秒」輸出。爲時間窗口添加「#time(...)」。