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 é 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.