מטעמי פרטיות, אנחנו מגבילים את הפונקציות של SQL שאפשר להשתמש בהן ב-ADH.
פונקציות סקלריות
מותר להשתמש בכל הפונקציות הסקלריות, מלבד הפונקציות הבאות:
ERRORST_AREAST_ASBINARYST_ASGEOJSONST_ASTEXTST_BOUNDARYST_CENTROIDST_CENTROID_AGGST_CLOSESTPOINTST_CLUSTERDBSCANST_CONTAINSST_CONVEXHULLST_COVEREDBYST_COVERSST_DIFFERENCEST_DIMENSIONST_DISJOINTST_DISTANCEST_DUMPST_DWITHINST_EQUALSST_GEOGFROMGEOJSONST_GEOGFROMTEXTST_GEOGFROMWKBST_GEOGPOINTST_GEOGPOINTFROMGEOHASHST_GEOHASHST_INTERSECTIONST_INTERSECTSST_INTERSECTSBOXST_ISCOLLECTIONST_ISEMPTYST_LENGTHST_MAKELINEST_MAKEPOLYGONST_MAKEPOLYGONORIENTEDST_MAXDISTANCEST_NPOINTSST_NUMPOINTSST_PERIMETERST_SIMPLIFYST_SNAPTOGRIDST_TOUCHESST_UNIONST_UNION_AGGST_WITHINST_XST_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_creative_conversions
USING(query_id, user_id)
GROUP BY user_id)
שאילתות של רשימות משתמשים
בשאילתות של רשימות משתמשים מותר להשתמש בפונקציות צבירה, ופונקציות ניתוח לא נתמכות.