2016-04-12 9 views
0

esper kullanarak yeni yapıyorum, EPL'yi nasıl oluşturacağımı bilmeyen bir sorunla karşılaştım.En son event‘s öğesini (null değerini filtrelemeli) bu gruptaki bazı anahtarlara göre grup

Benim etkinliğim bu öğelere sahip (anahtar, dizin, e0, e1, e2 ....) ve her olayda e1 mevcut olabilir veya olmayabilir, en son "index"'s element:“e1” (boş değer hariç) ve toplam (e2) almak istiyorum “anahtar” ile gruplandır.

Böyle bir EPL yazdı:

select key, sum(e2), maxby(index).e1 as e1 from Event.win:time_batch(3 sec) group by key 

örnek çıktısı aşağıda gibi: Gördüğünüz

send event :{key=0, index=0, e0=5, e1=1} 

send event :{**key=3**, index=1, **e1=2**, e2=6} 

send event :{**key=3**, index=2, e0=0, e3=2} **//the event e1 is not exist** 

send event :{key=1, index=3, e2=8, e3=4} 

sliding win output: {key=0, sum(e2)=null, e1=1} 

sliding win output: {key=1, sum(e2)=8, e1=null} 

sliding win output: {**key=3**, sum(e2)=6, **e1=null**} 

, [key = 3] 'in e1 = null, ama beklemek sonucu e1 = null olayını filtrelemek ve çıktı olarak e1 = 2

"maxby", "fmax" işlevi gibi bir koşul eklenemez.

EPL'de nasıl filtreleyebilirim?

cevap

0

sadece "... (e1 boş değil) Etkinliğin gelen ..."

+0

eklemek ancak EPL e1 null olayı filtre: “{** anahtar = 3 **, index = 2, e0 = 0, e3 = 2} ”, e3 = 2 de kaldıracaktır, e3'e ihtiyaç duyarsam bu evnet'i kaldıramıyorum. @ user650839 – alphacome

+0

Bence "maxby (e1 null iken null else index end) olduğunda" maxby "gibi bir şey yapmayı düşünüyorum çünkü" maxby "bir UDF'ye çağrı da dahil olmak üzere herhangi bir ifadeyi alabilir. – user650839

+0

"maxby (durum e1 null olduğunda null else end end end)" ---- Çalışıyor , teşekkür ederim ~~~~~ @ user650839. Bana gerçekten yardım ettin. .., yukarıdaki gibi e1 'minby' indeksi grup anahtarını almaya çalıştığımda, buut, bu işe yaramadı , ben böyle yazarım: minby (durum ne zaman e1 null sonra null else end end)' gönder event: {key = 0, index = 12, e2 = 6, e3 = 3} olay gönder: {key = 0, dizin = 13, ** e1 = 4 **} Kayan kazanç çıkışı : {key = 0, toplam (e2) = 6, ** e1 = boş **} neden çalışmıyor? nasıl yazılır? – alphacome

İlgili konular