본문 바로가기
CSP (Cloud Service Provider)/GCP

Bigquery UDF 활용

by BTC_최총무 2024. 3. 31.

베하~ 반갑습니다!!

 

인사통의 BTC_김회장, 최총무입니다.

 

 

오늘은 Bigquery UDF를 사용해보겠습니다!

개념부터 간단한 활용문을 작성할테니 함께 진행해보시죠


Bigquery UDF란?

Bigquey UDF(User-Defined Function)란 SQL 표현식이나 JavaScript 코드를 활용하여 간단한 함수를 생성하는것으로

UDF를 통해 함수를 만들어 두게 되면 복잡한 로직을 더욱 간결하게 표현할 수 있고, 코드의 일관성을 유지할 수 있어 빅쿼리 활용에 도움이 됩니다!!

UDF 자체의 저장비용은 없으며, 데이터 처리에 따라 비용이 발생하게 됩니다!!

하지만 저장 비용이 없다고 무분별하게 많이 생성하게 되면 디버깅이나 유지관리에 어려움이 있을 수 있으니 이런점 고려하여 사용이 필요하겠습니다


Bigquery UDF 생성

사용자 정의 함수(UDF) 생성을 위해서는 CREATE FUNCTION문을 활용하여 생성하게 됩니다.

생성과정에서 CREATE TEMP FUNCTION 시 임시 사용자 정의 함수, CREATE FUNCTION 시 영구 사용자 정의 함수가 생성되며, 임시 사용자 정의 함수의 경우 따로 데이터셋에 저장되지 않고 SQL 쿼리 세션에서 사용하며, 영구 사용자 정의 함수의 경우 데이터셋에 정의되어 추후 해당 Function 호출을 통해 사용하게 됩니다.

 

더욱 자세한 내용은 아래 Docs를 참고해주세요~

 

사용자 정의 함수  |  BigQuery  |  Google Cloud

의견 보내기 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. 사용자 정의 함수 사용자 정의 함수(UDF)를 사용하면 SQL 표현식 또는 JavaScript 코드를 사용하여 함

cloud.google.com

 

그러면 함께 간단한 UDF를 생성해볼까요?

가능하면 Bigquery를 열어서 함께 진행해보시면 이해에 도움이 될거에요!!

저는 CREATE OR REPLACE문을 활용해서 영구 사용자 정의 함수를 생성하겠습니다!

물론 미리 dataset은 생성해주셔야겠죠?

CREATE OR REPLACE FUNCTION my_udf.simpleStringParser(input_str STRING)
RETURNS STRING
LANGUAGE js
AS """
  let len = input_str.length;
  if (len < 5) {
    return "Short";
  } else if (len >= 5 && len <= 10) {
    return "Medium";
  } else {
    return "Long";
  }
""";

 

위 코드는 특정 input_str을 받아서 길이에 따라 결과를 반환하는 함수입니다.

js로 작성하였으나 쿼리가 편하시면 CASE WHEN등을 활용해서 SQL로 작성하셔도 됩니다.

이렇게 실행하게되면 아래와 같이 함수가 생성되게 됩니다!!


Bigquery UDF 활용

위 생성된 함수를 사용해보겠습니다.

예시로 Schema 길이가 다른 테스트용 테이블을 생성해보겠습니다.

위 테이블을 대상으로 함수를 호출하여 결과를 도출해보겠습니다!!

실행할 쿼리는 다음과 같습니다!

SELECT schema1, my_udf.simpleStringParser(schema1) AS result
FROM test_dataset.table123;

예시 테이블을 대상으로 생성한 함수를 호출하여 schema1 이라는 컬럼을 읽어들였습니다.

이에따라 함수가 사용되어 result가 나온것을 확인할 수 있었습니다!!

이번에는 아주 간단한 예시였지만 함수를 활용하는 능력에 따라 활용법은 무궁무진할 수 있겠네요


오늘은 Bigquery의 UDF 기능을 활용해 보았습니다.

저는 실제 운영환경에서 타입:값 형태로 들어오는 데이터를 분리하는데 사용했습니다!!

 

이렇듯 데이터를 다루는 일을 한다면 무궁무진하게 활용할 수 있겠죠?

오늘도 함께 진행하시느라 고생 많으셨습니다!!

 

그럼 모두 베빠!!

'CSP (Cloud Service Provider) > GCP' 카테고리의 다른 글

Composer PyPI Package  (1) 2024.01.31
IntelliJ로 SSH 세션 접속  (0) 2024.01.18
VPC Service Control  (0) 2024.01.12
Duet AI Bigquery 활용  (1) 2024.01.05
Cloud Build란?  (1) 2024.01.03

댓글