Fonctions SQL autorisées

Pour des raisons de confidentialité, nous limitons les fonctions SQL que vous pouvez utiliser dans ADH.

Fonctions scalaires

Toutes les fonctions scalaires sont autorisées, à l'exception des suivantes :

  • 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

Requêtes d'analyse

Pour les requêtes d'analyse agrégées, nous limitons les fonctions combinant des données provenant de plusieurs utilisateurs. Toutes les fonctions d'agrégation et analytiques sont autorisées lors du traitement des données d'un seul utilisateur. Pour en savoir plus, consultez la section Agrégations au niveau de l'utilisateur ci-dessous.

Fonctions d'agrégation

Fonction autorisée ?
ANY_VALUE Oui
APPROX_QUANTILES Non
APPROX_TOP_COUNT Non
APPROX_TOP_SUM Non
ARRAY_AGG Non
ARRAY_CONCAT_AGG Non
AVG Oui
BIT_AND Non
BIT_OR Non
BIT_XOR Non
COUNT Oui
COUNTIF Oui
LOGICAL_AND Oui
LOGICAL_OR Oui
MAX Oui
MIN Oui
SUM Oui
CORR Oui
COVAR_POP Oui
COVAR_SAMP Oui
STDDEV_POP Oui
STDDEV_SAMP Oui
STDDEV Oui
STRING_AGG Non
VAR_POP Oui
VAR_SAMP Oui
VARIANCE Oui
APPROX_COUNT_DISTINCT Oui

Fonctions analytiques

Toutes les fonctions analytiques sont limitées.

Fonctions HyperLogLog++

Ads Data Hub est compatible avec les fonctions HyperLogLog++ (HLL++). Toutefois, celles-ci utilisent des types de données spécifiques avec des limites supplémentaires.

Types acceptés

Type Description
ADH.USER_HLL Résumé agrégé à partir de valeurs de type ADH.USER_ID
ADH.BYTE_HLL Résumé agrégé à partir de valeurs autres que de type "ID"

Ces types acceptent la fusion et l'extraction pour les estimations de cardinalité, mais pas la conversion directe vers un autre type. Comme ils ne peuvent pas être directement exportés à partir d'Ads Data Hub, ils doivent utiliser HLL_COUNT.EXTRACT ou HLL_COUNT.MERGE avant d'obtenir le résultat de la requête.

Les résumés HLL permettent d'estimer la cardinalité dans plusieurs couches d'agrégation. Toutefois, notez que dans Ads Data Hub, ils ne génèrent pas de gains de performances importants par rapport à COUNT(DISTINCT) dans une couche unique.

Fonctions compatibles

Nom de la fonction Types acceptés Type renvoyé
HLL_COUNT.EXTRACT ADH.USER_HLL, ADH.BYTE_HLL INT64
HLL_COUNT.INIT Tous les types acceptés standards, ADH.USER_ID ADH.USER_HLL pour l'entrée de ADH.USER_ID (sinon, ADH.BYTE_HLL)
HLL_COUNT.INITNT.MERGE ADH.USER_HLL, ADH.BYTE_HLL INT64
HLL_COUNT.MERGE_PARTIAL ADH.USER_HLL, ADH.BYTE_HLL Identique au type d'entrée

Limites

Injection de bruit : les fonctions HLL++ ne sont pas acceptées lorsque l'injection de bruit est utilisée pour exécuter une requête.

Agrégations au niveau de l'utilisateur

Nous autorisons toutes les fonctions d'agrégation et analytiques dans les instructions SELECT qui effectuent des regroupements ou des partitionnements par user_id. Pour que cela fonctionne, toutes les jointures précédentes doivent indiquer clairement que les données sont conservées au niveau de l'utilisateur en effectuant une jointure sur user_id, comme dans l'exemple :

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)

Requêtes de liste d'utilisateurs

Dans les requêtes de liste d'utilisateurs, les fonctions d'agrégation sont autorisées, mais les fonctions analytiques ne sont pas compatibles.