최적화된 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, LEFTRIGHT 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,[시간대])
    • 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_modeFULL_INPUT으로 보고합니다.
  • 입력 단계에 윈도우 함수가 있는 쿼리의 입력 단계는 BI Engine에 의해 가속화되지만 BI Engine 윈도우 함수 제한사항 섹션에 설명된 제한사항이 적용되지 않을 수 없습니다. 이 경우 입력 스테이지나 전체 쿼리는 BI Engine에서 실행됩니다. 이 경우 INFORMATION_SCHEMA.JOBS 뷰에서 bi_engine_statistics.acceleration_modeFULL_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 기능은 지원되지 않지만 다음의 해결 방법을 사용할 수 있습니다.

  1. BigQuery에서 쿼리를 작성합니다.
  2. 쿼리 결과를 테이블에 저장합니다.
  3. 쿼리를 예약하여 테이블을 정기적으로 업데이트합니다. 1분마다 새로고침을 하면 BI Engine 캐시가 더 자주 무효화되므로 1시간마다 또는 매일 새로고침을 하는 것이 가장 적합합니다.
  4. 성능이 중요한 쿼리에서 이 테이블을 참조하세요.