جداول موقت و جداول ماندگار به شما کمک میکنند تا پرسوجوها را سادهتر کنید، درک و نگهداری آنها را آسانتر کنید. با ایجاد نتایج میانی که میتوانید دوباره از آنها استفاده کنید، ضمن اینکه به شما این امکان را میدهد که دادههای موقت را به صورت غیر تجمیعی نگه دارید، میتوانید منابع مورد نیاز برای اجرای پرسوجوها را کاهش داده و عملکرد را بهبود بخشید.
جداول ایجاد شده مشمول همان بررسیهای حریم خصوصی استاتیک، توابع مجاز و محدودیتهای اتصال فیلد هستند که در سراسر Ads Data Hub اعمال میشوند. بررسیهای استاندارد حریم خصوصی زمانی اعمال میشوند که دادههای حاصل از دستور SELECT نهایی به BigQuery ارسال شوند.
برای ایجاد جداول، از سینتکس BigQuery پیروی کنید:
CREATE [OR REPLACE] [TEMP | TEMPORARY] TABLE TABLE_NAME
[OPTIONS(privacy_checked_export=<true | false>)] AS query_statement;
این بندها پشتیبانی نمیشوند:
-
IF NOT EXISTS -
PARTITION BY -
CLUSTER BY
جداول موقت
جداول موقت (یا موقت ) خوانایی پرسوجو را بهبود میبخشند و به شما امکان میدهند نتایج میانی ایجاد کنید که ممکن است شامل دادههای تجمیعنشده باشند.
جداول دما:
- فقط در سطح جلسه وجود دارد و پس از اجرای پرس و جو منقضی میشود
- فقط میتواند درون کوئری که در آن ایجاد شده است، استفاده شود.
- ممکن است دادههای تجمیعنشدهای را ذخیره کند که هنوز بررسیهای حریم خصوصی روی آنها اعمال نشده است
- بدون نیاز به فضای نام، با نام ارجاع داده میشوند
برای ایجاد یک جدول موقت، از دستور 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 . این جداول به مدت ۷۲ ساعت دوام میآورند. اگر جدولی با نام انتخاب شده از قبل وجود داشته باشد، روی آن رونویسی میشود.
جداول دائمی ممکن است دادههای تجمیعنشده را ذخیره کنند، اما محتویات جدول به جز از طریق نتایج پرسوجوی بررسیشده از نظر حریم خصوصی، قابل مشاهده نیستند.
جداول ماندگار:
- انقضا پس از ۷۲ ساعت
- میتواند خارج از کوئری که آن را ایجاد کرده است، استفاده شود.
- ممکن است دادههای تجمیعنشدهای را ذخیره کند که هنوز بررسیهای حریم خصوصی روی آنها اعمال نشده است
- از طریق فضای نام
tmpارجاع داده میشوند، اما میتوانند در همان پرسوجو توسط نام نیز ارجاع داده شوند.
برای ایجاد یک جدول ماندگار، از دستور CREATE TABLE استفاده کنید. این مثال یک جدول ماندگار برای ذخیره نتایج یک پرسوجو ایجاد میکند، سپس از جدول ماندگار در پرسوجوی بعدی استفاده میکند:
پرس و جو ۱
-- 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
پرس و جو ۲
-- 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) همچنین از سینتکس SQL برای ایجاد جداول نتایج میانی که تحت بررسیهای حریم خصوصی هستند، پشتیبانی میکند.
برای ایجاد جدولی که مشمول بررسیهای حریم خصوصی باشد، عبارت 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) قرار دارند.
سینتکس خروجی گرفتن از یک جدول در کنار عبارت اصلی SQL به صورت زیر است:
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در آن قرار دارند. - جدول دوم در مکانی که در فیلد جدول مقصد (Destination table) از آرگومانهای job مشخص شده است، با ستون
ctایجاد میشود.
اضافه کردن خلاصه ردیف فیلتر شده
همچنین میتوان خلاصهای از سطرهای فیلتر شده را به این جداول اضافه کرد. درباره خلاصه سطرهای فیلتر شده بخوانید .
نامگذاری چندین جدول در زمان اجرا
هنگام ایجاد چندین جدول در یک پرس و جو، دو روش برای نامگذاری آنها وجود دارد:
- جداول را به طور صریح در SQL با استفاده از قالب زیر نامگذاری کنید:
PROJECT_NAME.DATASET.TABLE_NAME. - از پارامترها به عنوان placeholder در SQL استفاده کنید و سپس در زمان اجرا، جداول را نامگذاری کنید.