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

В целях обеспечения конфиденциальности мы запрещаем использовать в ADH некоторые функции SQL.

Скалярные функции

Разрешены все скалярные функции, кроме следующих:

  • 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++ не поддерживаются, если при выполнении запроса добавляется шум.

Агрегирование на уровне пользователя

Разрешено использовать все функции агрегирования и аналитические функции в инструкциях SQL 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)

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

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