יצירת טבלאות

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

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

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

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

כדי ליצור טבלת זמנית, משתמשים בהצהרת 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.
  • הטבלה השנייה נוצרת במיקום שצוין בשדה Destination table של ארגומנטי העבודה, עם העמודה ct.

הוספת סיכום של שורות שסוננו

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

מתן שמות לכמה טבלאות בזמן ריצה

כשיוצרים כמה טבלאות בשאילתה, יש שתי דרכים לתת להן שם:

  • צריך לציין את שמות הטבלאות ב-SQL באופן מפורש באמצעות הפורמט הבא: PROJECT_NAME.DATASET.TABLE_NAME.
  • משתמשים בפרמטרים כ-placeholder ב-SQL, ואז נותנים שמות לטבלאות בזמן הריצה.