GSQL101 Global 변수 이해하기
SetAccum 중복제거집합 (중복제거O)
ListAccum 넣은대로집합 (중복제거X)
BagAccum 넣은대로집합 (중복제거X) i.e. @@Bag += (2,3,4,2,5)
TYPEDEF tuple<STRING user, INT value> users ;
HeapAccum (키밸류 형태로 관리가능 + 정렬하면서 특정개수만 유지 가능)
HeapAccum<users>(3, value DESC) @@Heap ;
:: 값을 3개 저장 Value DESC 기준으로 계속 갱신되지만 세개만 유지관리
@@Heap += users("UserA", 100)
MapAccum (*키 밸류 형태로 관리가능)
MapAccum<Int, SumAccum<Int>> @@Map ; ::: 밸류 측에 SumAccum<Int> 을 통해 누적
@@Map += (1->1); 왼쪽 1 이라는 Key 에 1 을 누적 증가시킴 == 1
@@Map += (1->2); 왼쪽 1 이라는 Key 에 2 를 누적 증가시킴 == 3
@@Map += (1->3); 왼쪽 1 이라는 Key 에 3 을 누적 증가시킴 == 6
@@Map += (5->2); 왼쪽 5 라는 Key 에 2 를 넣음 == 2
결과값
"1" : 6
"5" : 2
이 쿼리를 통해
t.age/10 정수값(unit 데이터 타입) 으로 나오고 SumAccum 에 -> 1을 넣는 방식이므로
t.age/10 이 같은 나이대 (10대 20대 30대...) 의 인원수가 증가하는 방식이 됨
SQL 로 치자면 다음과 같이 나옴
Select t.age/10 as "나이대", count(*) as number_of_friends
FROM 해당하는친구집합
WHERE 조건절
Group by t.age/10
+= means sending message to accumulator
2Hop 에서 :t 인 Vertex 의 Source 가 되는 :s 들에 대해
ACCUM t.@avgAge += s.age
각 타겟 Vertex 의 :s 가 되는(edge 로 연결된) 친구 s들의 s.age 값의 평균을 구하는 것이 됨
https://www.youtube.com/watch?v=OAOhra4H_qE&list=PLq4l3NnrSRp6vaCWmookIZJefDkAPvaxS&index=4