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 |
Sì |
APPROX_QUANTILES |
No |
APPROX_TOP_COUNT |
No |
APPROX_TOP_SUM |
No |
ARRAY_AGG |
No |
ARRAY_CONCAT_AGG |
No |
AVG |
Sì |
BIT_AND |
No |
BIT_OR |
No |
BIT_XOR |
No |
COUNT |
Sì |
COUNTIF |
Sì |
LOGICAL_AND |
Sì |
LOGICAL_OR |
Sì |
MAX |
Sì |
MIN |
Sì |
SUM |
Sì |
CORR |
Sì |
COVAR_POP |
Sì |
COVAR_SAMP |
Sì |
STDDEV_POP |
Sì |
STDDEV_SAMP |
Sì |
STDDEV |
Sì |
STRING_AGG |
No |
VAR_POP |
Sì |
VAR_SAMP |
Sì |
VARIANCE |
Sì |
APPROX_COUNT_DISTINCT |
Sì |
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.