Por privacidade, restringimos as funções SQL que podem ser usadas no ADH.
Funções escalares
Todas as funções escalares, exceto as seguintes, são permitidas:
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
Consultas de análise
Para consultas de análise agregadas, restringimos funções que combinam dados de vários usuários. Todas as funções agregadas e analíticas são permitidas ao processar dados de um único usuário. Confira detalhes em Agregações do usuário abaixo.
Funções de agregação
Função | Permitido? |
---|---|
ANY_VALUE |
Sim |
APPROX_QUANTILES |
Não |
APPROX_TOP_COUNT |
Não |
APPROX_TOP_SUM |
Não |
ARRAY_AGG |
Não |
ARRAY_CONCAT_AGG |
Não |
AVG |
Sim |
BIT_AND |
Não |
BIT_OR |
Não |
BIT_XOR |
Não |
COUNT |
Sim |
COUNTIF |
Sim |
LOGICAL_AND |
Sim |
LOGICAL_OR |
Sim |
MAX |
Sim |
MIN |
Sim |
SUM |
Sim |
CORR |
Sim |
COVAR_POP |
Sim |
COVAR_SAMP |
Sim |
STDDEV_POP |
Sim |
STDDEV_SAMP |
Sim |
STDDEV |
Sim |
STRING_AGG |
Não |
VAR_POP |
Sim |
VAR_SAMP |
Sim |
VARIANCE |
Sim |
APPROX_COUNT_DISTINCT |
Sim |
Funções analíticas
Todas as funções analíticas são restritas.
Funções HyperLogLog++
O Ads Data Hub trabalha com funções HyperLogLog++ (HLL++). Só que essas funções usam tipos de dados especializados com mais limitações.
Tipos aceitos
Tipo | Descrição |
---|---|
ADH.USER_HLL |
Um esboço agregado de valores do tipo ADH.USER_ID |
ADH.BYTE_HLL |
Um esboço agregado de valores de qualquer tipo sem ID |
Esses tipos são compatíveis com mesclagem e extração para estimativas de cardinalidade, mas não aceitam conversão direta para nenhum outro tipo. Não é possível exportá-los direto do Ads Data Hub, ou seja, eles precisam usar HLL_COUNT.EXTRACT
ou HLL_COUNT.MERGE
antes de chegar ao resultado da consulta.
Os esboços do HLL habilitam a estimativa de cardinalidade em várias camadas de agregação. No entanto, no Ads Data Hub, eles não resultam em uma melhoria relevante na performance com o COUNT(DISTINCT)
em uma camada simples.
Funções compatíveis
Nome da função | Tipos aceitos | Tipo de retorno |
---|---|---|
HLL_COUNT.EXTRACT
|
ADH.USER_HLL , ADH.BYTE_HLL |
INT64
|
HLL_COUNT.INIT
|
Todos os tipos padrão compatíveis, ADH.USER_ID |
ADH.USER_HLL para entrada de ADH.USER_ID , caso contrário, ADH.BYTE_HLL |
HLL_COUNT.INITNT.MERGE
|
ADH.USER_HLL , ADH.BYTE_HLL |
INT64
|
HLL_COUNT.MERGE_PARTIAL
|
ADH.USER_HLL , ADH.BYTE_HLL |
Igual ao tipo da entrada |
Limitações
Injeção de ruído: as funções HLL++ não funcionam na hora de executar uma query usando a injeção de ruído.
Agregações do usuário
Permitimos todas as funções agregadas e analíticas em instruções SELECT
que agrupam ou particionam por user_id
. Para que isso funcione, os agrupamentos anteriores precisam deixar claro que os dados são mantidos no nível do usuário com agrupamentos em user_id
, como neste exemplo:
CREATE TABLE paths AS (
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)
Consultas de listas de usuários
Nas consultas de listas de usuários, as funções agregadas são permitidas, e as analíticas não são aceitas.