본문 바로가기

분석/데이터분석42

[SQL] 기하평균 을 구해보자 이전 포스팅에서는 기하평균의 의미와 함께 엑셀(Excel)을 사용하여 데이터를 검증해보았다. https://walkingfox.tistory.com/173 곱의 평균 (기하평균) 위의 차트는 어느 신문기사에서 가져온 경제성장률에 대한 내용이다. 2009년부터 2020년까지 12년동안 경제 성장률이 변화무쌍하다. 그럼 위 12년동안 평균 경제 성장률은 어떻지? 라는 물음에 답 walkingfox.tistory.com 이번 포스트에서는 기하평균을 SQL 에서 구하는 방법을 살펴보도록 한다. 테이블에 아래와 같은 id, rate 이라는 두 컬럼으로 구성된 list 라는 테이블이 있다고 가정을 한다. 여기서 산술평균은 avg 라는 함수를 사용하여 쉽게 구할 수 있다. 기하평균의 경우 athena 또는 prest.. 2022. 7. 26.
곱의 평균 (기하평균) 위의 차트는 어느 신문기사에서 가져온 경제성장률에 대한 내용이다. 2009년부터 2020년까지 12년동안 경제 성장률이 변화무쌍하다. 그럼 위 12년동안 평균 경제 성장률은 어떻지? 라는 물음에 답을 물어보면 음.. 평균을 구하자 라고 생각이 든다. 이때 위의 성장률을 모두 더한 후 12로 나누어 구하는 것이 우리가 아는 평균이다. 정확히는 산술평균이라고 하고, 합의 평균이라고 말할 수 있다. 그래서 엑셀로 계산해 보았다. (1) 실제 경제력 계산 기본 경제력을 (즉, 2008년의 경제력) 100 으로 놓고 년도별 성장률을 곱해보았다. 2020년도에는 경제력이 142.5705 정도가 되었다. (2) 산술 평균에 의한 경제력 성잘률의 평균을 구해보니 1.030083333 이 나왔다. 그래서 이 평균 성장률.. 2022. 7. 22.
[BigQuery] 다양한 쿼리 예제 지난 포스팅에서는 빅쿼리에서의 array 그리고 struct 에 대해서 살펴보았었다. https://walkingfox.tistory.com/169 [BigQuery] Array, Struct 그리고 unnest 빅쿼리에는 Array (배열) 와 Struct (구조체) 라는 개념이 있다. 이 Array 와 Struct 가 생소하게 느껴질 수 있다. 일반적으로 쿼리문의 결과는 아래 그림과 같은 행(row)과 열(column)로 이루어진 테이블(tabl walkingfox.tistory.com 이번 포스팅에서는 여러 케이스의 쿼리 샘플을 살펴보려고 한다. (1) unnest 를 이용한 array 를 펼치기 with 문을 이용하여 위와 같은 테이블을 먼저 구성하였다. id, some_numbers 라는 두개의.. 2022. 6. 26.
[BigQuery] Array, Struct 그리고 unnest 빅쿼리에는 Array (배열) 와 Struct (구조체) 라는 개념이 있다. 이 Array 와 Struct 가 생소하게 느껴질 수 있다. 일반적으로 쿼리문의 결과는 아래 그림과 같은 행(row)과 열(column)로 이루어진 테이블(table) 형태의 결과를 갖는다. GA4와 연결된 BigQuery 창에서 간단하게 쿼리를 해보면 쉽게 array와 struct 를 볼 수 있는데, 아래 그림과 같다. Array 는 위 그림에서 key에 해당되는데 하나의 셀(특정 행,열 위치)에 여러개의 값이 다시 row 처럼 배열로 들어가 있는 형태이다. Struct 는 key 옆에 value 라는 컬럼인데 value.string_value, value.int_value, value.float_value, value.dou.. 2022. 6. 26.
[BigQuery] unixtime 을 timestamp 로 변환 웹사이트 분석에 없어서는 안될 분석 도구인 Google Analytics 가 기존 Universal Analytics (GA3) 에서 GA4 로 강제 전환이 된다. 2023년 7월부터는 GA3를 이용할 수 없게된다. 그리고 GA4로 전환이 되면서 여러 가지 장점이 있는데 그 중에 하나가 BigQuery를 무료로 이용할 수 있는 것이다. 그래서 BigQuery에 대해서 여러 회차에 나누어 글을 써보고자 한다. 이번에 다룰 내용은 숫자(int64 타입) 형태로 되어있는 시간 컬럼(event_timestamp)을 timestamp (날짜 형식 yyyy-mm-dd ) 으로 변환하는 것을 얘기하려 한다. GA4 를 Bigquery 와 연결하고 데이터를 살펴보면 다음과 같다. 이벤트의 발생 시간인 event_tim.. 2022. 6. 25.
[SQL] 데이터 UN-PIVOT 하기 (presto, athena) 지난 포스팅에서는 데이터를 PIVOT 하는 내용에 대해서 알아보았었다. https://walkingfox.tistory.com/166 [SQL] 데이터 PIVOT 하기 (presto, athena) 위 그림에서 파란색의 화살표와 같이 속성(attributtes)과 값(values) 들이 쌓여있는 형태에서, 속성들을 열(컬럼)의 형태로 변형하는 것을 피봇(pivot) 한다고 얘기한다. 그리고 그 반대의 과정을 언피 walkingfox.tistory.com 언피봇(un-pivot) 이란, 위 그림에서처럼 속성(attributes)들이 컬럼으로 되어있는 형태에서 속성들을 행(row)으로 쌓여있는 형태로 만드는 것이다. 이번 포스팅에서는 presto (또는 athena) 에서 un-pivot 하는것에 대해서 설.. 2022. 6. 9.
[SQL] 데이터 PIVOT 하기 (presto, athena) 위 그림에서 파란색의 화살표와 같이 속성(attributtes)과 값(values) 들이 쌓여있는 형태에서, 속성들을 열(컬럼)의 형태로 변형하는 것을 피봇(pivot) 한다고 얘기한다. 그리고 그 반대의 과정을 언피봇(unpivot) 한다고 얘기한다. 이 포스팅에서는 presto (또는 athena) 에서 SQL로 피봇하는 것을 성명하려고 한다. (1) 아래와 같은 형태의 테이블이 있다. 실행을 위해서 sql 로 데이터를 아래와 같이 만들었다. with list (user_id, subject, score) as ( values (1, '국어', 90) , (1, '영어', 85) , (1, '수학', 60) , (2, '국어', 100) , (2, '영어', 50) , (2, '수학', 75) , (.. 2022. 6. 9.
[redash] 쿼리에서 필터 사용법 (filter, multi-filter) 본 글은 redash(리대시)에서 필터(drop-down list) 사용법에 관한 내용이다. 리대시에서는 drop-down list 를 사용할 때, (1) {{파라메터명}} 의 형식으로 사용되는 파라메터를 filter 로 사용하는 방식이 있고 (2) 쿼리문장에서 쿼리결과의 내용을 중심으로 필터를 사용할 수 있다. 이 글에서는 두 번째 방법인 쿼리문장에서 필터를 사용하는 방법에 대해서 설명할 것이고, 단순 선택 필터와 멀티 선택 필터 이렇게 두 가지 방법에 대해서 알아볼 것이다. 아래와 같이 list 라는 이름의 테이블이 있다고 가정하자. with list(uid, area, age_band) as ( values (1, '서울', '10대'), (2, '서울', '20대'), (3, '경기', '30대'.. 2022. 6. 7.
[SQL] 주단위 집계 꼭!! 주의해야할 점 (presto, athena) 이전 포스팅에서는 mysql 에서 주단위 집계시에 주의해야 할 점에 대해서 이야기 했었다. https://walkingfox.tistory.com/159 [MySql] 주단위 집계 꼭!! 주의해야할 점 쿼리(Query) 작업 시에 주 (Week) 단위로 집계를 해야한다면, 꼭 주의해야할 점이 하나 있다. 그것은 특정 일자가 어느 주에 속하는지에 따라서 다른년도의 주로 잘 못 계산되는 경우가 무척 많기 때 walkingfox.tistory.com 이번 글에서는 같은 내용을 presto 나 athena 에서 어떻게 처리할 지 이야기 해보겠다. presto 에서도 mysql에서와 같이 case when 구문을 이용하면 비슷한 방식으로 처리할 수 있지만, 역시나 sql 문장이 장황하게 길어진다. 대신 prest.. 2022. 6. 3.