Por motivos de privacidad, restringimos las funciones de SQL que puedes utilizar en el CDA.
Funciones escalares
Se permiten todas las funciones escalares, excepto las siguientes:
ERRORST_AREAST_ASBINARYST_ASGEOJSONST_ASTEXTST_BOUNDARYST_CENTROIDST_CENTROID_AGGST_CLOSESTPOINTST_CLUSTERDBSCANST_CONTAINSST_CONVEXHULLST_COVEREDBYST_COVERSST_DIFFERENCEST_DIMENSIONST_DISJOINTST_DISTANCEST_DUMPST_DWITHINST_EQUALSST_GEOGFROMGEOJSONST_GEOGFROMTEXTST_GEOGFROMWKBST_GEOGPOINTST_GEOGPOINTFROMGEOHASHST_GEOHASHST_INTERSECTIONST_INTERSECTSST_INTERSECTSBOXST_ISCOLLECTIONST_ISEMPTYST_LENGTHST_MAKELINEST_MAKEPOLYGONST_MAKEPOLYGONORIENTEDST_MAXDISTANCEST_NPOINTSST_NUMPOINTSST_PERIMETERST_SIMPLIFYST_SNAPTOGRIDST_TOUCHESST_UNIONST_UNION_AGGST_WITHINST_XST_Y
Consultas de análisis
En las consultas de análisis agregadas, restringimos las funciones que combinan datos de varios usuarios. Todas las funciones analíticas y de agregación están permitidas cuando se procesan datos de un solo usuario. Consulta la sección Agregaciones a nivel de usuario que aparece más abajo para obtener más información.
Funciones de agregación
| Función | ¿Se permite? |
|---|---|
ANY_VALUE |
Sí |
APPROX_QUANTILES |
No |
APPROX_TOP_COUNT |
No |
APPROX_TOP_SUM |
No |
ARRAY_AGG |
No |
ARRAY_CONCAT_AGG |
No |
AVG |
Sí |
BIT_AND |
No |
BIT_OR |
No |
BIT_XOR |
No |
COUNT |
Sí |
COUNTIF |
Sí |
LOGICAL_AND |
Sí |
LOGICAL_OR |
Sí |
MAX |
Sí |
MIN |
Sí |
SUM |
Sí |
CORR |
Sí |
COVAR_POP |
Sí |
COVAR_SAMP |
Sí |
STDDEV_POP |
Sí |
STDDEV_SAMP |
Sí |
STDDEV |
Sí |
STRING_AGG |
No |
VAR_POP |
Sí |
VAR_SAMP |
Sí |
VARIANCE |
Sí |
APPROX_COUNT_DISTINCT |
Sí |
Funciones analíticas
Todas las funciones analíticas están restringidas.
Funciones HyperLogLog++
El Centro de Datos de Anuncios admite funciones HyperLogLog++ (HLL++). No obstante, usan tipos de datos especializados con más limitaciones.
Tipos admitidos
| Tipo | Descripción |
|---|---|
ADH.USER_HLL |
Un esquema agregado de valores del tipo ADH.USER_ID |
ADH.BYTE_HLL |
Un esquema agregado de valores de cualquier tipo sin ID |
Estos tipos permiten la fusión y extracción de estimaciones de cardinalidad, pero no 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 or HLL_COUNT.MERGE antes de formar parte del resultado de una consulta.
Los esquemas HLL permiten hacer estimaciones de cardinalidad de distintas capas de agregación, pero ten en cuenta que en el Centro de Datos de Anuncios no ofrecen una mejora significativa del rendimiento en comparación con COUNT(DISTINCT) en una única capa.
Funciones compatibles
| Nombre de la función | Tipos admitidos | Tipo de resultado devuelto |
|---|---|---|
HLL_COUNT.EXTRACT
|
ADH.USER_HLL y ADH.BYTE_HLL |
INT64
|
HLL_COUNT.INIT
|
Todos los tipos estándar admitidos y ADH.USER_ID |
ADH.USER_HLL con el tipo de entrada ADH.USER_ID y ADH.BYTE_HLL en el resto de los casos |
HLL_COUNT.INITNT.MERGE
|
ADH.USER_HLL y ADH.BYTE_HLL |
INT64
|
HLL_COUNT.MERGE_PARTIAL
|
ADH.USER_HLL y ADH.BYTE_HLL |
Igual que el tipo de entrada |
Limitaciones
Inyección de ruido: no se pueden usar funciones HLL++ al hacer una consulta con inyección de ruido.
Agregaciones a nivel de usuario
Permitimos todas las funciones analíticas y de agregación en instrucciones SELECT que agrupan o hacen particiones por user_id. Para que esto funcione, cualquier unión anterior debe aclarar que los datos se mantienen a nivel de usuario mediante una 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, pero no las funciones analíticas.