ایجاد جداول، ایجاد جداول، ایجاد جداول، ایجاد جداول

جداول موقت و جداول ماندگار به شما کمک می‌کنند تا پرس‌وجوها را ساده‌تر کنید، درک و نگهداری آنها را آسان‌تر کنید. با ایجاد نتایج میانی که می‌توانید دوباره از آنها استفاده کنید، ضمن اینکه به شما این امکان را می‌دهد که داده‌های موقت را به صورت غیر تجمیعی نگه دارید، می‌توانید منابع مورد نیاز برای اجرای پرس‌وجوها را کاهش داده و عملکرد را بهبود بخشید.

جداول ایجاد شده مشمول همان بررسی‌های حریم خصوصی استاتیک، توابع مجاز و محدودیت‌های اتصال فیلد هستند که در سراسر 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 استفاده کنید و سپس در زمان اجرا، جداول را نامگذاری کنید.