В целях обеспечения конфиденциальности мы ограничиваем выбор 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
Аналитические запросы
Для запросов агрегированного анализа мы ограничиваем использование функций, объединяющих данные от нескольких пользователей. Все агрегирующие и аналитические функции разрешены при обработке данных одного пользователя. Подробнее см. раздел «Агрегация на уровне пользователя» .
Совокупные функции
Для агрегирования данных по всем пользователям разрешены следующие функции:
-
SUM -
COUNT -
COUNTIF -
APPROX_COUNT_DISTINCT -
AVG
В режиме проверки конфиденциальности также разрешены следующие функции:
-
ANY_VALUE -
LOGICAL_AND -
LOGICAL_OR -
MAX -
MIN -
CORR -
COVAR_POP -
COVAR_SAMP -
STDDEV_POP -
STDDEV_SAMP -
STDDEV -
VAR_POP -
VAR_SAMP -
VARIANCE
Подробную информацию о дополнительных функциях и возможностях, специфичных для работы с шумом, см. в разделе "Введение шума" .
Аналитические функции
Все аналитические функции ограничены.
Функции 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;
Запросы к списку пользователей
В запросах к спискам пользователей допускаются агрегатные функции, аналитические функции не поддерживаются.