기타

Bigquery 에서 반복문 사용법

kkam99 2024. 10. 8. 16:43
반응형

Bigquery에서 반복문을 활용해 반복 작업을 효율적으로 수행할 수 있다

종류와 관계없이 일반적인 언어의 반복문 제어와 비슷하므로 쉽게 적응해서 사용 가능하다.

 

지원하는 Loop 종류

  • LOOP
  • REPEAT
  • WHILE
  • FOR .. IN

 

LOOP

 

기본 문법

LOOP
	/* SQL */
END LOOP;

 

LOOP와 END LOOP; 내에 반복이 필요한 SQL구문을 써준다

조건을 만족할 때까지 반복 수행할 때 유용

 

활용 예시

DECLARE x INT64 DEFAULT 0;
LOOP
  SET x = x + 1;
  IF x >= 10 THEN
    LEAVE;
  END IF;
END LOOP;
SELECT x;

DECLARE를 활용해 LOOP 내에서 사용할 변수를 선언한 후 LOOP 실행

 

Bigquery에서 LEAVE는 BREAK와 같은 기능을 수행하므로 둘 중 아무거나 써도 무방하다.

참고로 흐름제어는 BREAK(LEAVE),  CONTINUE(ITERATE)로 할 수 있다.

 

REPEAT

 

기본 문법

REPEAT
  sql_statement_list
  UNTIL boolean_condition
END REPEAT;

REPEAT은 UNTIL과 함께 사용하며 UNTIL에 나와있는 조건식이 TRUE가 되기 전까지 반복된다.

WHILE 문과 유사

 

활용 예시

DECLARE x INT64 DEFAULT 0;

REPEAT
  SET x = x + 1;
  SELECT x;
  UNTIL x >= 3
END REPEAT;

 

WHILE

기본 문법

WHILE boolean_expression DO
  sql_statement_list
END WHILE;

일반적인 WHILE문 사용법과 동일하다

 

다만 주의사항으로 

BEGIN/END, IF/ELSE/END IF, WHILE/END WHILE과 같은 블록과 조건문의 최대 중첩 수준은 50 이다.

 

FOR .. IN

기본 문법

FOR loop_variable_name IN (table_expression)
DO
  sql_expression_list
END FOR;

FOR .. IN 은 IN 뒤에 나오는 table_statement 에 있는 데이터를 대상으로 반복을 할 수 있는 구문이다.

여기서 주의해야할 점은 loop_variable_name 이 하나의 struct라는 점이다.

table_statement에서 컬럼 하나만 가져온다고 해도 loop_variable_name .해당컬럼명 으로 struct에 접근하듯이 사용해야 한다.

 

활용 예시

FOR record IN
  (SELECT word, word_count
   FROM bigquery-public-data.samples.shakespeare
   LIMIT 5)
DO
  SELECT record.word, record.word_count;
END FOR;

여기서 word, word_count 컬럼이 record 라는 struct안에 들어있는 형태로 반환되고, record.word, record.word_count 등으로 접근하는 것을 볼 수 있다.

반응형