פונקציות 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 סקיצה שמצטברת מערכים מכל סוג שאינו מזהה

הסוגים האלה תומכים במיזוג ובחילוץ של הערכות עוצמה (cardinality), ולא תומכים בהמרה מִכניסה ישירה לסוג אחר. אי אפשר לייצא אותם ישירות מ-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 for ADH.USER_ID input, otherwise 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;

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

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