تساعدك الجداول المؤقتة والجداول الثابتة في تبسيط طلبات البحث، ما يسهّل فهمها وصيانتها. من خلال إنشاء نتائج وسيطة يمكنك إعادة استخدامها، مع منحك خيار الاحتفاظ بالبيانات المؤقتة غير المجمّعة، يمكنك تقليل الموارد المطلوبة لتنفيذ طلبات البحث، ما يؤدي إلى تحسين الأداء.
تخضع الجداول التي تم إنشاؤها لعمليات التحقّق من الخصوصية الثابتة نفسها والوظائف المسموح بها وقيود ربط الحقول التي يتم فرضها في جميع أنحاء 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 EXISTSPARTITION BYCLUSTER 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، ثمّ سمِّ الجداول في وقت التشغيل.
إنشاء جداول BigQuery وتعديلها
يتيح "مركز بيانات الإعلانات" الاستخدام المباشر لعبارات BigQuery معيّنة في النصوص البرمجية، ما يتيح إدراج صفوف في جدول نتائج حالي بدلاً من إنشاء جدول جديد لكل مهمة. يجب أن تشير هذه العبارات إلى مسار جدول مباشر في مشروعك على BigQuery، ولا يمكنها الوصول مباشرةً إلى جداول أو خيارات Ads Data Hub (مثل privacy_checked_export).
العبارات المتوافقة:
مثال على طلب البحث:
-- Compute new data for the current job. This table can be used with MERGE.
CREATE TEMP TABLE new_data OPTIONS(privacy_checked_export=TRUE) AS
SELECT
DATE(event_time, @time_zone) AS event_date,
<more grouping keys>,
COUNT(*) AS impressions,
<more metrics>
FROM ...
GROUP BY ALL;
-- Initialize a result table on the first run of the query, which may include
-- date partitioning and/or clustering for efficiency.
CREATE TABLE IF NOT EXISTS PROJECT_NAME.DATASET.TABLE_NAME (<columns>)
PARTITION BY event_date CLUSTER BY ...
OPTIONS(partition_expiration_days=365);
-- Atomically insert new results or update existing ones.
MERGE PROJECT_NAME.DATASET.TABLE_NAME a
USING new_data b ON a.data_date = b.data_date AND <more grouping keys>
WHEN MATCHED THEN
UPDATE SET a.impressions = b.impressions, <more metrics>
WHEN NOT MATCHED THEN
INSERT (<all columns>) VALUES(<all columns>);
يُرجى العِلم أنّ عبارات MERGE لا تتيح تعديل مخطط الجدول. إذا كنت بحاجة إلى إضافة أعمدة أو تغييرها في جدول تقرير حالي، يمكنك تعديل مخطط الجدول في BigQuery قبل تنفيذ مهمة في "مركز بيانات الإعلانات"، أو تنفيذ مهمة في "مركز بيانات الإعلانات" لنسخ الجدول مع المخطط والخيارات المعدّلة، على سبيل المثال:
CREATE OR REPLACE TABLE PROJECT_NAME.DATASET.TABLE_NAME
PARTITION BY event_date CLUSTER BY ... OPTIONS(...) AS
SELECT
<new columns>
FROM PROJECT_NAME.DATASET.TABLE_NAME;