SQL फ़ंक्शन जिन्हें मंज़ूरी मिली है

निजता की वजह से, हम ADH में इस्तेमाल किए जाने वाले SQL फ़ंक्शन पर पाबंदी लगा देते हैं.

स्केलर फ़ंक्शन

इनके अलावा सभी स्केलर फ़ंक्शन की अनुमति है:

  • 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 हां

Analytic फ़ंक्शन

विश्लेषण करने के सभी फ़ंक्शन पर पाबंदी है.

उपयोगकर्ता-लेवल एग्रीगेशन

हम 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

उपयोगकर्ता सूची से जुड़ी क्वेरी

उपयोगकर्ता सूची क्वेरी में, एग्रीगेट फ़ंक्शन की अनुमति है, और विश्लेषण करने वाले फ़ंक्शन काम नहीं करते हैं.