tigergraph / ecosys

TigerGraph Ecosystem

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

How to returns a ListAccum<tuple>

631068264 opened this issue · comments

commented

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

image

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