По соображениям конфиденциальности мы ограничиваем количество функций 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_creative_conversions
USING(query_id, user_id)
GROUP BY user_id)
Запросы списка пользователей
В запросах списков пользователей разрешены агрегатные функции, а аналитические функции не поддерживаются.