최적화된 SQL 함수 및 연산자
BigQuery BI Engine은 커스텀 쿼리 또는 뷰를 사용하여 BigQuery에 비즈니스 인텔리전스(BI) 도구를 연결할 때 다음 GoogleSQL 함수 및 연산자를 최적화합니다. 이 목록에 없는 함수와 연산자를 사용하는 쿼리는 더 느리게 실행될 수 있습니다.
지원되지 않는 SQL 기능 목록은 지원되지 않는 기능 섹션을 참조하세요.
Looker Studio에서 커스텀 쿼리 및 뷰 사용에 대한 자세한 정보는 BigQuery에 연결을 참조하세요. 다른 BI 도구를 BigQuery에 연결하는 방법에 대한 자세한 내용은 BigQuery BI Engine SQL 인터페이스 개요를 참조하세요.
전체 GoogleSQL 연산자 및 함수 목록은 GoogleSQL 함수 및 연산자를 참조하세요.
최적화된 연산자
ORDER BY
LIMIT
개수 [OFFSET
skip_rows]UNION ALL
HAVING
GROUP BY
WHERE
INNER
,LEFT
및RIGHT JOIN
(더 작은 크기 한도)
최적화된 함수
비교
=
<>
<
<=
>
>=
BETWEEN
IN
LEAST
GREATEST
CASE
COALESCE
IF
ISNULL
IS [NOT] NULL
IS [NOT] TRUE
IS [NOT] FALSE
IFNULL
NULLIF
논리
NOT
AND
OR
수학
-
(단항 뺄셈)+
-
(이항 뺄셈)*
/
IEEE_DIVIDE
DIV
MOD
ROUND
TRUNC
FLOOR
CEIL
ABS
SIGN
SQRT
EXP
POW
IS_INF
IS_NAN
SIN
SINH
ASIN
ASINH
COS
COSH
ACOS
ACOSH
TAN
TANH
ATAN
ATAN2
ATANH
LOG
LN
LOG10
비트
BIT_COUNT
~
(비트NOT
)&
(비트AND
)|
(비트OR
)^
(비트XOR
)<<
(비트 왼쪽 시프트)>>
(비트 오른쪽 시프트)
문자열 및 바이트
ASCII
BYTE_LENGTH
CHAR_LENGTH
CHR
CODE_POINTS_TO_BYTES
CODE_POINTS_TO_STRING
CONCAT
ENDS_WITH
FORMAT
FROM_BASE32
FROM_BASE64
FROM_HEX
INITCAP
INSTR
JSON_EXTRACT_SCALAR
JSON_EXTRACT
LEFT
LENGTH
LOWER
LPAD
LTRIM
NORMALIZE
NORMALIZE_AND_CASEFOLD
REGEXP_CONTAINS
REGEXP_EXTRACT
REGEXP_INSTR
REGEXP_REPLACE
REPEAT
REPLACE
REVERSE
RIGHT
RPAD
RTRIM
SAFE_CONVERT_BYTES_TO_STRING
SOUNDEX
STARTS_WITH
STRING_LIKE
STRPOS
SUBSTR
TO_BASE32
TO_BASE64
TO_HEX
TRANSLATE
TRIM
UNICODE
UPPER
타임스탬프, 날짜 및 시간
- 타임스탬프 함수
TIMESTAMP_MICROS
TIMESTAMP_MILLIS
TIMESTAMP_SECONDS
TIMESTAMP
STRING
(timestamp_expression,[timestamp_expression])UNIX_SECONDS
UNIX_MILLIS
UNIX_MICROS
FORMAT_TIMESTAMP
PARSE_TIMESTAMP
TIMESTAMP_ADD
TIMESTAMP_SUB
TIMESTAMP_DIFF
EXTRACT
DATE
TIME
DATETIME
TIMESTAMP_TRUNC
- 날짜 함수
DATE
(년, 월, 일)DATE_FROM_UNIX_DATE
UNIX_DATE
FORMAT_DATE
PARSE_DATE
DATE_ADD
DATE_SUB
DATE_DIFF
EXTRACT
(시작일:DATE
)DATE_TRUNC
CURRENT_TIMESTAMP
- 시간 함수
EXTRACT
FORMAT_TIME
PARSE_TIME
TIME_ADD
TIME_SUB
TIME_DIFF
TIME_TRUNC
CURRENT_TIME
- 날짜/시간 함수
DATETIME
EXTRACT
FORMAT_DATETIME
PARSE_DATETIME
DATETIME_ADD
DATETIME_SUB
DATETIME_DIFF
DATETIME_TRUNC
CURRENT_DATETIME
해싱
FARM_FINGERPRINT
MD5
SHA1
SHA256
SHA512
네트워킹
NET_IP_IN_NET
NET_MAKE_NET
NET.HOST
NET.REG_DOMAIN
NET.PUBLIC_SUFFIX
NET.IP_FROM_STRING
NET.IP_TO_STRING
NET.IP_NET_MASK
NET.IP_TRUNC
NET.IPV4_FROM_INT64
NET.IPV4_TO_INT64
지역
- 생성자
ST_GEOGPOINT
ST_MAKELINE
ST_MAKEPOLYGON
ST_MAKEPOLYGONORIENTED
- 파서
ST_GEOGFROMGEOJSON
ST_GEOGFROMTEXT
ST_GEOGFROMWKB
ST_GEOGFROMWKB
ST_GEOGPOINTFROMGEOHASH
- 포맷터
ST_ASBINARY
ST_ASGEOJSON
ST_ASKML
ST_GEOHASH
- 변환
ST_BOUNDARY
ST_CENTROID
ST_CLOSESTPOINT
ST_CONVEXHULL
ST_DIFFERENCE
ST_EXTERIORRING
ST_INTERSECTION
ST_SIMPLIFY
ST_SNAPTOGRID
- 접근자
ST_DIMENSION
ST_ENDPOINT
ST_GEOMETRYTYPE
ST_ISCOLLECTION
ST_ISEMPTY
ST_NPOINTS
ST_NUMGEOMETRIES
ST_NUMPOINTS
ST_POINTN
ST_STARTPOINT
ST_X
ST_Y
- 조건자
ST_CONTAINS
ST_COVEREDBY
ST_COVERS
ST_DISJOINT
ST_DWITHIN
ST_EQUALS
ST_INTERSECTS
ST_INTERSECTSBOX
ST_TOUCHES
ST_WITHIN
- 조치
ST_ANGLE
ST_AREA
ST_AZIMUTH
ST_DISTANCE
ST_LENGTH
ST_MAXDISTANCE
ST_PERIMETER
SAFE 함수
- 수학
MOD
ROUND
ABS
SQRT
POW
SINH
ASIN
COSH
ACOS
ACOSH
ATANH
LN
LOG
LOG10
FLOOR
CEIL
DIV
EXP
ROUND
SAFE_NEGATE
SAFE_ADD
SAFE_SUBTRACT
SAFE_MULTIPLY
SAFE_DIVIDE
- 문자열
REGEXP_CONTAINS
REGEXP_EXTRACT
REGEXP_REPLACE
FORMAT
SUBSTR
ASCII
SAFE_CONVERT_BYTES_TO_STRING
INSTR
LEFT
RIGHT
TRANSLATE
INITCAP
- 타임스탬프, 날짜, 시간
DATE_FROM_UNIX_DATE
PARSE_DATE
PARSE_DATETIME
PARSE_TIME
PARSE_TIMESTAMP
FORMAT_TIMESTAMP
TIMESTAMP_SECONDS
TIMESTAMP_MILLIS
TIMESTAMP_MICROS
- 네트워킹
NET.SAFE_IP_FROM_STRING
- 기타
SAFE_CAST
집계 함수
SUM
COUNT
COUNTIF
ANY_VALUE
AVG
MAX
MIN
HLL_COUNT.INIT
HLL_COUNT.MERGE
HLL_COUNT.MERGE_PARTIAL
GROUP BY
절BIT_AND
BIT_OR
BIT_XOR
LOGICAL_AND
LOGICAL_OR
DISJUNCTION_AGG
STRING_AGG
CORR
COVAR_POP
COVAR_SAMP
STDDEV_POP
STDDEV_SAMP
STDDEV
VAR_POP
VAR_SAMP
VARIANCE
APPROX_COUNT_DISTINCT
윈도우 함수
분석 함수라고도 하는 윈도우 함수에는 BigQuery BI Engine에 의해 가속화될 때 다음과 같은 제한사항이 적용됩니다.
- 입력 단계에 윈도우 함수가 없으면 BigQuery BI Engine에서 윈도우 함수를 가속화합니다. 이 경우
INFORMATION_SCHEMA.JOBS
뷰에서bi_engine_statistics
.acceleration_mode
를FULL_INPUT
으로 보고합니다. - 입력 단계에 윈도우 함수가 있는 쿼리의 입력 단계는 BI Engine에 의해 가속화되지만 BI Engine 윈도우 함수 제한사항 섹션에 설명된 제한사항이 적용되지 않을 수 없습니다.
이 경우 입력 스테이지나 전체 쿼리는 BI Engine에서 실행됩니다. 이 경우
INFORMATION_SCHEMA.JOBS
뷰에서bi_engine_statistics
.acceleration_mode
를FULL_INPUT
또는FULL_QUERY
로 보고합니다.
BiEngineStatistics
필드에 대한 자세한 내용은 작업 참조를 확인하세요.
BI Engine 윈도우 함수 제한사항
윈도우 함수가 있는 쿼리는 다음 조건이 모두 충족되는 경우에만 BI Engine에서 실행됩니다.
- 쿼리는 테이블 하나만 스캔합니다.
- 이 테이블은 파티션을 나누지 않습니다.
- 테이블에는 행이 5백만 개 미만 있습니다.
- 쿼리에는
JOIN
연산자가 없습니다. - 스캔된 테이블 크기와 윈도우 함수 연산자 수를 곱한 값은 300MB를 초과하지 않습니다.
OVER
절이 동일하고 직접 입력이 동일한 윈도우 함수 2개에서 같은 윈도우 함수 연산자를 공유할 수 있습니다. 예를 들면 다음과 같습니다.SELECT ROW_NUMBER() OVER (ORDER BY x), SUM(x) OVER (ORDER BY x) FROM my_table
쿼리에는 윈도우 함수 연산자 하나만 있습니다.- 두 함수의
OVER
절이 동일하지 않으므로 쿼리SELECT ROW_NUMBER() OVER (ORDER BY x), SUM(x) OVER (PARTITION BY y ORDER BY x) FROM my_table
에는 윈도우 함수 연산자가 두 개입니다. SELECT ROW_NUMBER() OVER (ORDER BY x) FROM (SELECT SUM(x) OVER (ORDER BY x) AS x FROM my_table)
쿼리는 윈도우 함수 연산자가 2개 있는데,OVER
절이 동일해 보이더라도 두 함수는 다른 직업 입력을 가지기 때문입니다.
- 참조된 윈도우 함수는 다음과 같은 지원되는 함수 목록에 있습니다.
지원되는 윈도우 함수 목록:
ANY_VALUE
AVG
BIT_AND
BIT_OR
BIT_XOR
CORR
COUNT
COUNTIF
COVAR_POP
COVAR_SAMP
CUME_DIST
DENSE_RANK
FIRST_VALUE
LAG
LAST_VALUE
LEAD
LOGICAL_AND
LOGICAL_OR
MAX
MIN
NTH_VALUE
NTILE
PERCENT_RANK
PERCENTILE_CONT
PERCENTILE_DISC
RANK
ROW_NUMBER
ST_CLUSTERDBSCAN
STDDEV_POP
STDDEV_SAMP
STDDEV
STRING_AGG
SUM
VAR_POP
VAR_SAMP
VARIANCE
윈도우 함수가 지원되지 않는 경우 다음과 같은 오류가 표시될 수 있습니다.
분석 함수가 다른 연산자와 호환되지 않거나 입력이 너무 큽니다.
기타 함수
CAST
HLL_COUNT.EXTRACT
STRUCT
필드의 점 연산자ARRAY_LENGTH
제한사항
BI Engine SQL 함수 및 연산자 지원에는 다음과 같은 제한사항이 적용됩니다.
BI Engine에서 지원되지 않는 기능
BI Engine 가속화는 다음 기능에 사용할 수 없습니다.
- 자바스크립트 UDF
- 외부 테이블
- 네이티브 JSON 데이터 쿼리 - 오류 메시지: JSON 네이티브 유형은 지원되지 않음
- 영구 BigQuery 테이블에 결과 쓰기
- BigQuery 변경 데이터 캡처를 통한 업서트가 포함된 테이블
- 트랜잭션
- 1GB가 넘는 데이터를 반환하는 쿼리. 지연 시간에 민감한 애플리케이션의 경우 응답 크기가 1MB 미만인 것이 좋습니다.
제한된 Looker Studio 지원
다음 기능은 Looker Studio에서 지원이 제한됩니다.
- SQL UDF
ARRAY
열 쿼리
지원되지 않는 기능의 해결 방법
BigQuery BI Engine에서 일부 SQL 기능은 지원되지 않지만 다음의 해결 방법을 사용할 수 있습니다.
- BigQuery에서 쿼리를 작성합니다.
- 쿼리 결과를 테이블에 저장합니다.
- 쿼리를 예약하여 테이블을 정기적으로 업데이트합니다. 1분마다 새로고침을 하면 BI Engine 캐시가 더 자주 무효화되므로 1시간마다 또는 매일 새로고침을 하는 것이 가장 적합합니다.
- 성능이 중요한 쿼리에서 이 테이블을 참조하세요.