BigQuery

SQL 문법 + GCP 예제

판교데싸 2020. 8. 8. 01:14

 

SQL data type 

인덱스의 종류

  • primary : 중복되지 않는 유일한 키
  • normal : 중복을 허용하는 인덱스
  • unique : 중복을 허용하지 않는 유일한 키
  • foreign : 다른 테이블과의 관계성을 부여하는 키

인덱스의 정의 방법

  • 자주 조회되는 칼럼에 적용
  • 조회 시 오랜시간을 소모하는 컬럼에 적용
  • 데이터가 긴 경우 인덱스를 사용하지 않는다.

인덱스 생성

CREATE INDEX index_name ON table_name (index_col_name,...)

primary key

  • 테이블 전체를 통틀어서 중복되지 않는 값을 지정해야 한다.
  • where 문을 이용해서 데이터를 조회할 때 가장 고속으로 데이터를 가져올 수 있다.
  • 테이블마다 딱 하나의 primary key를 가질 수 있다.
  • 여러개의 컬럼으로 조합이 가능하다.
  • primary key는 자동으로 인덱스가 생성된다.

JOIN

테이블간의 관계성에 따라서 복수의 테이블을 결합, 하나의 테이블인 것처럼 결과를 출력

JOIN의 종류

  • OUTTER JOIN : 매칭되는 행이 없어도 결과를 가져오고 매칭되는 행이 없는 경우 NULL로 표시한다.
    LEFT JOIN과 RIGHT JOIN이 있다.
  • INNER JOIN : 조인하는 두개의 테이블 모두에 데이터가 존재하는 행에 대해서만 결과를 가져온다.

 

 

* inner , outer , cross join  ->  개념 및 예시

 

 

 

### inner

WITH winners AS (
  SELECT 'John' as person, '100m' as event
  UNION ALL SELECT 'Hiroshi', '200m'
  UNION ALL SELECT 'Sita', '400m'
  UNION ALL SELECT 'Kwame', '50m'
),
gifts AS (
  SELECT 'Google Home' as gift, '100m' as event
  UNION ALL SELECT 'Google Hub', '200m'
  UNION ALL SELECT 'Pixel3', '400m'
  UNION ALL SELECT 'Google Mini', '5000m'
)
select person,gift from winners
inner join gifts on 
winners.event=gifts.event

 

### outer

WITH winners AS (
  SELECT 'John' as person, '100m' as event
  UNION ALL SELECT 'Hiroshi', '200m'
  UNION ALL SELECT 'Sita', '400m'
  UNION ALL SELECT 'Kwame', '50m'
),
gifts AS (
  SELECT 'Google Home' as gift, '100m' as event
  UNION ALL SELECT 'Google Hub', '200m'
  UNION ALL SELECT 'Pixel3', '400m'
  UNION ALL SELECT 'Google Mini', '5000m'
)
select person,gift from winners
full outer join gifts on 
winners.event=gifts.event

 

### outer

WITH winners AS (
  SELECT 'John' as person, '100m' as event
  UNION ALL SELECT 'Hiroshi', '200m'
  UNION ALL SELECT 'Sita', '400m'
  UNION ALL SELECT 'Kwame', '50m'
),
gifts AS (
  SELECT 'Google Home' as gift, '100m' as event
  UNION ALL SELECT 'Google Hub', '200m'
  UNION ALL SELECT 'Pixel3', '400m'
  UNION ALL SELECT 'Google Mini', '5000m'
)
select person,gift from winners
right outer join gifts on 
winners.event=gifts.event

#cross join

WITH winners AS (
  SELECT 'John' as person, '100m' as event
  UNION ALL SELECT 'Hiroshi', '200m'
  UNION ALL SELECT 'Sita', '400m'
),
gifts AS (
  SELECT 'Google Home' as gift
  UNION ALL SELECT 'Google Hub'
  UNION ALL SELECT 'Pixel3'
)
SELECT person, gift
FROM winners
CROSS JOIN gifts

cross join -> 가능한 전체 결과 반환

Cross join은 이렇게 줄여서도 사용가능

 

* Replace (prod_name ,'가','나') 

-> PROD_NAME(문자열) 중에 '가'인 문자를 '나'로 바꾸는 것

* CAST(3 AS VARCHAR)

-> 3을 varchar형태로 바꿔주는 함수

 

* SUBSTR(store_name,2,4)

-> store에서 2번째위치에서 4개의 문자를 읽음

 

* CONCAT('A','B)

-> AB -> select와 함께 쓰이며 A,B 문자열을 합해줌

 

* DATE_ADD(기준 날짜, INTERVAL)   ,  ex) date_add(NOW(), INTERVAL 1 MONTH)

-> '기준 날짜' 기준으로 더하고 빼기     -> 지금시간기준으로 한달 더하기

 

 

Alter (행 추가) 

ex)->

alter table 

`emart-dt-dev-ds.a_sku_optim.XYZ_SKU_INFO_robin` 

add column goldzone int

Delete (행 삭제)

ex) -> delete from `emart-dt-dev-ds.a_sku_optim.XYZ_SKU_INFO_robin (테이블명)`

where WEEK_CNT(컬럼명)='robin'  (value명)

alter (열 추가)

ex) -> alter table `emart-dt-dev-ds.a_sku_optim.XYZ_SKU_INFO_robin` add column goldzone int

 

 

 

 

 

 

반응형

'BigQuery' 카테고리의 다른 글

AWS - RDBMS 생성 기초  (0) 2021.04.19
Azure Steaming Analytics  (0) 2020.08.25
R을 통한 기계학습 모델 생성 + 배포  (0) 2020.04.07
파이썬을 통한 머신러닝 모델 배포  (0) 2020.04.06
반응형