Funciones y operadores de SQL optimizado

BigQuery BI Engine optimiza los siguientes operadores y funciones de GoogleSQL cuando se conectan herramientas de inteligencia empresarial (IE) con BigQuery mediante consultas o vistas personalizadas. Es posible que las consultas que usan funciones y operadores que no están en esta lista se ejecuten más lento.

Para obtener una lista de funciones de SQL no compatibles, consulta la sección Funciones no compatibles.

Si deseas obtener más información para usar consultas y vistas personalizadas en Looker Studio, consulta Conéctate a BigQuery. Si deseas obtener más información para conectar otras herramientas de IE a BigQuery, consulta la descripción general de la interfaz de SQL de BigQuery BI Engine.

Para obtener una lista de todos los operadores y funciones de GoogleSQL, consulta Funciones y operadores de GoogleSQL.

Operadores optimizados

  • ORDER BY
  • LIMIT recuento [OFFSET skip_rows]
  • UNION ALL
  • HAVING
  • GROUP BY
  • WHERE
  • INNER, LEFT y RIGHT JOIN (con límites de tamaño más pequeños)

Funciones optimizadas

Comparación

  • =
  • <>
  • <
  • <=
  • >
  • >=
  • 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áticas

  • - Menos unario
  • +
  • - (Menos binario)
  • *
  • /
  • 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

Nivel de bits

  • BIT_COUNT
  • ~ (Nivel de bits NOT)
  • & (Nivel de bits AND)
  • | (Nivel de bits OR)
  • ^ (Nivel de bits XOR)
  • << (Desplazamiento de bits a la izquierda)
  • >> (Desplazamiento de bits a la derecha)

Strings y 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

Marcas de tiempo, fechas y horas

  • Funciones de marca de tiempo
    • 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
  • Funciones de fecha
    • DATE(año, mes, día)
    • DATE_FROM_UNIX_DATE
    • UNIX_DATE
    • FORMAT_DATE
    • PARSE_DATE
    • DATE_ADD
    • DATE_SUB
    • DATE_DIFF
    • EXTRACT (from DATE)
    • DATE_TRUNC
    • CURRENT_TIMESTAMP
  • Funciones de tiempo
    • EXTRACT
    • FORMAT_TIME
    • PARSE_TIME
    • TIME_ADD
    • TIME_SUB
    • TIME_DIFF
    • TIME_TRUNC
    • CURRENT_TIME
  • Funciones de fecha y hora
    • DATETIME
    • EXTRACT
    • FORMAT_DATETIME
    • PARSE_DATETIME
    • DATETIME_ADD
    • DATETIME_SUB
    • DATETIME_DIFF
    • DATETIME_TRUNC
    • CURRENT_DATETIME

Hash

  • FARM_FINGERPRINT
  • MD5
  • SHA1
  • SHA256
  • SHA512

Herramientas de redes

  • 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

Geografía

  • Constructores
    • ST_GEOGPOINT
    • ST_MAKELINE
    • ST_MAKEPOLYGON
    • ST_MAKEPOLYGONORIENTED
  • Analizadores
    • ST_GEOGFROMGEOJSON
    • ST_GEOGFROMTEXT
    • ST_GEOGFROMWKB
    • ST_GEOGFROMWKB
    • ST_GEOGPOINTFROMGEOHASH
  • Formateadores
    • ST_ASBINARY
    • ST_ASGEOJSON
    • ST_ASKML
    • ST_GEOHASH
  • Transformaciones
    • ST_BOUNDARY
    • ST_CENTROID
    • ST_CLOSESTPOINT
    • ST_CONVEXHULL
    • ST_DIFFERENCE
    • ST_EXTERIORRING
    • ST_INTERSECTION
    • ST_SIMPLIFY
    • ST_SNAPTOGRID
  • Descriptores de acceso
    • 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

Funciones SAFE

  • Matemáticas
    • 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
  • Marcas de tiempo, fechas y horas
    • DATE_FROM_UNIX_DATE
    • PARSE_DATE
    • PARSE_DATETIME
    • PARSE_TIME
    • PARSE_TIMESTAMP
    • FORMAT_TIMESTAMP
    • TIMESTAMP_SECONDS
    • TIMESTAMP_MILLIS
    • TIMESTAMP_MICROS
  • Herramientas de redes
    • NET.SAFE_IP_FROM_STRING
  • Otro
    • SAFE_CAST

Funciones de agregación

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

Funciones analíticas

Las funciones analíticas, también conocidas como funciones analíticas, tienen las siguientes limitaciones cuando se aceleran mediante BigQuery BI Engine:

  • BigQuery BI Engine acelera las etapas de entrada si no tienen funciones analíticas. En este caso, INFORMATION_SCHEMA.JOBS ver los informes bi_engine_statistics.acceleration_mode como FULL_INPUT.
  • BI Engine acelera las etapas de entrada de las consultas con funciones analíticas en sus etapas de entrada, pero no pueden tener las limitaciones descritas en la sección de limitaciones de funciones analíticas de BI Engine. En ese caso, las etapas de entrada o la consulta completa se ejecutan en BI Engine. En este caso, INFORMATION_SCHEMA.JOBS ver los informes bi_engine_statistics.acceleration_mode como FULL_INPUT o FULL_QUERY.

Para obtener más información sobre el campo BiEngineStatistics, consulta la referencia de trabajos.

Limitaciones de las funciones analíticas de BI Engine

Las consultas con funciones analíticas se ejecutan en BI Engine solo si se cumplen todas las siguientes condiciones:

  • La consulta analiza exactamente una tabla.
    • La tabla no está particionada.
    • La tabla tiene menos de 5 millones de filas.
  • La consulta no tiene ningún operador JOIN.
  • El tamaño de la tabla analizada multiplicado por la cantidad de operadores de funciones analíticas no supera los 300 MB. Dos funciones analíticas con cláusulas OVER idénticas y las mismas entradas directas pueden compartir el mismo operador de función analítica. Por ejemplo:
    • La consulta SELECT ROW_NUMBER() OVER (ORDER BY x), SUM(x) OVER (ORDER BY x) FROM my_table solo tiene un operador de función analítica.
    • La consulta SELECT ROW_NUMBER() OVER (ORDER BY x), SUM(x) OVER (PARTITION BY y ORDER BY x) FROM my_table tiene dos operadores de funciones analíticas porque no tienen la misma cláusula OVER.
    • La consulta SELECT ROW_NUMBER() OVER (ORDER BY x) FROM (SELECT SUM(x) OVER (ORDER BY x) AS x FROM my_table) tiene dos operadores de funciones analíticas porque ambas tienen entradas directas diferentes, aunque sus cláusulas OVER parezcan iguales.
  • Las funciones analíticas a las que se hace referencia se encuentran en la siguiente lista de funciones compatibles.

Lista de funciones analíticas compatibles:

  • 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

Si las funciones analíticas no son compatibles, es posible que veas el siguiente error:

La función analítica no es compatible con otros operadores o sus entradas son demasiado grandes

Otras funciones

  • CAST
  • HLL_COUNT.EXTRACT
  • El operador de punto para los campos STRUCT
  • ARRAY_LENGTH

Limitaciones

Las siguientes limitaciones y restricciones se aplican a la compatibilidad con funciones y operadores SQL de BI Engine.

Funciones no admitidas de BI Engine

La aceleración de BI Engine no está disponible para las siguientes funciones:

  • UDF de JavaScript
  • Tablas externas
  • Consulta de datos JSON nativos: Mensaje de error: No se admite el tipo nativo de JSON
  • Escritura de resultados en una tabla de BigQuery permanente
  • Tablas que contienen operaciones upsert a través de la captura de datos modificados de BigQuery
  • Transacciones
  • Consultas que muestran más de 1 GB de datos. En el caso de las aplicaciones sensibles a la latencia, se recomienda un tamaño de respuesta inferior a 1 MB.

Compatibilidad limitada con Looker Studio

Las siguientes funciones tienen asistencia limitada en Looker Studio:

  • UDF de SQL
  • Consulta las columnas ARRAY

Solución alternativa para funciones no admitidas

Si bien algunas funciones de SQL no son compatibles con BigQuery BI Engine, existe una solución alternativa disponible:

  1. Escribe una consulta en BigQuery.
  2. Guarda los resultados de la consulta en una tabla.
  3. Programa tu consulta para actualizar la tabla de forma periódica. Una frecuencia de actualización diaria o por hora funciona mejor, ya que actualizar cada minuto invalidará la caché de BI Engine con mayor frecuencia.
  4. Haz referencia a esta tabla en las consultas de rendimiento crítico.