إنشاء الجداول

تساعدك الجداول المؤقتة والجداول الثابتة في تبسيط طلبات البحث، ما يسهّل فهمها وصيانتها. من خلال إنشاء نتائج وسيطة يمكنك إعادة استخدامها، مع إتاحة خيار الاحتفاظ بالبيانات المؤقتة غير مجمّعة، يمكنك تقليل الموارد المطلوبة لتنفيذ طلبات البحث، ما يؤدي إلى تحسين الأداء.

تخضع الجداول التي تم إنشاؤها لعمليات التحقّق من الخصوصية الثابتة والوظائف المسموح بها وقيود ربط الحقول نفسها التي يتم فرضها في جميع أنحاء 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. تبقى هذه الجداول صالحة لمدة 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 أيضًا بنية 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.
  • يتم إنشاء الجدول الثاني في الموقع الجغرافي المحدّد في حقل جدول الوجهة الخاص بوسيطات المهمة، مع العمود ct.

إضافة ملخّص للصفوف التي تمّت فلترتها

يمكن أيضًا إضافة ملخّص للأسطر التي تمّت فلترتها إلى هذه الجداول. مزيد من المعلومات حول ملخّصات الصفوف التي تم فلترتها

تسمية جداول متعددة في وقت التشغيل

عند إنشاء جداول متعدّدة في طلب بحث، تتوفّر طريقتان لتسميتها:

  • يجب تسمية الجداول بشكل صريح في SQL باستخدام التنسيق التالي: PROJECT_NAME.DATASET.TABLE_NAME.
  • استخدِم المَعلمات كعناصر نائبة في SQL، ثمّ سمِّ الجداول في وقت التشغيل.