Funciones de SQL permitidas

Por motivos de privacidad, restringimos las funciones de SQL que puedes usar en el CDA.

Funciones escalares

Se permiten todas las funciones escalares, excepto las siguientes:

  • 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álisis

En el caso de las consultas de análisis agregado, restringimos las funciones que combinan datos de varios usuarios. Todas las funciones analíticas y agregadas están permitidas cuando se procesan los datos de un solo usuario. Consulta Agregaciones a nivel de usuario a continuación para obtener más detalles.

Funciones de agregación

Función ¿Se permite?
ANY_VALUE
APPROX_QUANTILES No
APPROX_TOP_COUNT No
APPROX_TOP_SUM No
ARRAY_AGG No
ARRAY_CONCAT_AGG No
AVG
BIT_AND No
BIT_OR No
BIT_XOR No
COUNT
COUNTIF
LOGICAL_AND
LOGICAL_OR
MAX
MIN
SUM
CORR
COVAR_POP
COVAR_SAMP
STDDEV_POP
STDDEV_SAMP
STDDEV
STRING_AGG No
VAR_POP
VAR_SAMP
VARIANCE
APPROX_COUNT_DISTINCT

Funciones analíticas

Todas las funciones analíticas están restringidas.

Funciones HyperLogLog++

El Centro de Datos de Anuncios admite funciones HyperLogLog++ (HLL++). Sin embargo, usan tipos de datos especializados con más limitaciones.

Tipos admitidos

Tipo Descripción
ADH.USER_HLL Un esbozo agregado a partir de valores de tipo ADH.USER_ID
ADH.BYTE_HLL Un esbozo agregado a partir de valores de cualquier tipo sin ID

Estos tipos admiten la combinación y la extracción de estimaciones de cardinalidad y no admiten la conversión directa a ningún otro tipo. No se pueden exportar directamente desde el Centro de Datos de Anuncios, por lo que deben usar HLL_COUNT.EXTRACT o HLL_COUNT.MERGE antes de obtener el resultado de la consulta.

Los esbozos HLL permiten la estimación de cardinalidad en varias capas de agregación, pero ten en cuenta que, en el Centro de Datos de Anuncios, no proporcionan una mejora sustancial del rendimiento con respecto a COUNT(DISTINCT) en una sola capa.

Funciones compatibles

Nombre de la función Tipos admitidos Tipo de datos que se muestra
HLL_COUNT.EXTRACT ADH.USER_HLL, ADH.BYTE_HLL INT64
HLL_COUNT.INIT Todos los tipos compatibles estándar, ADH.USER_ID ADH.USER_HLL para la entrada ADH.USER_ID; de lo contrario, 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 que el tipo de entrada

Limitaciones

Inyección de ruido: Las funciones HLL++ no son compatibles cuando se ejecuta una consulta mediante la inyección de ruido.

Agregaciones a nivel de usuario

Se permiten todas las funciones analíticas y de agregación en las declaraciones SELECT que agrupan o particionan por user_id. Para que esto funcione, cualquier unión anterior debe dejar en claro que los datos se conservan a nivel del usuario mediante la unión en user_id, como en este ejemplo:

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 lista de usuarios

En las consultas de lista de usuarios, se permiten las funciones de agregación y no se admiten las funciones analíticas.