Funzioni e operatori SQL ottimizzati

BigQuery BI Engine ottimizza le seguenti funzioni e operatori GoogleSQL quando colleghi gli strumenti di business intelligence (BI) a BigQuery utilizzando query o visualizzazioni personalizzate. Query che utilizzano funzioni e operatori che non sono in questo elenco potrebbero essere più lente.

Per un elenco delle funzionalità SQL non supportate, consulta la sezione Funzionalità non supportate.

Per ulteriori informazioni sull'utilizzo di query e visualizzazioni personalizzate in Looker Studio, consulta Connettiti a BigQuery. Per ulteriori informazioni sulla connessione di altri strumenti BI a BigQuery, vedi Panoramica dell'interfaccia SQL di BigQuery BI Engine.

Per un elenco di tutti gli operatori e le funzioni di GoogleSQL, consulta Funzioni GoogleSQL e operatori.

Operatori ottimizzati

  • ORDER BY
  • LIMIT conta [OFFSET skip_rows]
  • UNION ALL
  • HAVING
  • GROUP BY
  • WHERE
  • INNER, LEFT e RIGHT JOIN (con limiti di dimensioni inferiori)

Funzioni ottimizzate

Confronto

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

Logico

  • NOT
  • AND
  • OR

Matematica

  • - (meno unario)
  • +
  • - (meno 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

Bitwise

  • BIT_COUNT
  • ~ (NOT bit a bit)
  • & (AND bit a bit)
  • | (OR bit a bit)
  • ^ (a livello di bit XOR)
  • << (Spostamento a sinistra a livello di bit)
  • >> (spostamento a destra bit a destra)

Stringhe e byte

  • 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, date e ore

  • Funzioni di timestamp
    • 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
  • Funzioni di data
    • DATE(year, month, day)
    • DATE_FROM_UNIX_DATE
    • UNIX_DATE
    • FORMAT_DATE
    • PARSE_DATE
    • DATE_ADD
    • DATE_SUB
    • DATE_DIFF
    • EXTRACT (da DATE)
    • DATE_TRUNC
    • CURRENT_TIMESTAMP
  • Funzioni relative al tempo
    • EXTRACT
    • FORMAT_TIME
    • PARSE_TIME
    • TIME_ADD
    • TIME_SUB
    • TIME_DIFF
    • TIME_TRUNC
    • CURRENT_TIME
  • Funzioni data/ora
    • DATETIME
    • EXTRACT
    • FORMAT_DATETIME
    • PARSE_DATETIME
    • DATETIME_ADD
    • DATETIME_SUB
    • DATETIME_DIFF
    • DATETIME_TRUNC
    • CURRENT_DATETIME

Hashing

  • FARM_FINGERPRINT
  • MD5
  • SHA1
  • SHA256
  • SHA512

Networking

  • 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

Area geografica

  • Costruttori
    • ST_GEOGPOINT
    • ST_MAKELINE
    • ST_MAKEPOLYGON
    • ST_MAKEPOLYGONORIENTED
  • Parser
    • ST_GEOGFROMGEOJSON
    • ST_GEOGFROMTEXT
    • ST_GEOGFROMWKB
    • ST_GEOGFROMWKB
    • ST_GEOGPOINTFROMGEOHASH
  • Formattatori
    • ST_ASBINARY
    • ST_ASGEOJSON
    • ST_ASKML
    • ST_GEOHASH
  • Trasformazioni
    • ST_BOUNDARY
    • ST_CENTROID
    • ST_CLOSESTPOINT
    • ST_CONVEXHULL
    • ST_DIFFERENCE
    • ST_EXTERIORRING
    • ST_INTERSECTION
    • ST_SIMPLIFY
    • ST_SNAPTOGRID
  • Accessori
    • ST_DIMENSION
    • ST_ENDPOINT
    • ST_GEOMETRYTYPE
    • ST_ISCOLLECTION
    • ST_ISEMPTY
    • ST_NPOINTS
    • ST_NUMGEOMETRIES
    • ST_NUMPOINTS
    • ST_POINTN
    • ST_STARTPOINT
    • ST_X
    • ST_Y
  • Predicati
    • ST_CONTAINS
    • ST_COVEREDBY
    • ST_COVERS
    • ST_DISJOINT
    • ST_DWITHIN
    • ST_EQUALS
    • ST_INTERSECTS
    • ST_INTERSECTSBOX
    • ST_TOUCHES
    • ST_WITHIN
  • Misure
    • ST_ANGLE
    • ST_AREA
    • ST_AZIMUTH
    • ST_DISTANCE
    • ST_LENGTH
    • ST_MAXDISTANCE
    • ST_PERIMETER

Funzioni SICURO

  • Matematica
    • 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
  • Stringhe
    • REGEXP_CONTAINS
    • REGEXP_EXTRACT
    • REGEXP_REPLACE
    • FORMAT
    • SUBSTR
    • ASCII
    • SAFE_CONVERT_BYTES_TO_STRING
    • INSTR
    • LEFT
    • RIGHT
    • TRANSLATE
    • INITCAP
  • Timestamp, date e ore
    • DATE_FROM_UNIX_DATE
    • PARSE_DATE
    • PARSE_DATETIME
    • PARSE_TIME
    • PARSE_TIMESTAMP
    • FORMAT_TIMESTAMP
    • TIMESTAMP_SECONDS
    • TIMESTAMP_MILLIS
    • TIMESTAMP_MICROS
  • Networking
    • NET.SAFE_IP_FROM_STRING
  • Altro
    • SAFE_CAST

Funzioni di aggregazione

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

Funzioni finestra

Le funzioni finestra, chiamate anche funzioni analitiche, presentano le seguenti limitazioni quando vengono accelerate da BigQuery BI Engine:

  • Le fasi di input vengono accelerate da BigQuery BI Engine se non hanno funzioni finestra. In questo caso, INFORMATION_SCHEMA.JOBS visualizza i report bi_engine_statistics.acceleration_mode sotto forma di FULL_INPUT.
  • Le fasi di input delle query con funzioni finestra nelle fasi di input vengono accelerate da BI Engine, ma non possono avere le limitazioni descritte nella sezione Limitazioni delle funzioni finestra di BI Engine. In questo caso, le fasi di input o la query completa vengono eseguite e BI Engine. In questo caso, INFORMATION_SCHEMA.JOBS visualizza i report bi_engine_statistics.acceleration_mode come FULL_INPUT o FULL_QUERY.

Per ulteriori informazioni sul campo BiEngineStatistics, consulta Riferimento job.

Limitazioni delle funzioni finestra di BI Engine

Le query con funzioni finestra vengono eseguite in BI Engine solo se vengono soddisfatte tutte le seguenti condizioni:

  • La query scansiona esattamente una tabella.
    • La tabella non è partizionata.
    • La tabella ha meno di 5 milioni di righe.
  • La query non contiene operatori JOIN.
  • Le dimensioni della tabella sottoposta a scansione moltiplicate per il numero di operatori di funzioni di finestra non devono superare i 300 MB. Due funzioni finestra con clausole OVER identiche e gli stessi input diretti possono condividere lo stesso operatore di funzione finestra. Per esempio:
    • La query SELECT ROW_NUMBER() OVER (ORDER BY x), SUM(x) OVER (ORDER BY x) FROM my_table ha un solo operatore di funzione finestra.
    • La query SELECT ROW_NUMBER() OVER (ORDER BY x), SUM(x) OVER (PARTITION BY y ORDER BY x) FROM my_table ha due operatori di funzione finestra perché due funzioni non hanno la stessa clausola OVER.
    • La query SELECT ROW_NUMBER() OVER (ORDER BY x) FROM (SELECT SUM(x) OVER (ORDER BY x) AS x FROM my_table) ha due operatori di funzione finestra perché le due funzioni hanno input diretti diversi anche se le loro clausole OVER avere lo stesso aspetto.
  • Le funzioni finestra a cui si fa riferimento sono riportate nel seguente elenco di funzioni supportate.

Elenco di funzione finestra supportate:

  • 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

Se le funzioni finestra non sono supportate, potrebbe essere visualizzato il seguente errore:

La funzione di analisi non è compatibile con altri operatori o i relativi input sono troppo grandi

Altre funzioni

  • CAST
  • HLL_COUNT.EXTRACT
  • L'operatore punto per i campi STRUCT
  • ARRAY_LENGTH

Limitazioni

A BI Engine si applicano le seguenti limitazioni e restrizioni Supporto di operatori e funzioni SQL.

Funzionalità non supportate di BI Engine

L'accelerazione di BI Engine non è disponibile per le seguenti funzionalità:

  • Funzioni definite dall'utente JavaScript
  • Tabelle esterne
  • Query sui dati JSON nativi - Messaggio di errore: Il tipo nativo JSON non è supportato
  • Scrittura dei risultati in una tabella BigQuery permanente
  • Tabelle contenenti upsert tramite Change Data Capture di BigQuery
  • Transazioni
  • Query che restituiscono più di 1 GB di dati. Per le applicazioni sensibili alla latenza, è consigliata una dimensione della risposta inferiore a 1 MB.

Supporto di Looker Studio limitato

Le seguenti funzionalità hanno un supporto limitato in Looker Studio:

  • Funzioni definite dall'utente SQL
  • Query su ARRAY colonne in corso...

Soluzione alternativa per le funzionalità non supportate

Sebbene alcune funzionalità SQL non siano supportate in BigQuery BI Engine, è disponibile una soluzione alternativa:

  1. Scrivi una query in BigQuery.
  2. Salva i risultati della query in una tabella.
  3. Pianifica l'aggiornamento della query regolarmente la tabella. È preferibile una frequenza di aggiornamento oraria o giornaliera, poiché l'aggiornamento ogni minuto invalida la cache di BI Engine più di frequente.
  4. Fai riferimento a questa tabella nelle query critiche per il rendimento.