Zulässige SQL-Funktionen

Aus Datenschutzgründen beschränken wir die SQL-Funktionen, die Sie in ADH verwenden können.

Skalarfunktionen

Alle skalaren Funktionen mit Ausnahme der folgenden sind zulässig:

  • 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

Analyseabfragen

Bei aggregierten Analyseabfragen schränken wir Funktionen ein, bei denen Daten von mehreren Nutzern kombiniert werden. Bei der Verarbeitung einzelner Nutzerdaten sind alle Aggregat- und Analysefunktionen zulässig. Weitere Informationen finden Sie unten im Abschnitt Aggregationen auf Nutzerebene.

Aggregatfunktionen

Funktion Zulässig?
ANY_VALUE Ja
APPROX_QUANTILES Nein
APPROX_TOP_COUNT Nein
APPROX_TOP_SUM Nein
ARRAY_AGG Nein
ARRAY_CONCAT_AGG Nein
AVG Ja
BIT_AND Nein
BIT_OR Nein
BIT_XOR Nein
COUNT Ja
COUNTIF Ja
LOGICAL_AND Ja
LOGICAL_OR Ja
MAX Ja
MIN Ja
SUM Ja
CORR Ja
COVAR_POP Ja
COVAR_SAMP Ja
STDDEV_POP Ja
STDDEV_SAMP Ja
STDDEV Ja
STRING_AGG Nein
VAR_POP Ja
VAR_SAMP Ja
VARIANCE Ja
APPROX_COUNT_DISTINCT Ja

Analysefunktionen

Alle Analysefunktionen sind eingeschränkt.

Zusammenfassungen auf Nutzerebene

Wir erlauben alle aggregierten und Analysefunktionen in SELECT-Anweisungen, die nach user_id gruppieren oder partitionieren. Damit dies funktioniert, müssen alle vorherigen Joins deutlich machen, dass die Daten auf Nutzerebene bleiben. Dazu wird user_id verwendet, wie in diesem Beispiel:

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

Wenn dies nicht möglich ist, weil die IDs getrennt sind und nicht verknüpft werden, sollte die Abfrage nach allen unabhängigen IDs gruppieren oder partitionieren. Hier ein Beispiel:

SELECT
  a.user_id AS user_a,
  b.user_id AS user_b,
  ARRAY_AGG(DISTINCT campaign_id) campaigns
FROM
  adh.google_ads_impressions a
  JOIN adh.google_ads_impressions b USING (campaign_id)
GROUP BY 1, 2

Suchanfragen in der Nutzerliste

In Nutzerlistenabfragen sind Aggregatfunktionen zulässig und Analysefunktionen werden nicht unterstützt.