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. 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 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 per BigQuery, consulta Panoramica dell'interfaccia SQL di BigQuery BI Engine.

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

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 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 SAFE

  • Matematico
    • 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

Funzioni finestra, note anche come funzioni analitiche, presentano le seguenti limitazioni quando accelerata da BigQuery BI Engine:

  • Le fasi di input vengono accelerate da BigQuery BI Engine se non hanno funzione 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 limitazioni descritto nella sezione sui limiti delle funzioni della 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 sotto forma di 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 ha operatori JOIN.
  • La dimensione della tabella analizzata moltiplicata per il numero di operatori funzione finestra non superi 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 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à:

  • Funzioni definite dall'utente 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...

Sebbene alcune funzionalità SQL non siano 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. Pianificare l'aggiornamento della query personalizzata regolarmente la tabella. Una frequenza di aggiornamento oraria o giornaliera funziona meglio perché l'aggiornamento ogni minuto rende BI Engine cache con maggiore frequenza.
  4. Fai riferimento a questa tabella nelle query critiche per il rendimento.