How to returns a ListAccum<tuple>
631068264 opened this issue · comments
shema
CREATE VERTEX MACHINE (PRIMARY_ID ip STRING, ip STRING)
CREATE VERTEX SERVICE (PRIMARY_ID name STRING, name STRING)
CREATE DIRECTED EDGE TRAFFIC (FROM MACHINE, TO MACHINE, traffic_date STRING, app_proto STRING)
CREATE DIRECTED EDGE TRAFFIC_TYPE (FROM MACHINE, TO SERVICE, traffic_date STRING)
CREATE GRAPH traffic (MACHINE,SERVICE,TRAFFIC,TRAFFIC_TYPE)
query
CREATE QUERY GetAppProto(STRING traffic_date,UINT min_src) FOR GRAPH traffic returns (ListAccum<RESULT_TYPE>){
TYPEDEF tuple<STRING ip,STRING date,STRING app_proto> RESULT_TYPE;
ListAccum<RESULT_TYPE> @@RESULTS;
GroupByAccum<STRING ip,STRING date,STRING app_proto ,SumAccum<INT>num > @@DstAccum;
#STRING d = datetime_format(now(),"%Y-%m-%d%");
machine = {MACHINE.*};
results = SELECT p
FROM machine-(TRAFFIC:l)->:p
WHERE l.traffic_date == traffic_date
ACCUM
@@DstAccum += (p.ip,l.traffic_date,l.app_proto->1);
FOREACH d IN @@DstAccum DO
IF d.num >= min_src THEN
@@RESULTS += RESULT_TYPE(d.ip,d.date,d.app_proto);
END;
END;
PRINT @@RESULTS;
RETURN @@RESULTS;
}
I'm nor sure it's suitable to use it or how to fix it .
Hi @631068264 We just launched a new community site to answer these types of questions on https://community.tigergraph.com/. Please repost the original question there and someone will respond promptly. Thanks! Jon Herke, Technical Evangelist