비밀번호

커뮤니티2

  • 구름많음속초3.7구름많음북춘천-3.1흐림철원-5.0흐림동두천-3.5흐림파주-5.2구름많음대관령-3.5흐림춘천-3.2구름많음백령도0.6구름많음북강릉2.2구름많음강릉5.6구름많음동해4.8구름많음서울-2.3구름많음인천-2.5구름조금원주0.2구름많음울릉도9.1구름조금수원-2.0구름조금영월-0.9구름많음충주-1.8구름많음서산-0.6흐림울진6.0구름많음청주0.5구름많음대전-0.9흐림추풍령0.8구름많음안동1.2흐림상주1.4흐림포항6.1구름많음군산0.6흐림대구5.5구름조금전주1.6흐림울산6.0구름조금창원6.8구름많음광주4.1연무부산7.6구름많음통영6.3구름많음목포5.4맑음여수5.4흐림흑산도7.5구름조금완도5.0흐림고창1.3구름조금순천2.8구름많음홍성-0.9흐림서청주-0.5구름많음제주10.0구름많음고산10.3구름조금성산8.0구름조금서귀포10.6맑음진주0.8흐림강화-3.3구름조금양평-0.6구름조금이천-1.5구름많음인제0.1구름많음홍천-2.1구름많음태백-0.1구름조금정선군-1.9구름많음제천-3.0흐림보은-1.8흐림천안-1.2구름많음보령-0.8흐림부여-0.8구름많음금산-0.2구름많음세종-0.4구름많음부안1.8구름많음임실0.2구름많음정읍1.1흐림남원0.9흐림장수-1.4흐림고창군1.7흐림영광군2.5구름많음김해시6.3구름조금순창군1.0구름많음북창원7.1구름많음양산시7.1구름조금보성군5.1구름조금강진군5.1구름조금장흥4.4구름조금해남5.9구름조금고흥4.2구름조금의령군2.3흐림함양군1.1구름조금광양시4.1구름많음진도군7.1구름많음봉화-0.8구름조금영주-0.4구름많음문경0.5흐림청송군0.7흐림영덕5.0흐림의성-0.1흐림구미3.8흐림영천4.3흐림경주시5.2구름많음거창-0.6구름많음합천3.3흐림밀양4.4구름많음산청1.9구름많음거제7.6구름조금남해4.8박무북부산5.1
  • 2024.12.03(화)

구글애널리틱스[Google Analytics]구글애널리틱스 커뮤니티입니다.

[GA4] 빅쿼리 Array와 Unnest 란?

 

 

오늘은 빅쿼리에서 사용하는 Array , 그리고 Array 하면 빠질 수 없는 Unnest 에 대해 알아보겠습니다

[Array 란 무엇일까]

빅쿼리 UI 상으로는 'Repeated' 라고 표현되는 것이 바로 Array 인데요,

 

 

예를 들어서 간단하게 아래 같은 구조의 도표가 있다고 생각해볼게요. 사람마다의 취미와 직업이 써져 있죠.

 

이렇게 각 1 사람당 1개의 취미 , 1개의 직업만 있다면 array 구조는 불필요합니다.

 

근데 취미가 여러개라면 ?

 

아래 이미지처럼 name 과 job 이 있던 행이 hobby가 늘어남에 따라

행이 5개였던게 8개로 늘어났죠.

 

 

지금은 예시이다 보니 5개 행이 8개로 늘었지만

수가 훨씬 많다면 공간 차지면에서 비효율적일수도 있고,

 

이후에 데이터를 추출할 때도, hobby 가 여러개 있다는걸 모르는 사람이라면

원하는 것과 다른 데이터를 가지게 될 수 도 있죠.

 

이럴 때 활용할 수 있는게 array 입니다.

 

아래 이미지를 보시면 array를 사용하면 hobby 가 여러개 있더라도

name 1명에게만 행이 생성되었습니다.

 


이렇게 한 개의 행에 특정 데이터들이 여러개 저장되면서, 데이터가 세로로 저장되 것이 Array 입니다.

참고로 빅쿼리에서 JSON 형식으로 아래와 같이 확인할 수 있습니다.

 

 

 

[Array 를 만드는 방법]

Array 를 만드는 방법은 여러가지가 있습니다.

[1] 대괄호

select 'HAYEON' name , ['십자수', '헬스장'] hobby , '공무원' job

 

[2] ' Array <타입>' + [대괄호]

select 'HAYEON' name , Array ['십자수', '헬스장'] hobby , '공무원' job

 

[3] Generate 함수

GENERATE_ARRAY (시작 숫자 , 마지막 숫자 , 간격)

select GENERATE_ARRAY(2,20,4) GENERATE_ARRAY

 

 

GENERATE_DATE_ARRAY (시작 날짜 ,마지막 날짜 ,간격)

select GENERATE_DATE_ARRAY('2024-07-01','2024-08-01',interval 1 week) GENERATE_DATE_ARRAY

 

 

 

[4] Array_agg 사용

ARRAY_AGG

 with hobby_table as

 (select '십자수' as hobby

  union all

  select '뜨개질' as hobby

  union all

  select '클라이밍' as hobby    

  union all

  select '게임' as hobby    

  union all

  select '요가' as hobby    

  union all

  select '영상 제작' as hobby  

 )

 

 select array_agg(hobby) as hobby_array

 from hobby_table

 

ARRAY_AGG는 나중에 자주 쓰게되는 것 같아서 좀 더 연습해볼게요 :)

 

위의 예시에서는 array 안에 넣을 항목들을 with 구문에 만들어 두었었는데

만약 저장되어 있는 테이블에서 array_agg 를 써야한다면 어떻게 해야할까요?

 

가장 처음에 가지고 있던 테이블을 보면 이렇게 되어 있는데,

 

 

만약..... 여기 있는 인물들이

직업이 바뀌는 상황이 있었다면? 연도별로 직업이 달라져야하지 않을까요?

또 중간에 취미가 바뀌거나 사라졌을 수도 있겠죠?

 

한번 아래처럼 표를 수정해보았어요.