본문 바로가기

카테고리 없음

GSQL101 Global 변수 이해하기

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