टेम्पररी टेबल और परसिस्टेंट टेबल की मदद से, क्वेरी को आसानी से समझा और मैनेज किया जा सकता है. क्वेरी को चलाने के लिए ज़रूरी संसाधनों को कम किया जा सकता है. इसके लिए, ऐसे इंटरमीडिएट नतीजे बनाएं जिनका दोबारा इस्तेमाल किया जा सके. साथ ही, आपको कुछ समय के लिए उपलब्ध डेटा को इकट्ठा न करने का विकल्प भी मिलता है. इससे परफ़ॉर्मेंस बेहतर होती है.
बनाई गई टेबल पर, स्टैटिक निजता जांच, अनुमति वाले फ़ंक्शन, और फ़ील्ड जॉइन करने की सीमाएं लागू होती हैं. ये सीमाएं, Ads Data Hub में हर जगह लागू होती हैं. BigQuery में फ़ाइनल SELECT स्टेटमेंट से डेटा आउटपुट करते समय, निजता की सामान्य जांच लागू होती हैं.
टेबल बनाने के लिए, BigQuery के सिंटैक्स का पालन करें:
CREATE [OR REPLACE] [TEMP | TEMPORARY] TABLE TABLE_NAME
[OPTIONS(privacy_checked_export=<true | false>)] AS query_statement;
इन क्लॉज़ का इस्तेमाल नहीं किया जा सकता:
IF NOT EXISTSPARTITION BYCLUSTER BY
अस्थायी टेबल
अस्थायी (या temp) टेबल से क्वेरी को आसानी से समझा जा सकता है. साथ ही, इससे आपको ऐसे इंटरमीडिएट नतीजे बनाने में मदद मिलती है जिनमें बिना एग्रीगेट किया गया डेटा शामिल हो सकता है.
अस्थायी टेबल:
- ये सिर्फ़ सेशन लेवल पर मौजूद होते हैं और क्वेरी एक्ज़ीक्यूट होने के बाद इनकी समयसीमा खत्म हो जाती है
- इसका इस्तेमाल सिर्फ़ उस क्वेरी में किया जा सकता है जिसमें इसे बनाया गया था
- यह कुकी, ऐसे डेटा को सेव कर सकती है जिसे एग्रीगेट नहीं किया गया है और जिस पर निजता से जुड़ी जांचें अब तक लागू नहीं की गई हैं
- इनके नाम का रेफ़रंस दिया गया है, लेकिन ज़रूरी नेमस्पेस मौजूद नहीं है
टेम्प टेबल बनाने के लिए, CREATE TEMP TABLE स्टेटमेंट का इस्तेमाल करें. इस उदाहरण में, क्वेरी के नतीजों को सेव करने के लिए एक अस्थायी टेबल बनाई गई है. इसके बाद, सबक्वेरी में अस्थायी टेबल का इस्तेमाल किया गया है:
-- Get a list of creative IDs and store in a temporary table called creative_list:
CREATE TEMP TABLE creative_list AS (
SELECT
adgroup_id,
advertiser_id,
creative_id
FROM
adh.dv360_youtube_impressions
);
-- Return creatives with a count of impressions greater than 100
SELECT
creative_id,
COUNT(*) AS imps
FROM
creative_list
WHERE
imps > 100
GROUP BY
creative_id;
परसिस्टेंट टेबल
अगर आपको अन्य क्वेरी में इस्तेमाल करने के लिए इंटरमीडिएट टेबल बनानी है, तो परसिस्टेंट टेबल बनाएं. सिंटैक्स, अस्थायी टेबल के लिए इस्तेमाल किए जाने वाले सिंटैक्स जैसा ही होता है. हालांकि, इसमें TEMP क्लॉज़ शामिल नहीं होता. ये टेबल 72 घंटे तक सेव रहती हैं. अगर चुने गए नाम की कोई टेबल पहले से मौजूद है, तो उसे बदल दिया जाता है.
परसिस्टेंट टेबल में, इकट्ठा न किया गया डेटा सेव किया जा सकता है. हालांकि, टेबल का कॉन्टेंट सिर्फ़ निजता की जांच किए गए क्वेरी के नतीजों के ज़रिए देखा जा सकता है.
परसिस्टेंट टेबल:
- 72 घंटे बाद खत्म हो जाएगी
- इसका इस्तेमाल, उस क्वेरी के बाहर किया जा सकता है जिसने इसे बनाया है
- यह कुकी, ऐसे डेटा को सेव कर सकती है जिसे एग्रीगेट नहीं किया गया है और जिस पर निजता से जुड़ी जांचें अब तक लागू नहीं की गई हैं
tmpनेमस्पेस के ज़रिए रेफ़र किए जाते हैं. हालांकि, इन्हें एक ही क्वेरी में नाम के हिसाब से भी रेफ़र किया जा सकता है
परसिस्टेंट टेबल बनाने के लिए, CREATE TABLE स्टेटमेंट का इस्तेमाल करें. इस उदाहरण में, क्वेरी के नतीजों को सेव करने के लिए एक परसिस्टेंट टेबल बनाई गई है. इसके बाद, परसिस्टेंट टेबल का इस्तेमाल बाद की क्वेरी में किया गया है:
क्वेरी 1
-- Get a list of creative IDs and store in a persistent table called creative_list:
CREATE TABLE creative_list AS (
SELECT
adgroup_id,
advertiser_id,
creative_id
FROM
adh.dv360_youtube_impressions
);
-- Return the total count of impressions in the table
SELECT
COUNT(*) AS imps
FROM
tmp.creative_list -- Alternative: creative_list
क्वेरी 2
-- Return creatives which had more than 100 impressions
SELECT
creative_id,
COUNT(*) AS imps
FROM
tmp.creative_list
WHERE
imps > 100
GROUP BY
creative_id;
निजता जांच लागू करना
Ads Data Hub, एसक्यूएल सिंटैक्स का भी इस्तेमाल करता है. इससे, निजता से जुड़ी जांच के दायरे में आने वाली इंटरमीडिएट नतीजे वाली टेबल बनाई जा सकती हैं.
निजता जांच के दायरे में आने वाली टेबल बनाने के लिए, अपनी क्वेरी में OPTIONS क्लॉज़ जोड़ें:
OPTIONS(privacy_checked_export=true)
इस उदाहरण में, सेशन-लेवल की एक अस्थायी टेबल बनाई गई है और निजता की जांच लागू की गई है:
-- Get a list of creative IDs and store in a temporary table called creative_list:
CREATE TEMP TABLE creative_list OPTIONS(privacy_checked_export=true) AS (
SELECT
adgroup_id,
advertiser_id,
creative_id
FROM
adh.dv360_youtube_impressions
);
इस उदाहरण में, एक परसिस्टेंट टेबल बनाई गई है. साथ ही, इसमें निजता से जुड़ी जांच की गई है और इसे आपके Google Cloud प्रोजेक्ट में एक्सपोर्ट किया गया है:
-- Get a list of creative IDs and store in a persistent table called creative_list:
CREATE TABLE project_name.dataset_name.creative_list` OPTIONS(privacy_checked_export=true) AS (
SELECT
adgroup_id,
advertiser_id,
creative_id
FROM
adh.dv360_youtube_impressions
);
एक ही क्वेरी का इस्तेमाल करके, कई टेबल एक्सपोर्ट करना
Ads Data Hub, SQL सिंटैक्स का इस्तेमाल करके, दिखने वाली नतीजों की टेबल एक्सपोर्ट करने की सुविधा देता है. ऐसा उन मामलों में किया जाता है जहां हर क्वेरी के लिए एक टेबल काफ़ी नहीं होती. इन टेबल पर, वही निजता जांच लागू होती है जो Ads Data Hub में लागू होती है.
मुख्य एसक्यूएल एक्सप्रेशन के साथ-साथ किसी टेबल को एक्सपोर्ट करने का सिंटैक्स यह है:
CREATE TABLE PROJECT_NAME.DATASET.TABLE_NAME
OPTIONS(privacy_checked_export=true) AS query_statement;
उदाहरण के लिए, किसी टेबल को BigQuery डेस्टिनेशन PROJECT_NAME.DATASET.TABLE_NAME में एक्सपोर्ट करने के लिए, जिसमें टेबल adh.google_ads_impressions से हर कैंपेन आईडी के लिए पंक्तियों की संख्या शामिल है:
CREATE TABLE PROJECT_NAME.DATASET.TABLE_NAME
OPTIONS(privacy_checked_export=true) AS
SELECT campaign_id, COUNT(*) AS ct
FROM adh.google_ads_impressions
GROUP BY campaign_id;
यहां दिए गए उदाहरण में, इस आइडिया के बारे में ज़्यादा जानकारी दी गई है. साथ ही, BigQuery में दो टेबल एक्सपोर्ट करने के लिए, एक ही क्वेरी का इस्तेमाल किया गया है:
CREATE TABLE PROJECT_NAME.DATASET.TABLE_NAME
OPTIONS(privacy_checked_export=true) AS
SELECT campaign_id, COUNT(*) AS ct
FROM adh.google_ads_impressions
GROUP BY campaign_id;
CREATE TABLE PROJECT_NAME.DATASET.TABLE_NAME_2
OPTIONS(privacy_checked_export=true) AS
SELECT advertiser_id, COUNT(*) AS ct
FROM adh.google_ads_impressions
GROUP BY advertiser_id;
टेबल को उसी क्वेरी में भी रेफ़र किया जा सकता है जिसमें उन्हें बनाया गया था. उदाहरण के लिए, यहां दी गई क्वेरी से दो टेबल मिलती हैं:
CREATE TABLE PROJECT_NAME.DATASET.TABLE_NAME
OPTIONS(privacy_checked_export=true) AS
SELECT campaign_id, COUNT(*) AS ct
FROM adh.google_ads_impressions
GROUP BY campaign_id;
SELECT ct FROM PROJECT_NAME.DATASET.TABLE_NAME;
- पहली टेबल
PROJECT_NAME.DATASET.TABLE_NAMEपर बनाई गई है. इसमेंcampaign_idऔरctकॉलम हैं. - दूसरी टेबल, नौकरी के तर्कों के डेस्टिनेशन टेबल फ़ील्ड में दी गई जगह पर बनाई जाती है. इसमें
ctकॉलम होता है.
फ़िल्टर की गई लाइन की खास जानकारी जोड़ना
इन टेबल में, फ़िल्टर की गई लाइन की खास जानकारी भी जोड़ी जा सकती है. फ़िल्टर की गई लाइन की खास जानकारी के बारे में पढ़ें.
रनटाइम के दौरान कई टेबल के नाम देना
क्वेरी में एक से ज़्यादा टेबल बनाते समय, उन्हें नाम देने के दो तरीके हैं:
- एसक्यूएल में टेबल के नाम साफ़ तौर पर बताएं. इसके लिए, इस फ़ॉर्मैट का इस्तेमाल करें:
PROJECT_NAME.DATASET.TABLE_NAME. - एसक्यूएल में पैरामीटर को प्लेसहोल्डर के तौर पर इस्तेमाल करें. इसके बाद, रनटाइम में टेबल के नाम डालें.