Funzioni e operatori SQL ottimizzati

BigQuery BI Engine ottimizza le funzioni e gli operatori GoogleSQL seguenti quando connetti gli strumenti di business intelligence (BI) a BigQuery utilizzando query o viste personalizzate. Le query che utilizzano funzioni e operatori non presenti in questo elenco potrebbero essere eseguite più lentamente.

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

Per saperne di più sull'utilizzo di query e viste personalizzate in Looker Studio, consulta Connettersi a BigQuery. Per ulteriori informazioni sulla connessione di altri strumenti BI a BigQuery, consulta Panoramica dell'interfaccia SQL di BI Engine di BigQuery.

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

Operatori ottimizzati

  • ORDER BY
  • LIMIT numero [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 unitario)
  • +
  • - (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

A bit

  • BIT_COUNT
  • ~ (NOT bit a bit)
  • & (AND bit a bit)
  • | (OR bit a bit)
  • ^ (XOR bit a bit)
  • << (spostamento a sinistra bit per via)
  • >> (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 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(anno, mese, giorno)
    • DATE_FROM_UNIX_DATE
    • UNIX_DATE
    • FORMAT_DATE
    • PARSE_DATE
    • DATE_ADD
    • DATE_SUB
    • DATE_DIFF
    • EXTRACT (da DATE)
    • DATE_TRUNC
    • CURRENT_TIMESTAMP
  • Funzioni temporali
    • EXTRACT
    • FORMAT_TIME
    • PARSE_TIME
    • TIME_ADD
    • TIME_SUB
    • TIME_DIFF
    • TIME_TRUNC
    • CURRENT_TIME
  • Funzioni di 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

Geografia

  • Costruttori
    • ST_GEOGPOINT
    • ST_MAKELINE
    • ST_MAKEPOLYGON
    • ST_MAKEPOLYGONORIENTED
  • Analizzatori
    • 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 SAFE

  • 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, note anche come funzioni analitiche, presentano le seguenti limitazioni quando sono 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 sono accelerate da BI Engine, ma non possono avere le limitazioni descritte nella sezione Limiti delle funzioni finestra di BI Engine. In questo caso, le fasi di input o la query completa vengono eseguite in BI Engine. In questo caso INFORMATION_SCHEMA.JOBS visualizza i report bi_engine_statistics.acceleration_mode sotto forma di FULL_INPUT o FULL_QUERY.

Per ulteriori informazioni sul campo BiEngineStatistics, consulta la documentazione di riferimento del job.

Limitazioni delle funzioni finestra di BI Engine

Le query con funzioni finestra vengono eseguite in BI Engine solo se sono 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 ha operatori JOIN.
  • Le dimensioni della tabella analizzata moltiplicate per il numero di operatori funzione finestra non superano i 300 MB. Due funzioni finestra con clausole OVER identiche e gli stessi input diretti possono condividere lo stesso operatore di funzione finestra. Ad 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é le 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 clausole OVER appaiono uguali.
  • Le funzioni finestra di 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

    Altre funzioni

  • CAST

  • HLL_COUNT.EXTRACT

  • Operatore del punto per i campi STRUCT

  • ARRAY_LENGTH

Funzionalità non supportate

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

  • UDF JavaScript
  • Tabelle esterne
  • Esecuzione di query su dati JSON nativi
  • 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, si consiglia una dimensione della risposta inferiore a 1 MB.

Le seguenti funzionalità sono supportate in modo limitato in Looker Studio:

  • UDF SQL
  • Query su ARRAY colonne in corso...

Anche se alcune funzionalità SQL non sono supportate nelle query personalizzate di BigQuery BI Engine, è disponibile una soluzione alternativa:

  1. Crea una query personalizzata in BigQuery.
  2. Salva i risultati della query in una tabella.
  3. Pianifica la query personalizzata in modo che la tabella aggiorni regolarmente. Una frequenza di aggiornamento oraria o giornaliera è la scelta migliore, in quanto un aggiornamento ogni minuto rende la cache di BI Engine disabilitata con maggiore frequenza.
  4. Fai riferimento a questa tabella nelle query critiche per il rendimento.