Ch17 Types of Functions

Page content

I. 구글 클라우드 설정

본격적인 빅쿼리 실습에 앞서서, Python과 연동하는 예제를 준비하였다. 빅쿼리 시작에 앞서서 선행적으로 클라우드 사용을 해야 한다.

  1. 만약 GCP 프로젝트가 없다면, 계정을 연동한다. Go to Cloud Resource Manager
  2. 그리고, 비용결제를 위한 카드를 등록한다. Enable billing
  3. 마지막으로 BigQuery API를 사용해야 하기 때문에 빅쿼리 API 사용허가를 내준다.Enable BigQuery

위 API를 이용하지 않으면 Python 또는 R과 연동해서 사용할 수는 없다. 자주 쓰는것이 아니라면 비용은 거의 발생하지 않으니 염려하지 않아도 된다. 비용관리에 대한 자세한 내용은 BigQuery 권장사항: 비용 관리에서 확인하기를 바란다.

II. 사용자 계정 인증

구글 코랩을 사용해서 인증 절차를 밟도록 한다. 아래 소스코드는 변경시키지 않는다. 아래 절차대로 진행하면 된다. Gmail 인증 절차와 비슷하다.

from google.colab import auth
auth.authenticate_user()
print('Authenticated')
Authenticated

III. Types of Functions

  • 빅쿼리에는 매우 유용한 function이 존재한다. 간단하게 확인해보자.

(1) Scalar

  • Scalar는 하나 이상의 입력 변수에 대해 연산을 수행하고, 단일 값을 반환한다.
  • Scalar함수는 반환 데이터 유형이 허용되는 모든 곳에서 사용이 가능하다.
  • Round(3.14)의 경우 float64 형태의 3을 반환한다. 즉, 이런 경우, float64를 지원되는 모든 곳에서는 Rount()함수 사용이 가능하다는 뜻이다.
  • SUBSTR("hello", 1, 2)"he"를 반환하는데, 3개의 입력 파라미터를 사용하는 스칼라 함수의 예다.

(2) Aggregate

  • 값 집합에 대한 계산을 수행하고 단일 값을 반환하는 함수를 의미한다.
  • 집합 함수는 행 그룹에 걸쳐 계산을 수행하기 위해 GROUP BY와 함께 종종 사용된다.
  • 예를 들어, MAX(tripduration)는 트립기간 컬럼 내에서 최대값을 계산한다. 기타 집계함수로는 sum(), count(), avg() 등이 있다.

(3) Analytic

  • 분석 함수는 값 집합에서 작동하지만 집합의 각 값에 대한 출력을 반환한다.
  • 윈도우 프레임(=A window frame)을 사용하여 분석 기능이 적용되는 행 집합을 지정한다.
  • row_number(), rank(), etc 등이 대표적인 Analytic 함수들이다.

(4) Table Valued

  • Table Valued는 결과 집합을 반환하고 따라서 FROM 절에서 사용할 수 있는 함수이다.
  • Array에서 UNNEST를 호출 할 수 있고, 호출된 UNNEST에서 선택할 수 있다.

(5) User Defined

  • 기본 제공되지 않지만 사용자가 구현을 지정하는 기능. 사용자 정의 함수는 SQL(또는 JavaScript)로 작성될 수 있으며, 앞서 언급한 유형 중 하나를 반환할 수 있다.
  • 예를 들면 다음과 같이 작성이 가능하다.
CREATE TEMP FUNCTION lastElement(arr ANY TYPE) 
  AS (arr[ORDINAL(ARRAY_LENGTH(arr))]);

IV. 결론

  • 빅쿼리의 Functions에 관한 기본적인 이론에 대해 익혔다.
  • 본장에서 실제 Numeric Types를 가지고 활용하는 방법에 대해 익히도록 한다.

V. Reference

Lakshmanan, V., & Tigani, J. (2020). Google BigQuery: the definitive guide: data warehousing, analytics, and machine learning at scale. Beijing: OReilly.