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
yRIGHT 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
Math
-
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 bitsNOT
)&
(Nivel de bitsAND
)|
(Nivel de bitsOR
)^
(Nivel de bitsXOR
)<<
(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
(fromDATE
)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
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
Datos geográficos
- 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 informesbi_engine_statistics
.acceleration_mode
comoFULL_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 informesbi_engine_statistics
.acceleration_mode
comoFULL_INPUT
oFULL_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áusulaOVER
. - 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áusulasOVER
parezcan iguales.
- La consulta
- 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
Otras funciones
CAST
HLL_COUNT.EXTRACT
El operador de punto para los campos
STRUCT
ARRAY_LENGTH
Características no compatibles
La aceleración de BI Engine no está disponible para las siguientes funciones:
- UDF de JavaScript
- Tablas externas
- Consulta de datos JSON nativos
- 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.
Las siguientes funciones tienen asistencia limitada en Looker Studio:
- UDF de SQL
- Consulta las columnas
ARRAY
Si bien algunas funciones de SQL no son compatibles con las consultas personalizadas de BigQuery BI Engine, existe una solución alternativa disponible:
- Crea una consulta personalizada en BigQuery.
- Guarda los resultados de la consulta en una tabla.
- Programa tu consulta personalizada 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.
- Haz referencia a esta tabla en las consultas de rendimiento crítico.