비밀번호

커뮤니티2

  • 흐림속초23.8구름많음북춘천25.6구름많음철원25.3흐림동두천26.2흐림파주25.6흐림대관령22.7구름많음춘천26.3구름많음백령도23.5흐림북강릉24.3흐림강릉26.1흐림동해25.4구름많음서울28.7구름많음인천28.2구름많음원주26.5흐림울릉도27.3구름많음수원27.0흐림영월24.0구름많음충주25.7흐림서산27.4흐림울진26.1구름많음청주구름많음대전27.6구름많음추풍령23.7흐림안동25.7구름많음상주25.3구름많음포항27.8흐림군산27.7구름조금대구28.2구름많음전주28.7구름많음울산25.7구름많음창원27.6흐림광주26.2구름많음부산28.6흐림통영27.9비목포25.4흐림여수29.1구름많음흑산도25.0흐림완도25.7흐림고창25.7흐림순천24.0흐림홍성27.0흐림서청주25.2비제주28.0흐림고산27.5흐림성산29.0비서귀포29.1구름많음진주26.4구름많음강화24.8구름많음양평26.1구름많음이천25.9구름많음인제25.0흐림홍천25.6흐림태백22.8흐림정선군23.7흐림제천24.2구름많음보은25.0흐림천안25.8흐림보령30.3구름많음부여27.0구름많음금산24.8흐림세종27.3흐림부안27.9흐림임실25.1흐림정읍27.1구름많음남원26.7흐림장수23.3흐림고창군26.0흐림영광군25.6구름조금김해시27.5흐림순창군26.6구름조금북창원28.4구름많음양산시27.8흐림보성군26.6흐림강진군25.0흐림장흥24.8흐림해남25.4흐림고흥27.0구름많음의령군26.4구름많음함양군24.9흐림광양시28.8흐림진도군25.6흐림봉화24.5구름많음영주24.4흐림문경24.8흐림청송군25.1흐림영덕25.4흐림의성26.2구름많음구미26.4구름많음영천25.8구름많음경주시25.5구름많음거창23.9구름많음합천26.4구름많음밀양27.4흐림산청25.5흐림거제26.8흐림남해27.6구름많음북부산27.0
  • 2024.09.20(금)

구글애널리틱스[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 를 써야한다면 어떻게 해야할까요?

 

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

 

 

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

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

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

 

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