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

הסוגים האלה תומכים במיזוג וחילוץ לאומדני עוצמה (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)

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

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