Funzioni SQL consentite

Per motivi di privacy, limitiamo le funzionalità SQL che puoi utilizzare in ADH.

Funzioni scalari

Sono consentite tutte le funzioni scalare ad eccezione di quanto segue:

  • ERROR
  • ST_AREA
  • ST_ASBINARY
  • ST_ASGEOJSON
  • ST_ASTEXT
  • ST_BOUNDARY
  • ST_CENTROID
  • ST_CENTROID_AGG
  • ST_CLOSESTPOINT
  • ST_CLUSTERDBSCAN
  • ST_CONTAINS
  • ST_CONVEXHULL
  • ST_COVEREDBY
  • ST_COVERS
  • ST_DIFFERENCE
  • ST_DIMENSION
  • ST_DISJOINT
  • ST_DISTANCE
  • ST_DUMP
  • ST_DWITHIN
  • ST_EQUALS
  • ST_GEOGFROMGEOJSON
  • ST_GEOGFROMTEXT
  • ST_GEOGFROMWKB
  • ST_GEOGPOINT
  • ST_GEOGPOINTFROMGEOHASH
  • ST_GEOHASH
  • ST_INTERSECTION
  • ST_INTERSECTS
  • ST_INTERSECTSBOX
  • ST_ISCOLLECTION
  • ST_ISEMPTY
  • ST_LENGTH
  • ST_MAKELINE
  • ST_MAKEPOLYGON
  • ST_MAKEPOLYGONORIENTED
  • ST_MAXDISTANCE
  • ST_NPOINTS
  • ST_NUMPOINTS
  • ST_PERIMETER
  • ST_SIMPLIFY
  • ST_SNAPTOGRID
  • ST_TOUCHES
  • ST_UNION
  • ST_UNION_AGG
  • ST_WITHIN
  • ST_X
  • ST_Y

Query di analisi

Per le query di analisi aggregate, limitiamo le funzioni che combinano dati di più utenti. Tutte le funzioni aggregate e analitiche sono consentite durante l'elaborazione dei dati di un singolo utente. Per ulteriori dettagli, consulta Aggregazioni a livello di utente di seguito.

Funzioni di aggregazione

Funzione Consentito?
ANY_VALUE
APPROX_QUANTILES No
APPROX_TOP_COUNT No
APPROX_TOP_SUM No
ARRAY_AGG No
ARRAY_CONCAT_AGG No
AVG
BIT_AND No
BIT_OR No
BIT_XOR No
COUNT
COUNTIF
LOGICAL_AND
LOGICAL_OR
MAX
MIN
SUM
CORR
COVAR_POP
COVAR_SAMP
STDDEV_POP
STDDEV_SAMP
STDDEV
STRING_AGG No
VAR_POP
VAR_SAMP
VARIANCE
APPROX_COUNT_DISTINCT

Funzioni di analisi

Tutte le funzioni di analisi sono limitate.

Aggregazioni a livello di utente

Consentiamo tutte le funzioni aggregate e analitiche nelle istruzioni SELECT che raggruppano o partizionano per user_id. Affinché questo comando funzioni, tutti i join precedenti devono indicare chiaramente che i dati vengono mantenuti a livello di utente unendo user_id, come in questo esempio:

SELECT ARRAY_AGG(campaign_id ORDER BY query_id.time_usec) AS path
FROM
  adh.google_ads_impressions
  LEFT JOIN adh.google_ads_clicks USING(query_id, user_id)
GROUP BY user_id

Se ciò non è possibile perché gli ID sono separati e non parteciperanno, la query dovrebbe raggruppare o partizionare da tutti gli ID indipendenti, come in questo esempio:

SELECT
  a.user_id AS user_a,
  b.user_id AS user_b,
  ARRAY_AGG(DISTINCT campaign_id) campaigns
FROM
  adh.google_ads_impressions a
  JOIN adh.google_ads_impressions b USING (campaign_id)
GROUP BY 1, 2

Query elenco utenti

Nelle query degli elenchi di utenti, sono consentite le funzioni aggregate e le funzioni di analisi non sono supportate.