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