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 é compatível com funções HyperLogLog++ (HLL++). No entanto, essas funções usam tipos de dados especializados com mais limitações.
Tipos compatíveis
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 COUNT(DISTINCT)
em uma camada simples.
Funções com suporte
Nome da função | Tipos compatíveis | 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.