Funções SQL permitidas

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.