פונקציות 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

שאילתות ניתוח

בשאילתות ניתוח מצטברות, אנחנו מגבילים פונקציות שמשלבות נתונים מכמה משתמשים. מותר להשתמש בכל הפונקציות האנליטיות והפונקציות של צבירה כשמעובדים נתונים של משתמש יחיד. פרטים נוספים זמינים בקטע צבירת נתונים ברמת המשתמש בהמשך.

פונקציות צבירה

פונקציה מותר?
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)

שאילתות של רשימות משתמשים

בשאילתות של רשימות משתמשים מותר להשתמש בפונקציות צבירה, ופונקציות ניתוח לא נתמכות.