По соображениям конфиденциальности мы ограничиваем количество функций SQL, которые вы можете использовать в ADH.
Скалярные функции
Разрешены все скалярные функции, кроме следующих:
-
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
Аналитические запросы
Для запросов агрегированного анализа мы ограничиваем функции, объединяющие данные от нескольких пользователей. При обработке данных одного пользователя разрешены все агрегатные и аналитические функции. Подробности см. в разделе «Агрегации на уровне пользователя» ниже.
Агрегатные функции
Функция | Допустимый? |
---|---|
ANY_VALUE | Да |
APPROX_QUANTILES | Нет |
APPROX_TOP_COUNT | Нет |
APPROX_TOP_SUM | Нет |
ARRAY_AGG | Нет |
ARRAY_CONCAT_AGG | Нет |
AVG | Да |
BIT_AND | Нет |
BIT_OR | Нет |
BIT_XOR | Нет |
COUNT | Да |
COUNTIF | Да |
LOGICAL_AND | Да |
LOGICAL_OR | Да |
MAX | Да |
MIN | Да |
SUM | Да |
CORR | Да |
COVAR_POP | Да |
COVAR_SAMP | Да |
STDDEV_POP | Да |
STDDEV_SAMP | Да |
STDDEV | Да |
STRING_AGG | Нет |
VAR_POP | Да |
VAR_SAMP | Да |
VARIANCE | Да |
APPROX_COUNT_DISTINCT | Да |
Аналитические функции
Все аналитические функции ограничены.
Функции HyperLogLog++
Ads Data Hub поддерживает функции HyperLogLog++ (HLL++) . Однако они используют специализированные типы данных с большими ограничениями.
Поддерживаемые типы
Тип | Описание |
---|---|
ADH.USER_HLL | Скетч, агрегированный из значений типа ADH.USER_ID |
ADH.BYTE_HLL | Скетч, агрегированный из значений любого типа, не являющегося идентификатором. |
Эти типы поддерживают слияние и извлечение оценок кратности и не поддерживают прямое преобразование в любой другой тип. Их нельзя экспортировать напрямую из Ads Data Hub, поэтому перед достижением выходных данных запроса необходимо использовать HLL_COUNT.EXTRACT
или HLL_COUNT.MERGE
.
Эскизы HLL позволяют оценивать количество элементов на нескольких уровнях агрегирования, но учтите, что в Ads Data Hub они не дают существенного повышения производительности по сравнению с COUNT(DISTINCT)
на одном уровне.
Поддерживаемые функции
Имя функции | Поддерживаемые типы | Тип возврата |
---|---|---|
HLL_COUNT.EXTRACT | ADH.USER_HLL , ADH.BYTE_HLL | INT64 |
HLL_COUNT.INIT | Все стандартные поддерживаемые типы , ADH.USER_ID | ADH.USER_HLL для ввода ADH.USER_ID , в противном случае ADH.BYTE_HLL |
HLL_COUNT.INITNT.MERGE | ADH.USER_HLL , ADH.BYTE_HLL | INT64 |
HLL_COUNT.MERGE_PARTIAL | ADH.USER_HLL , ADH.BYTE_HLL | То же, что и тип ввода |
Ограничения
Внедрение шума: функции HLL++ не поддерживаются при выполнении запроса с использованием внедрения шума .
Агрегации на уровне пользователя
Мы разрешаем все агрегатные и аналитические функции в операторах SELECT
, которые группируются или разделяются по user_id
. Чтобы это работало, любые предыдущие объединения должны давать понять, что данные хранятся на уровне пользователя путем объединения по user_id
, как в этом примере:
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)
Запросы списка пользователей
В запросах списков пользователей разрешены агрегатные функции, а аналитические функции не поддерживаются.