מטעמי פרטיות, אנחנו מגבילים את הפונקציות של 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 |
שרטוט שמצטבר מערכים מכל סוג שהוא לא מזהה |
הסוגים האלה תומכים במיזוג וחילוץ לאומדני עוצמה (cardinality),
לתמוך בהמרה ישירה לכל סוג אחר. לא ניתן לייצא אותם באופן ישיר
מ-Ads Data Hub, ולכן הם צריכים להשתמש ב-HLL_COUNT.EXTRACT
או ב-HLL_COUNT.MERGE
לפני שמגיעים לפלט השאילתה.
תרשימי HLL מאפשרים הערכת עוצמה (cardinality) על פני מספר שכבות של
אבל שימו לב שב-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)
שאילתות לגבי רשימת משתמשים
בשאילתות של רשימות משתמשים, מותר להשתמש בפונקציות צבירה ובפונקציות אנליטיות פשוט לא נתמכים.