Funções e operadores do SQL otimizados

O BigQuery BI Engine otimiza as seguintes funções e operadores do GoogleSQL ao conectar ferramentas de Business Intelligence (BI) ao BigQuery usando consultas ou visualizações personalizadas. As consultas que usam funções e operadores que não estão nessa lista podem ser executadas lentamente.

Para ver uma lista dos recursos SQL não suportados, consulte a seção Recursos não suportados.

Para mais informações sobre o uso de consultas e visualizações personalizadas no Data Studio, consulte Conecte-se ao BigQuery. Para mais informações sobre como conectar outras ferramentas de BI ao BigQuery, consulte Visão geral da interface SQL do BigQuery BI Engine (visão geral).

Para ver uma lista de todos os operadores e funções do GoogleSQL, consulte Funções e operadores do GoogleSQL.

Operadores otimizados

  • ORDER BY
  • LIMIT count [OFFSET skip_rows]
  • UNION ALL
  • HAVING
  • GROUP BY
  • WHERE
  • INNER, LEFT e RIGHT JOIN (com limites de tamanho menores)

Funções otimizadas

Comparação

  • =
  • <>
  • <
  • <=
  • >
  • >=
  • BETWEEN
  • IN
  • LEAST
  • GREATEST
  • CASE
  • COALESCE
  • IF
  • ISNULL
  • IS [NOT] NULL
  • IS [NOT] TRUE
  • IS [NOT] FALSE
  • IFNULL
  • NULLIF

Lógica

  • NOT
  • AND
  • OR

Matemática

  • - (menos unário)
  • +
  • - (menos binário)
  • *
  • /
  • 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 a bit

  • BIT_COUNT
  • ~ (bit a bit NOT)
  • & (bit a bit AND)
  • | (bit a bit OR)
  • ^ (bit a bit XOR)
  • << (bit a bit deslocado para a esquerda)
  • >> (bit a bit deslocado para a direita)

Strings e bytes

  • 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

Carimbos de data/hora, datas e horas

  • Funções de carimbo de data/hora
    • TIMESTAMP_MICROS
    • TIMESTAMP_MILLIS
    • TIMESTAMP_SECONDS
    • TIMESTAMP
    • STRING(timestamp_expression,[timezone])
    • UNIX_SECONDS
    • UNIX_MILLIS
    • UNIX_MICROS
    • FORMAT_TIMESTAMP
    • PARSE_TIMESTAMP
    • TIMESTAMP_ADD
    • TIMESTAMP_SUB
    • TIMESTAMP_DIFF
    • EXTRACT
    • DATE
    • TIME
    • DATETIME
    • TIMESTAMP_TRUNC
  • Funções de data
    • DATE(year, month, day)
    • DATE_FROM_UNIX_DATE
    • UNIX_DATE
    • FORMAT_DATE
    • PARSE_DATE
    • DATE_ADD
    • DATE_SUB
    • DATE_DIFF
    • EXTRACT (from DATE)
    • DATE_TRUNC
    • CURRENT_TIMESTAMP
  • Funções de hora
    • EXTRACT
    • FORMAT_TIME
    • PARSE_TIME
    • TIME_ADD
    • TIME_SUB
    • TIME_DIFF
    • TIME_TRUNC
    • CURRENT_TIME
  • Funções de data/hora
    • DATETIME
    • EXTRACT
    • FORMAT_DATETIME
    • PARSE_DATETIME
    • DATETIME_ADD
    • DATETIME_SUB
    • DATETIME_DIFF
    • DATETIME_TRUNC
    • CURRENT_DATETIME

Hash

  • FARM_FINGERPRINT
  • MD5
  • SHA1
  • SHA256
  • SHA512

Rede

  • 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

Geografia

  • Construtores
    • ST_GEOGPOINT
    • ST_MAKELINE
    • ST_MAKEPOLYGON
    • ST_MAKEPOLYGONORIENTED
  • Analisadores
    • ST_GEOGFROMGEOJSON
    • ST_GEOGFROMTEXT
    • ST_GEOGFROMWKB
    • ST_GEOGFROMWKB
    • ST_GEOGPOINTFROMGEOHASH
  • Formatadores
    • ST_ASBINARY
    • ST_ASGEOJSON
    • ST_ASKML
    • ST_GEOHASH
  • Transformações
    • ST_BOUNDARY
    • ST_CENTROID
    • ST_CLOSESTPOINT
    • ST_CONVEXHULL
    • ST_DIFFERENCE
    • ST_EXTERIORRING
    • ST_INTERSECTION
    • ST_SIMPLIFY
    • ST_SNAPTOGRID
  • Acessadores
    • ST_DIMENSION
    • ST_ENDPOINT
    • ST_GEOMETRYTYPE
    • ST_ISCOLLECTION
    • ST_ISEMPTY
    • ST_NPOINTS
    • ST_NUMGEOMETRIES
    • ST_NUMPOINTS
    • ST_POINTN
    • ST_STARTPOINT
    • ST_X
    • ST_Y
  • Predicados
    • ST_CONTAINS
    • ST_COVEREDBY
    • ST_COVERS
    • ST_DISJOINT
    • ST_DWITHIN
    • ST_EQUALS
    • ST_INTERSECTS
    • ST_INTERSECTSBOX
    • ST_TOUCHES
    • ST_WITHIN
  • Medidas
    • ST_ANGLE
    • ST_AREA
    • ST_AZIMUTH
    • ST_DISTANCE
    • ST_LENGTH
    • ST_MAXDISTANCE
    • ST_PERIMETER

Funções SAFE

  • Matemática
    • 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
  • Strings
    • REGEXP_CONTAINS
    • REGEXP_EXTRACT
    • REGEXP_REPLACE
    • FORMAT
    • SUBSTR
    • ASCII
    • SAFE_CONVERT_BYTES_TO_STRING
    • INSTR
    • LEFT
    • RIGHT
    • TRANSLATE
    • INITCAP
  • Carimbos de data/hora, datas e horas
    • DATE_FROM_UNIX_DATE
    • PARSE_DATE
    • PARSE_DATETIME
    • PARSE_TIME
    • PARSE_TIMESTAMP
    • FORMAT_TIMESTAMP
    • TIMESTAMP_SECONDS
    • TIMESTAMP_MILLIS
    • TIMESTAMP_MICROS
  • Rede
    • NET.SAFE_IP_FROM_STRING
  • Outro
    • SAFE_CAST

Funções de agregação

  • SUM
  • COUNT
  • COUNTIF
  • ANY_VALUE
  • AVG
  • MAX
  • MIN
  • HLL_COUNT.INIT
  • HLL_COUNT.MERGE
  • HLL_COUNT.MERGE_PARTIAL
  • A cláusula 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

Funções de janela

Funções de janela, também conhecidas como funções analíticas, têm as seguintes limitações quando aceleradas pelo BigQuery BI Engine:

  • As etapas de entrada são aceleradas pelo BigQuery BI Engine se não tiverem funções de janela. Neste caso, INFORMATION_SCHEMA.JOBS acessa relatórios bi_engine_statistics.acceleration_mode como FULL_INPUT.
  • Os estágios de entrada das consultas com funções de janela nos estágios de entrada são aceleradas pelo BI Engine, mas não têm as limitações descritas na seção de limitações de funções da janela do BI Engine. Nesse caso, as etapas de entrada ou a consulta completa são executadas no BI Engine. Neste caso, INFORMATION_SCHEMA.JOBS acessa relatórios bi_engine_statistics.acceleration_mode como FULL_INPUT ou FULL_QUERY.

Para mais informações sobre o campo BiEngineStatistics, consulte a referência do job.

Limitações das funções da janela do BI Engine

Consultas com funções de janela são executadas no BI Engine somente se todas as condições a seguir forem atendidas:

  • A consulta verifica exatamente uma tabela.
    • A tabela não é particionada.
    • A tabela tem menos de 5 milhões de linhas.
  • A consulta não tem nenhum operador JOIN.
  • O tamanho da tabela verificada vezes o número de operadores de função analítica não excede 300 MB. Duas funções de janela com cláusulas OVER idênticas e as mesmas entradas diretas podem compartilhar o mesmo operador de função de janela. Por exemplo:
    • A consulta SELECT ROW_NUMBER() OVER (ORDER BY x), SUM(x) OVER (ORDER BY x) FROM my_table tem apenas um operador de função analítica.
    • A consulta SELECT ROW_NUMBER() OVER (ORDER BY x), SUM(x) OVER (PARTITION BY y ORDER BY x) FROM my_table tem dois operadores de função analítica, porque as duas funções não têm a mesma cláusula OVER.
    • A consulta SELECT ROW_NUMBER() OVER (ORDER BY x) FROM (SELECT SUM(x) OVER (ORDER BY x) AS x FROM my_table) tem dois operadores de função analítica, porque as duas funções têm entradas diretas diferentes, mesmo que as cláusulas OVER sejam as mesmas.
  • As funções analíticas indicadas estão na lista de funções compatíveis a seguir.

Lista de funções de janela compatíveis:

  • 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

    Outras funções

  • CAST

  • HLL_COUNT.EXTRACT

  • O operador de ponto para os campos STRUCT

  • ARRAY_LENGTH

Recursos não suportados

A aceleração do BI Engine não está disponível para os seguintes recursos:

  • UDFs de JavaScript
  • Tabelas externas
  • Como consultar dados JSON nativos
  • Como gravar resultados em uma tabela permanente do BigQuery
  • Tabelas contendo upserts pelo BigQuery alterna a captura de dados
  • Transações
  • Consultas que retornam mais de 1 GB de dados. Para aplicativos sensíveis à latência, recomendamos um tamanho de resposta menor que 1 MB.

Os seguintes recursos têm suporte limitado no Looker Studio:

  • UDFs de SQL
  • Como consultar colunas ARRAY

Embora alguns recursos SQL não sejam suportados nas consultas personalizadas do BigQuery BI Engine, há uma solução alternativa disponível:

  1. Crie uma consulta personalizada no BigQuery.
  2. Salve os resultados da consulta em uma tabela.
  3. Programe sua consulta personalizada para atualizar a tabela regularmente. Uma taxa de atualização horária ou diária funciona melhor, pois a atualização a cada minuto invalida o cache do BI Engine com mais frequência.
  4. Faça referência a essa tabela nas suas consultas de desempenho crítico.