פונקציות 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 כן

פונקציות ניתוחיות

כל הפונקציות לניתוח נתונים מוגבלות.

צבירה ברמת המשתמש

אנחנו מאפשרים את כל הפונקציות המצטברות והניתוחים בהצהרות של SELECT שמקבצים או מחלקים לפי user_id. כדי שהשיטה הזו תפעל, כל תהליכי ההצטרפות הקודמים חייבים להבהיר שהנתונים נשמרים ברמת המשתמש על ידי הצטרפות בתאריך user_id, כמו בדוגמה הבאה:

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

אם זה לא אפשרי מפני שהמזהים נפרדים זה מזה ולא מצטרפים אליהם, השאילתה צריכה לקבץ או לחלק אותם לפי כל המזהה העצמאי, כמו בדוגמה הבאה:

SELECT
  a.user_id AS user_a,
  b.user_id AS user_b,
  ARRAY_AGG(DISTINCT campaign_id) campaigns
FROM
  adh.google_ads_impressions a
  JOIN adh.google_ads_impressions b USING (campaign_id)
GROUP BY 1, 2

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

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