निजता की वजह से, हम यह तय करते हैं कि ADH में कौनसे SQL फ़ंक्शन इस्तेमाल किए जा सकते हैं.
स्केलर फ़ंक्शन
इनके अलावा, सभी स्केलर फ़ंक्शन इस्तेमाल किए जा सकते हैं:
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 का इस्तेमाल करना होगा.
एचएलएल स्केच, एग्रीगेशन की कई लेयर में एलिमेंट की संख्या का अनुमान लगाने की सुविधा देते हैं. हालांकि, ध्यान दें कि Ads Data Hub में, ये एक लेयर में COUNT(DISTINCT) की तुलना में परफ़ॉर्मेंस में काफ़ी सुधार नहीं करते.
सहायता करने वाले फ़ंक्शन
| प्रकार्य का नाम | इस तरह के कोड काम करते हैं | रिटर्न टाइप |
|---|---|---|
HLL_COUNT.EXTRACT
|
ADH.USER_HLL,
ADH.BYTE_HLL |
INT64
|
HLL_COUNT.INIT
|
काम करने वाले सभी स्टैंडर्ड टाइप,
ADH.USER_ID |
ADH.USER_ID इनपुट के लिए ADH.USER_HLL,
अन्यथा 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)
उपयोगकर्ता सूची से जुड़ी क्वेरी
उपयोगकर्ता सूची क्वेरी में, एग्रीगेट फ़ंक्शन इस्तेमाल किए जा सकते हैं. हालांकि, विश्लेषण वाले फ़ंक्शन काम नहीं करते.