전체 글(116)
-
[MySQL] GROUP_CONCAT
MySQL에서 GROUP BY를 사용하되 집계하지 않고 요소들을 리스트화 하는 방식에 대해 정리하려고 한다. 문법 자체는 매우 단순해서 아래 예시를 통해 설명하려고 한다. 예시 데이터는 따릉이 토이 프로젝트때 사용한 테이블 중 서울 공원들의 위치 정보를 담고 있는 park_location_table 테이블을 사용하였다. 위 테이블에서 행정구(city_gu) 별로 공원들을 리스트화 해서 집계하려고 한다. SELECT city_gu, GROUP_CONCAT(parkname) AS 'park_list' FROM park_location_table GROUP BY city_gu; 이와 같이 실행하면 아래와 같은 결과가 나온다. 항목들 사이의 구분 기준은 아래와 같이 구체적으로 설정 가능하다. SELECT cit..
2022.01.24 -
[MySQL] WITH AS
최근 HankerRank와 Leetcode에서 SQL 코딩 문제들을 풀던 도중 동일한 서브쿼리문을 여러곳에서 길게 작성하다 보니 코드 정리가 안되는 느낌을 받았다. 또한 가끔은 서브쿼리안에도 서브쿼리문을 작성해야할 경우가 있어서 가독성이 매우 떨어진다고 느꼈었다. 사용할 쿼리 결과를 미리 저장해두고 사용하는 방법이 없는지 찾아본 결과 MySQL에서 WITH AS 라는 아주 유용한 문법을 제공함을 알 수 있었다. 꼭 SQL 코딩 문제 풀이뿐 아니라 반복적으로 동일한 구문 결과를 사용할 일이 있을 경우 WITH AS 를 이용하여 반복적인 사용이 용이하게 가능하다. WITH AS 문법은 아래와 같다. WITH table_a AS ( 쿼리문 ) SELECT * FROM table_a; WITH 와 AS 사이에 ..
2022.01.10 -
[MySQL] != 처럼 JOIN 하기
최근 두 테이블 JOIN 시 아래 벤다이어그램과 같은 결과가 나오도록 쿼리문을 작성할 일이 있었다. 원래 어떻게 작성하면 위와 같은 결과가 나오는지 알고 있었는데.. 멍청하게도 JOIN ON 조건에 != 를 사용했다. 부끄럽지만 실수로 작성한 쿼리문을 공개하면 다음과 같다. SELECT a.*, b.* FROM table_a a LEFT JOIN table_b b ON a.key != b.key; 쿼리문 실행 후 아무리 기다려도 결과가 나오지 않아 이상함을 느낀 후 생각해보니 아주 잘못된 방식으로 쿼리문을 작성했음을 깨달았다. 위 쿼리문이 안되는 정확한 이유를 알기 위해 구글링 해보니 다음과 같은 이유로 위 쿼리문은 엄청난 연산 과정을 거친다고 한다. LEFT JOIN이 table a의 1,000,000..
2021.12.29 -
따릉이 프로젝트 - 분석을 위한 데이터 마이그레이션(AWS to GCP)
AWS RDS에 따릉이 데이터와 날씨 데이터가 2주 정도 쌓여서 이를 활용한 분석을 진행하기 위해 구글 클라우드 플랫폼(GCP)로 데이터 마이그레이션을 시도했다. 여러 글들을 읽어본 후 구글 빅쿼리의 Federated Query를 활용하는 방식이 제일 만만(?)해 보여 시도해보기로 했다. 구글 빅쿼리의 Federated Query를 활용한 데이터 마이그레이션 방법은 다음과 같다. AWS RDS의 파라미터 그룹 중 gtid 관련 옵션 'ON'으로 수정 AWS DMS에서 "복제 인스턴스"를 이용해 마이그레이션을 수행할 인스턴스 생성 DMS 대시보드에서 옮길 데이터가 존재하는 RDS와 데이터를 받을 CloudSQL를 엔드포인트로 생성 연결 테스트 후 "태스크 생성"을 클릭해 마이그레이션 태스크를 생성 GCP ..
2021.12.21 -
[Google BigQuery] ⌚예약된 쿼리
최근 Google Data Studio를 사용하던 도중 추가 가능한 데이터 소스에 Google BigQuery를 보고 이에 대해 찾아본 후 차근차근 공부를 진행하고 있다. 사실 Google BigQuery에 대해 이론적으로는 잘 모르지만 다른분들의 설명을 보면 다음과 같다고 한다. 쿼리 엔진이 내장된 서버리스(serverless) 서비스로, 확장성이 높은 데이터 웨어하우스 쉽게 얘기하면 페타바이트급의 대용량 데이터를 저장 및 분석할 수 있는 툴이다. 제공하는 여러 기능들 중 이번 포스트에서는 예약된 쿼리에 대해 정리하려고 한다. 1. 예약된 쿼리 설명 예약된 쿼리는 Google Bigquery에서 기본으로 제공하는 기능으로, 설정한 반복 빈도마다 쿼리문을 자동으로 실행 가능하게 해준다. 테이블에 실시간으..
2021.12.16 -
[matplotlib] 전달력 있는 시각화를 위한 기능 설명
평소에 시각화에 관심이 많아서 시각화를 진행 후 더 좋은 방법이 없는지에 대해 고민하며 다양한 글들을 구글링한 경험이 있다. 이번 포스트에서는 어떻게하면 전달력 있는 시각화를 할 수 있을지에 대해 작성하였다. 말은 정말 거창하게 했지만 파이썬을 이용하여 처음 시각화를 진행할 때는 몰랐던 matplotlib이 제공하는 기능들에 대해서 소개하려고 한다. 1. 데이터 준비 작년에 참가한적이 있는 DACON 태양광 발전량 예측 AI 경진대회 train 데이터를 이용해 시각화를 진행 했습니다. 1.1. 필요한 library import & 데이터 확인 # 연산 import numpy as np import pandas as pd # 시각화 import matplotlib.pyplot as plt import se..
2021.12.16