Legacy SQL 기능 가용성

이 문서에서는 평가 기간 동안의 사용량을 기반으로 하며 2026년 6월 1일 이후에 적용되는 BigQuery 기존 SQL 사용 가능 여부에 대한 향후 제한사항을 설명합니다. 이러한 변경사항은 BigQuery가 기존 SQL에서 BigQuery에 권장되는 ANSI 호환 언어인 GoogleSQL로 전환하는 과정의 일환입니다.

GoogleSQL로 마이그레이션하면 기존 SQL에 비해 다음과 같은 이점이 있습니다.

기능 사용 가능 여부 작동 방식

BigQuery는 평가 기간 동안 이전 SQL 기능의 사용을 모니터링합니다. 2025년 11월 1일부터 2026년 6월 1일 사이에 기존 SQL을 사용하지 않는 조직과 프로젝트의 경우 평가 기간이 종료된 후 기존 SQL을 사용할 수 없게 됩니다. 평가 기간에 기존 SQL을 사용하는 조직과 프로젝트의 경우 사용하는 특정 기존 SQL 기능 집합을 사용하여 쿼리를 계속 실행할 수 있습니다.

기능 사용량은 조직 수준에서 집계됩니다. 조직 내 프로젝트에서 기능을 사용하는 경우 해당 기능은 조직의 다른 모든 프로젝트에서 계속 사용할 수 있습니다. 조직과 연결되지 않은 프로젝트의 경우 기능 제공 여부가 프로젝트 수준에서 관리됩니다.

Legacy SQL 기능 집합

Legacy SQL 기능은 기본 언어 기능, 확장 언어 기능, 함수 그룹의 세 가지 기능 집합으로 구성됩니다. 다음 섹션에서는 각 세트의 기능을 자세히 설명합니다.

기본 언어 기능

이러한 기능은 기존 SQL의 핵심입니다. 이 전체 기능 집합은 평가 기간 동안 하나 이상의 기존 SQL 쿼리를 실행하는 모든 조직 또는 독립형 프로젝트에서 사용할 수 있습니다.

카테고리 기능
쿼리 구문
  • SELECT
  • FROM
  • JOIN
  • WHERE
  • GROUP BY
  • HAVING
  • ORDER BY
  • LIMIT
표현식 로직 리터럴:
  • TRUE
  • FALSE
  • NULL

논리 연산자:
  • AND
  • OR
  • NOT

비교 함수:
  • =
  • !=
  • <>
  • <
  • <=
  • >
  • >=
  • IN
  • IS NULL
  • IS NOT NULL
  • IS_EXPLICITLY_DEFINED
  • IS_INF
  • IS_NAN
  • ... BETWEEN ... AND ...

제어 흐름 문:
  • IF
  • IFNULL
  • CASE WHEN … THEN …
기본 작업 산술 연산자:
  • +
  • -
  • *
  • /
  • %

기본 집계 함수:
  • AVG
  • COUNT
  • FIRST
  • LAST
  • MAX
  • MIN
  • NTH
  • SUM
데이터 요소 기본 데이터 유형:
  • BYTES
  • BOOLEAN
  • FLOAT
  • INTEGER
  • STRING
  • TIMESTAMP

구조화되고 부분적으로 지원되는 데이터 유형:
  • 정확한 숫자: NUMERIC, BIGNUMERIC
  • 시민 시간:DATE, TIME, DATETIME
  • 구조화된 필드: 중첩 필드, 반복 필드

변환 함수:
  • CAST(expr AS type)
  • BOOLEAN
  • BYTES
  • FLOAT
  • INTEGER
  • STRING

강제 변환: 모든 자동 데이터 유형 강제 변환이 포함됩니다.

확장된 언어 기능

이 카테고리에는 기본 집합을 벗어나는 특정 legacy SQL 기능이 포함됩니다. 기본 기능 또는 함수 그룹과 달리 이 카테고리의 각 기능은 개별적으로 추적됩니다. 기능을 계속 사용하려면 평가 기간 동안 각 기능을 명시적으로 사용해야 합니다.

카테고리 기능
확장 기능

함수 그룹화

내장 함수는 관련 카테고리로 정리되어 있습니다. 평가 기간에 그룹화 내에서 단일 함수를 사용하면 해당 전체 그룹화의 모든 함수를 사용할 수 있습니다.

함수 그룹화 함수
고급 윈도우 함수
  • CUME_DIST
  • DENSE_RANK
  • FIRST_VALUE
  • LAG
  • LAST_VALUE
  • LEAD
  • NTH_VALUE
  • NTILE
  • PERCENT_RANK
  • PERCENTILE_CONT
  • PERCENTILE_DISC
  • RANK
  • RATIO_TO_REPORT
  • ROW_NUMBER
통계 집계 함수
  • CORR
  • COVAR_POP
  • COVAR_SAMP
  • STDDEV
  • STDDEV_POP
  • STDDEV_SAMP
  • VARIANCE
  • VAR_POP
  • VAR_SAMP
반복 필드를 반환하는 집계 함수
  • NEST
  • QUANTILES
  • UNIQUE
비트 연산이 포함된 집계 함수
  • BIT_AND
  • BIT_OR
  • BIT_XOR
연결을 사용한 집계 함수
  • GROUP_CONCAT
  • GROUP_CONCAT_UNQUOTED
정렬이 있는 집계 함수
  • COUNT([DISTINCT])
  • EXACT_COUNT_DISTINCT
  • TOP ... COUNT(*)
기본 윈도우 함수
  • AVG
  • COUNT(*)
  • COUNT([DISTINCT])
  • MAX
  • MIN
  • STDDEV
  • SUM
비트 함수
  • &
  • |
  • ^
  • <<
  • >>
  • ~
  • BIT_COUNT
조건식
  • COALESCE
  • EVERY
  • GREATEST
  • LEAST
  • NVL
  • SOME
변환 함수
  • FROM_BASE64
  • HEX_STRING
  • TO_BASE64
현재 시간 함수
  • NOW
  • CURRENT_DATE
  • CURRENT_TIME
  • CURRENT_TIMESTAMP
현재 사용자 함수
  • CURRENT_USER
날짜 및 시간 함수
  • DATE
  • DATE_ADD
  • DATEDIFF
  • TIME
  • TIMESTAMP
함수 RAND
  • RAND
반복 필드를 반환하는 함수
  • POSITION
  • SPLIT
해싱 함수
  • HASH
  • SHA1
  • FARM_FINGERPRINT
IP 함수
  • FORMAT_IP
  • FORMAT_PACKED_IP
  • PARSE_IP
  • PARSE_PACKED_IP
JSON 함수
  • JSON_EXTRACT
  • JSON_EXTRACT_SCALAR
수학 함수
  • ABS
  • ACOS
  • ASIN
  • ATAN
  • ATAN2
  • CEIL
  • COS
  • DEGREES
  • EXP
  • FLOOR
  • LN
  • LOG
  • LOG10
  • LOG2
  • PI
  • POW
  • RADIANS
  • ROUND
  • SIN
  • SQRT
  • TAN
수학 쌍곡선 함수
  • ACOSH
  • ASINH
  • ATANH
  • COSH
  • SINH
  • TANH
TIMESTAMP 함수의 일부
  • DAY
  • DAYOFWEEK
  • DAYOFYEAR
  • HOUR
  • MINUTE
  • MONTH
  • QUARTER
  • SECOND
  • WEEK
  • YEAR
정규 표현식 함수
  • REGEXP_MATCH
  • REGEXP_EXTRACT
  • REGEXP_REPLACE
문자열 함수
  • CONTAINS
  • CONCAT
  • INSTR
  • LEFT
  • LENGTH
  • LOWER
  • LPAD
  • LTRIM
  • REPLACE
  • RIGHT
  • RPAD
  • RTRIM
  • SUBSTR
  • UPPER
URL 함수
  • HOST
  • DOMAIN
  • TLD
UNIX 타임스탬프 함수
  • FORMAT_UTC_USEC
  • MSEC_TO_TIMESTAMP
  • PARSE_UTC_USEC
  • SEC_TO_TIMESTAMP
  • STRFTIME_UTC_USEC
  • TIMESTAMP_TO_SEC
  • TIMESTAMP_TO_MSEC
  • TIMESTAMP_TO_USEC
  • USEC_TO_TIMESTAMP
  • UTC_USEC_TO_DAY
  • UTC_USEC_TO_HOUR
  • UTC_USEC_TO_MONTH
  • UTC_USEC_TO_WEEK
  • UTC_USEC_TO_YEAR

기능 사용 가능 여부의 예

다음 예시에서는 기능 사용 가능 여부가 작동하는 방식을 보여줍니다.

예: 기본 언어 기능 액세스

평가 기간 동안 프로젝트에서 기존 SQL 쿼리를 실행합니다. T 테이블에 INTEGER 유형의 X 열이 있다고 가정합니다.

#legacySQL
SELECT X FROM T

이렇게 사용하면 조직 내 모든 프로젝트에서 기본 언어 기능 세트의 기능을 사용하는 쿼리를 실행할 수 있습니다. 예를 들어 다음 쿼리는 계속 작동합니다.

#legacySQL
SELECT X FROM T WHERE X > 10

예: 함수 그룹화 사용

프로젝트에서 특정 함수 그룹의 함수 하나를 사용합니다. T 테이블에 FLOAT 유형의 X 열이 있다고 가정합니다.

#legacySQL
SELECT SIN(X) FROM T

SIN() 함수를 사용하면 전체 수학 함수 그룹을 사용할 수 있습니다. 따라서 조직 내의 모든 프로젝트는 COS()와 같은 그룹의 다른 함수를 사용할 수 있습니다.

#legacySQL
SELECT COS(X) FROM T

반대로 조직의 어떤 프로젝트도 통계 그룹화용 집계 함수의 함수를 사용하지 않는 경우 평가 기간이 지난 후 다음 쿼리가 실패합니다.

#legacySQL
SELECT STDDEV(X) FROM T

예: 여러 테이블에 걸친 기능 보존

테이블 X에 열 A (INTEGER)이 있고 테이블 Y에 열 B(FLOAT)이 있다고 가정해 보겠습니다. 프로젝트에서 평가 기간 동안 다음 쿼리를 실행합니다.

#legacySQL
SELECT SIN(A) FROM X

조직은 평가 기간이 끝난 후 다음 쿼리를 실행할 수 있습니다. 첫 번째 쿼리에서 수학 함수 기능이 유지되었기 때문에 쿼리가 작동합니다. INTEGERFLOAT 모두 기본 언어 기능의 일부이므로 보존은 사용된 특정 테이블, 열 이름 또는 데이터 유형과 무관합니다.

#legacySQL
SELECT COS(B) FROM Y

예: 복잡한 쿼리

T 테이블에 STRING 유형의 X 열이 있다고 가정합니다. 평가 기간 동안 프로젝트에서 다음 쿼리를 실행합니다.

#legacySQL
SELECT value, AVG(FLOAT(value)) OVER (ORDER BY value) AS avg
 FROM (
  SELECT LENGTH(SPLIT(X, ',')) AS value
    FROM T
)

이 쿼리는 기본 언어 기능과 세 가지 함수 그룹(기본 윈도우 함수, 문자열 함수, 반복 값을 반환하는 함수)의 기능을 사용합니다. 조직 내의 모든 프로젝트는 이러한 기능을 유지합니다. 따라서 동일하게 유지된 기능 집합에서 다른 함수 조합을 사용하는 새 쿼리는 성공합니다.

#legacySQL
SELECT value, COUNT(STRING(value)) OVER (ORDER BY value) as count
 FROM (
  SELECT CONCAT(SPLIT(X, ','), '123') AS value
    FROM T
)

자주 묻는 질문(FAQ)

신규 조직에서 legacy SQL을 사용할 수 있나요?

평가 기간이 지나면 신규 조직이나 프로젝트에서는 기존 SQL을 사용할 수 없습니다. 특별한 경우 예외를 요청할 수 있습니다. Google Forms에 액세스할 수 없는 경우 대신 bq-legacysql-support@google.com으로 조직 ID, 현재 사용 수준, 최근 사용 날짜, 이전 문제, GoogleSQL로 전환하는 예상 일정과 함께 이메일을 보내세요.

기존 legacy SQL 쿼리가 작동하지 않나요?

기존 쿼리는 평가 기간 동안 조직의 하나 이상의 프로젝트에서 사용한 모든 기존 SQL 기능을 사용하는 한 계속 작동합니다. 이 기간에 사용되지 않은 기능을 사용하는 경우 쿼리가 실패할 수 있으므로 모든 중요한 쿼리가 실행되는지 확인하는 것이 좋습니다.

이전 SQL을 사용하는 기존 조직에서 이전 SQL을 사용하는 새 프로젝트를 만들 수 있나요?

예. 평가 기간 동안 조직의 프로젝트가 액세스한 모든 기능은 조직의 모든 프로젝트(신규 및 기존)에서 계속 사용할 수 있습니다.

조직에서 사용하는 기존 SQL 기능을 확인할 수 있는 도구가 있나요?

특정 기능 사용을 감사하는 도구는 없습니다. 프로젝트별 기존 SQL 쿼리 작업 수에 설명된 대로 INFORMATION_SCHEMA.JOBS 뷰를 쿼리하여 기존 SQL 사용량을 추적할 수 있습니다. Cloud Logging에서 쿼리 로그를 검토하여 특정 구문 사용을 확인할 수도 있습니다.

꼭 GoogleSQL로 마이그레이션해야 하나요?

이전은 필수는 아니지만 권장됩니다. GoogleSQL은 최신식의 모든 기능을 갖춘 권장 언어입니다.

평가 기간 동안 거의 사용되지 않는 기존 SQL 쿼리가 실행되지 않으면 어떻게 되나요?

쿼리가 계속 작동하도록 하려면 평가 기간에 한 번 실행하세요. 그때 실행할 수 없는 경우 예외를 요청할 수 있습니다. Google Forms에 액세스할 수 없는 경우 대신 bq-legacysql-support@google.com으로 조직 ID, 현재 사용 수준, 최근 사용 날짜, 이전 문제, GoogleSQL로 전환하는 예상 일정과 함께 이메일을 보내세요.

다음 단계