Разрешенные функции SQL

В целях обеспечения конфиденциальности мы ограничиваем выбор 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;

Запросы к списку пользователей

В запросах к спискам пользователей допускаются агрегатные функции, аналитические функции не поддерживаются.