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