יצירת טבלאות

טבלאות זמניות וטבלאות מתמידות עוזרות לייעל שאילתות, כך שיהיה קל יותר להבין אותן ולתחזק אותן. כשיוצרים תוצאות ביניים שאפשר לעשות בהן שימוש חוזר, תוך שמירה על הנתונים הזמניים ללא צבירת, אפשר לצמצם את המשאבים הנדרשים להרצת שאילתות ולשפר את הביצועים.

הטבלאות שנוצרות כפופות לאותן בדיקות פרטיות, פונקציות מותרות ומגבלות על צירופי שדות שחלות בכל 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

טבלאות זמניות

טבלאות זמניות (או temp) משפרות את הקריאוּת של השאילתות ומאפשרות ליצור תוצאות ביניים שלא כפופות לדרישות של צבירת נתונים או של חישוב ההבדל.

טבלאות זמניות:

  • קיימות רק ברמת הסשן ותוקפן פג אחרי ביצוע השאילתה
  • אפשר להשתמש בהן רק בתוך השאילתה שבה הן נוצרו
  • לא כפופים לדרישות של צבירה או פרטיות דיפרנציאלית
  • תמיכה במרחב השמות האופציונלי tmp

כדי ליצור טבלה זמנית, משתמשים בהצהרה 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 -- Alternative: tmp.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
);

שאילתה 2

-- Return creatives which had more than 100 impressions
SELECT
  creative_id,
  COUNT(*) AS imps
FROM
  tmp.creative_list
WHERE
  imps > 100;

החלת בדיקות פרטיות

מערכת 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 `myproject.mydataset.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_name.table_name>
  OPTIONS(privacy_checked_export=true) AS query_statement;

לדוגמה, כדי לייצא טבלה ליעד myproject.mydataset.mytable ב-BigQuery שמכילה את מספר השורות של כל מזהה קמפיין מהטבלה adh.google_ads_impressions:


CREATE TABLE `myproject.mydataset.mytable` OPTIONS(privacy_checked_export=true) AS
  SELECT campaign_id, COUNT(*) AS ct
  FROM adh.google_ads_impressions
  GROUP BY campaign_id;

אפשר גם להפנות לטבלאות באותה שאילתה שבה הן נוצרו. לדוגמה, השאילתה:


CREATE TABLE `myproject.mydataset.mytable` OPTIONS(privacy_checked_export=true) AS
  SELECT campaign_id, COUNT(*) AS ct
  FROM adh.google_ads_impressions
  GROUP BY campaign_id;
SELECT ct FROM `myproject.mydataset.mytable`;

הפונקציה מניבה שתי טבלאות:

  • אחת ב-myproject.mydataset.mytable, עם העמודות campaign_id ו-ct
  • אחת במיקום שצוין בשדה Destination table של ארגומנטים המשימה, עם העמודה ct

אפשר גם להוסיף לטבלאות האלה סיכום של שורות מסוננות. מידע נוסף על סיכומי שורות מסוננות