טעינת נתונים של Campaign Manager לתוך BigQuery

אפשר לטעון נתונים מ-Campaign Manager ל-BigQuery באמצעות המחבר של שירות העברת נתונים ל-BigQuery ב-Campaign Manager. שירות העברת הנתונים ל-BigQuery מאפשר לתזמן משימות העברה חוזרות שמוסיפות את הנתונים העדכניים מ-Campaign Manager ל-BigQuery.

סקירה כללית של מחברים

שירות העברת הנתונים ל-BigQuery עבור המחבר של Campaign Manager תומך באפשרויות הבאות להעברת נתונים.

מידע על האופן שבו דוחות של Campaign Manager עוברים טרנספורמציה לטבלאות ולתצוגות ב-BigQuery זמין במאמר טרנספורמציות של דוחות Campaign Manager.

אפשרויות להעברת נתונים תמיכה
דוחות נתמכים מחבר Campaign Manager תומך בהעברת נתונים מהדוחות הבאים:
תדירות החזרה מחבר Campaign Manager תומך בהעברת נתונים כל 8 שעות.

כברירת מחדל, העברות נתונים ב-Campaign Manager מתוזמנות לזמן שבו נוצרת העברת הנתונים.
רענון החלון המחבר של Campaign Manager מאחזר נתונים מ-Campaign Manager עד יומיים לפני מועד הפעלת העברת הנתונים. אי אפשר להגדיר את חלון הרענון למחבר הזה.

מידע נוסף זמין במאמר בנושא חלונות רענון.
זמינות של נתונים להשלמת חוסר (data backfill) מריצים השלמת חוסר בנתונים כדי לאחזר נתונים שלא נכללים בהעברת הנתונים המתוזמנת. אפשר לאחזר נתונים עד לתקופה שמוגדרת במדיניות שמירת הנתונים במקור הנתונים.

מידע על מדיניות שמירת הנתונים ב-Display & Video 360 זמין במאמר אמצעי הבקרה למחיקה ולשמירה של נתונים.

העברת נתונים מ-Campaign Manager

כשמעבירים נתונים מ-Campaign Manager ל-BigQuery, הנתונים נטענים לטבלאות BigQuery שמחולקות למחיצות לפי תאריך. מחיצת הטבלה שאליה נטען הנתון תואמת לתאריך ממקור הנתונים. אם מתזמנים כמה העברות לאותו תאריך, שירות העברת הנתונים ל-BigQuery מחליף את המחיצה של התאריך הספציפי הזה בנתונים העדכניים ביותר. העברות מרובות באותו יום או הרצות של מילוי חוסרים לא גורמות לשכפול נתונים, והמחיצות של תאריכים אחרים לא מושפעות.

רענון חלונות

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

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

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

לפני שמתחילים

לפני שיוצרים העברת נתונים ב-Campaign Manager:

  • מוודאים שביצעתם את כל הפעולות שנדרשות כדי להפעיל את שירות העברת נתונים ל-BigQuery.
  • יוצרים מערך נתונים ב-BigQuery לאחסון הנתונים של Campaign Manager.
  • מוודאים שיש לארגון שלכם גישה לקבצים של העברת נתונים ב-Campaign Manager גרסה 2 (Campaign Manager DTv2). הקבצים האלה מועברים על ידי צוות Campaign Manager לקטגוריה של Cloud Storage. כדי לקבל גישה לקבצים של Campaign Manager DTv2, השלב הבא תלוי בשאלה אם יש לכם חוזה ישיר עם Campaign Manager. בשני המקרים, יכול להיות שיחולו חיובים נוספים.

    • אם יש לכם חוזה עם Campaign Manager, אתם יכולים לפנות אל התמיכה של Campaign Manager כדי להגדיר קבצים של Campaign Manager DTv2.
    • אם אין לכם חוזה עם Campaign Manager, יכול להיות שלסוכנות או למפיץ המשנה שלכם ב-Campaign Manager יש גישה לקבצים של Campaign Manager DTv2. כדי לקבל גישה לקבצים האלה, צריך לפנות לסוכנות או למפיץ.

    אחרי שתשלימו את השלב הזה, תקבלו שם של קטגוריה ב-Cloud Storage, כמו בדוגמה הבאה:

    dcdt_-dcm_account123456

  • אם אתם רוצים להגדיר התראות על הפעלת העברה ב-Pub/Sub, אתם צריכים הרשאות pubsub.topics.setIamPolicy. מידע נוסף זמין במאמר בנושא התראות על הפעלת שירות העברת נתונים ל-BigQuery.

ההרשאות הנדרשות

ודאו שהענקתם את ההרשאות הבאות.

התפקידים הנדרשים ב-BigQuery

כדי לקבל את ההרשאות שנדרשות ליצירת העברת נתונים באמצעות שירות העברת נתונים ל-BigQuery, צריך לבקש מהאדמין להקצות לכם את תפקיד BigQuery Admin ‏ (roles/bigquery.admin) ב-IAM בפרויקט. להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.

התפקיד המוגדר מראש הזה כולל את ההרשאות שנדרשות ליצירת העברת נתונים בשירות העברת נתונים ל-BigQuery. כדי לראות בדיוק אילו הרשאות נדרשות, אפשר להרחיב את הקטע ההרשאות הנדרשות:

ההרשאות הנדרשות

כדי ליצור העברת נתונים באמצעות שירות העברת הנתונים ל-BigQuery, נדרשות ההרשאות הבאות:

  • הרשאות של שירות העברת נתונים ל-BigQuery:
    • bigquery.transfers.update
    • bigquery.transfers.get
  • הרשאות ב-BigQuery:
    • bigquery.datasets.get
    • bigquery.datasets.getIamPolicy
    • bigquery.datasets.update
    • bigquery.datasets.setIamPolicy
    • bigquery.jobs.create

יכול להיות שתקבלו את ההרשאות האלה באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש אחרים.

מידע נוסף מופיע במאמר בנושא מתן גישה ל-bigquery.admin.

התפקידים הנדרשים ב-Campaign Manager

נותנים הרשאת קריאה לקבצים של Campaign Manager DTv2 שמאוחסנים ב-Cloud Storage. הגישה מנוהלת על ידי הישות שממנה קיבלתם את הקטגוריה של Cloud Storage.

הגדרת העברה ב-Campaign Manager

כדי להגדיר העברת נתונים מ-Campaign Manager, צריך:

  • קטגוריה של Cloud Storage: ה-URI של הקטגוריה של Cloud Storage עבור קבצי Campaign Manager DTV2, כפי שמתואר במאמר לפני שמתחילים. שם הקטגוריה צריך להיראות כך:

    dcdt_-dcm_account123456

  • מזהה ב-Campaign Manager: מזהה הרשת, המפרסם או Floodlight ב-Campaign Manager. מזהה הרשת הוא ההורה בהיררכיה.

איך מוצאים את המזהה ב-Campaign Manager

כדי לאחזר את מזהה Campaign Manager, אפשר להשתמש במסוף Cloud Storage כדי לבדוק את הקבצים בדלי Cloud Storage של העברת הנתונים ב-Campaign Manager. המזהה של Campaign Manager משמש להתאמת קבצים בקטגוריה של Cloud Storage שצוינה. המזהה מוטמע בשם הקובץ, ולא בשם הקטגוריה של Cloud Storage.

לדוגמה:

  • בקובץ בשם dcm_account123456_activity_*, המזהה הוא 123456.
  • בקובץ בשם dcm_floodlight7890_activity_*, המזהה הוא 7890.
  • בקובץ בשם dcm_advertiser567_activity_*, המזהה הוא 567.

איך מוצאים את הקידומת של שם הקובץ

במקרים נדירים, יכול להיות שלקבצים בקטגוריה של Cloud Storage יש שמות קבצים מותאמים אישית ולא סטנדרטיים שהוגדרו בשבילכם על ידי צוות השירותים של Google Marketing Platform.

לדוגמה:

  • בקובץ בשם dcm_account123456custom_activity_*, הקידומת היא dcm_account123456custom – כל מה שלפני _activity.

אם אתם צריכים עזרה, אתם יכולים לפנות אל התמיכה של Campaign Manager.

יצירת העברת נתונים ל-Campaign Manager

המסוף

  1. עוברים לדף 'העברות נתונים' במסוף Google Cloud .

    מעבר אל "העברות נתונים"

  2. לוחצים על Create transfer (יצירת העברה).

  3. בדף Create Transfer:

    • בקטע Source type (סוג המקור), בשדה Source (מקור), בוחרים באפשרות Campaign Manager.

      מקור ההעברה

    • בקטע שם הגדרת ההעברה, בשדה שם מוצג, מזינים שם להעברת הנתונים, למשל My Transfer. שם ההעברה יכול להיות כל ערך שיעזור לכם לזהות את ההעברה אם תצטרכו לשנות אותה בהמשך.

      שם ההעברה

    • בקטע אפשרויות תזמון, משאירים את ערך ברירת המחדל (התחלה מיידית) בשדה תזמון או לוחצים על התחלה בשעה מוגדרת.

      • בקטע חזרה, בוחרים את התדירות שבה רוצים להפעיל את ההעברה. אם בוחרים באפשרות אחרת מלבד יומי, מוצגות אפשרויות נוספות. לדוגמה, אם בוחרים באפשרות מדי שבוע, מופיעה אפשרות לבחירת היום בשבוע.
      • בשדה תאריך התחלה ושעת הפעלה, מזינים את התאריך והשעה שבהם רוצים להתחיל את העברת הנתונים. אם בוחרים באפשרות Start now (אני רוצה להתחיל), האפשרות הזו מושבתת.
    • בקטע הגדרות יעד, בשדה מערך נתונים של היעד, בוחרים את מערך הנתונים שיצרתם לאחסון הנתונים.

      העברת מערך נתונים

    • בקטע פרטי מקור הנתונים:

      • בשדה Cloud Storage bucket (קטגוריה של Cloud Storage), מזינים את השם של הקטגוריה של Cloud Storage שבה מאוחסנים הקבצים של העברת נתונים V2.0 או מחפשים אותה. כשמזינים את שם הקטגוריה, לא כוללים את gs://.
      • בשדה מזהה DoubleClick, מזינים את המזהה המתאים ב-Campaign Manager.
      • (אופציונלי) אם הקבצים שלכם כוללים שמות סטנדרטיים כמו בדוגמאות האלה, משאירים את השדה File name prefix (קידומת של שם הקובץ) ריק. מציינים תחילית של שם קובץ אם לקבצים בקטגוריה של Cloud Storage יש שמות קבצים מותאמים אישית.

      פרטי המקור ב-Campaign Manager

    • (אופציונלי) בקטע אפשרויות להתראות:

      • לוחצים על המתג כדי להפעיל התראות באימייל. כשמפעילים את האפשרות הזו, האדמין של ההעברה מקבל התראה באימייל אם ההעברה נכשלת.
      • בקטע Select a Pub/Sub topic, בוחרים את שם הנושא או לוחצים על Create a topic. האפשרות הזו מגדירה התראות על הפעלת Pub/Sub להעברה.
  4. לוחצים על Save.

BQ

מזינים את הפקודה bq mk ומספקים את האפשרות ליצירת העברה – --transfer_config. נדרשים גם הדגלים הבאים:

  • --data_source
  • --target_dataset
  • --display_name
  • --params
bq mk --transfer_config \
--project_id=project_id \
--target_dataset=dataset \
--display_name=name \
--params='parameters' \
--data_source=data_source

כאשר:

  • project_id הוא מזהה הפרויקט.
  • dataset הוא מערך הנתונים של היעד להגדרת העברת הנתונים.
  • name הוא השם המוצג של הגדרת העברת הנתונים. שם ההעברה יכול להיות כל ערך שיאפשר לכם לזהות את ההעברה אם תצטרכו לשנות אותה בהמשך.
  • parameters מכיל את הפרמטרים של הגדרת העברת הנתונים שנוצרה בפורמט JSON. לדוגמה: --params='{"param":"param_value"}'. ב-Campaign Manager, צריך לספק את הפרמטרים bucket ו-network_id. ‫bucket היא קטגוריית Cloud Storage שמכילה את קובצי DTv2 של Campaign Manager. ‫network_id הוא מזהה הרשת, מזהה ה-Floodlight או מזהה המפרסם.
  • data_source הוא מקור הנתונים – dcm_dt (Campaign Manager).

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

לדוגמה, הפקודה הבאה יוצרת העברת נתונים של Campaign Manager בשם My Transfer באמצעות מזהה Campaign Manager‏ 123456, קטגוריית Cloud Storage‏ dcdt_-dcm_account123456 ומערך נתונים של יעד mydataset. הפרמטר file_name_prefix הוא אופציונלי ומשמש רק לשמות קבצים מותאמים אישית נדירים.

העברת הנתונים נוצרת בפרויקט ברירת המחדל:

bq mk --transfer_config \
--target_dataset=mydataset \
--display_name='My Transfer' \
--params='{"bucket": "dcdt_-dcm_account123456","network_id": "123456","file_name_prefix":"YYY"}' \
--data_source=dcm_dt

אחרי הרצת הפקודה, תקבלו הודעה כמו זו:

[URL omitted] Please copy and paste the above URL into your web browser and follow the instructions to retrieve an authentication code.

פועלים לפי ההוראות ומדביקים את קוד האימות בשורת הפקודה.

API

משתמשים בשיטה projects.locations.transferConfigs.create ומספקים מופע של המשאב TransferConfig.

Java

לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Javaהוראות ההגדרה שבמדריך למתחילים של BigQuery באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של BigQuery Java API.

כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.

import com.google.api.gax.rpc.ApiException;
import com.google.cloud.bigquery.datatransfer.v1.CreateTransferConfigRequest;
import com.google.cloud.bigquery.datatransfer.v1.DataTransferServiceClient;
import com.google.cloud.bigquery.datatransfer.v1.ProjectName;
import com.google.cloud.bigquery.datatransfer.v1.TransferConfig;
import com.google.protobuf.Struct;
import com.google.protobuf.Value;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

// Sample to create campaign manager transfer config
public class CreateCampaignmanagerTransfer {

  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace these variables before running the sample.
    final String projectId = "MY_PROJECT_ID";
    String datasetId = "MY_DATASET_ID";
    String bucket = "gs://cloud-sample-data";
    // the network_id only allows digits
    String networkId = "7878";
    String fileNamePrefix = "test_";
    Map<String, Value> params = new HashMap<>();
    params.put("bucket", Value.newBuilder().setStringValue(bucket).build());
    params.put("network_id", Value.newBuilder().setStringValue(networkId).build());
    params.put("file_name_prefix", Value.newBuilder().setStringValue(fileNamePrefix).build());
    TransferConfig transferConfig =
        TransferConfig.newBuilder()
            .setDestinationDatasetId(datasetId)
            .setDisplayName("Your Campaignmanager Config Name")
            .setDataSourceId("dcm_dt")
            .setParams(Struct.newBuilder().putAllFields(params).build())
            .build();
    createCampaignmanagerTransfer(projectId, transferConfig);
  }

  public static void createCampaignmanagerTransfer(String projectId, TransferConfig transferConfig)
      throws IOException {
    try (DataTransferServiceClient client = DataTransferServiceClient.create()) {
      ProjectName parent = ProjectName.of(projectId);
      CreateTransferConfigRequest request =
          CreateTransferConfigRequest.newBuilder()
              .setParent(parent.toString())
              .setTransferConfig(transferConfig)
              .build();
      TransferConfig config = client.createTransferConfig(request);
      System.out.println("Campaignmanager transfer created successfully :" + config.getName());
    } catch (ApiException ex) {
      System.out.print("Campaignmanager transfer was not created." + ex.toString());
    }
  }
}

פתרון בעיות בהגדרת העברה ב-Campaign Manager

אם נתקלתם בבעיות בהגדרת העברת הנתונים, כדאי לעיין במאמר פתרון בעיות בהגדרות העברה בקטע בעיות בהעברה מ-Campaign Manager.

שאילתות על הנתונים

כשמעבירים את הנתונים ל-BigQuery, הם נכתבים בטבלאות עם חלוקה למחיצות בזמן ההטמעה. מידע נוסף זמין במאמר מבוא לטבלאות עם מחיצות.

אם אתם שולחים שאילתות ישירות לטבלאות במקום להשתמש בתצוגות שנוצרו אוטומטית, אתם צריכים להשתמש בעמודה הווירטואלית _PARTITIONTIME בשאילתה. מידע נוסף זמין במאמר בנושא שליחת שאילתות לטבלאות מחולקות.

שאילתות לדוגמה ב-Campaign Manager

אפשר להשתמש בשאילתות לדוגמה הבאות ב-Campaign Manager כדי לנתח את הנתונים שהועברו. אפשר גם להשתמש בשאילתות בכלי להמחשה חזותית כמו Looker Studio. השאילתות האלה נועדו לעזור לכם להתחיל לשלוח שאילתות לגבי נתוני Campaign Manager באמצעות BigQuery. אם יש לכם שאלות נוספות לגבי הפעולות שאפשר לבצע באמצעות הדוחות האלה, פנו לנציג הטכני שלכם ב-Campaign Manager.

בכל אחת מהשאילתות הבאות, מחליפים את המשתנים כמו dataset בערכים שלכם.

קמפיינים אחרונים

שאילתת ה-SQL לדוגמה הבאה מאחזרת את הקמפיינים האחרונים.

SELECT
  Campaign,
  Campaign_ID
FROM
  `dataset.match_table_campaigns_campaign_manager_id`
WHERE
  _DATA_DATE = _LATEST_DATE

חשיפות ומשתמשים ייחודיים לפי קמפיין

שאילתת ה-SQL לדוגמה הבאה מנתחת את מספר החשיפות והמשתמשים הייחודיים לפי קמפיין ב-30 הימים האחרונים.

# START_DATE = DATE_ADD(CURRENT_DATE(), INTERVAL -31 DAY)
# END_DATE = DATE_ADD(CURRENT_DATE(), INTERVAL -1 DAY)
  SELECT
    Campaign_ID,
    _DATA_DATE AS Date,
    COUNT(*) AS count,
    COUNT(DISTINCT User_ID) AS du
  FROM
    `dataset.impression_campaign_manager_id`
  WHERE
    _DATA_DATE BETWEEN start_date
    AND end_date
  GROUP BY
    Campaign_ID,
    Date

הקמפיינים האחרונים, מסודרים לפי קמפיין ותאריך

שאילתת ה-SQL לדוגמה הבאה מנתחת את הקמפיינים האחרונים ב-30 הימים האחרונים, לפי סדר הקמפיין והתאריך.

# START_DATE = DATE_ADD(CURRENT_DATE(), INTERVAL -31 DAY)
# END_DATE = DATE_ADD(CURRENT_DATE(), INTERVAL -1 DAY)
SELECT
  Campaign,
  Campaign_ID,
  Date
FROM (
  SELECT
    Campaign,
    Campaign_ID
  FROM
    `dataset.match_table_campaigns_campaign_manager_id`
  WHERE
    _DATA_DATE = _LATEST_DATE ),
  (
  SELECT
    date AS Date
  FROM
    `bigquery-public-data.utility_us.date_greg`
  WHERE
    Date BETWEEN start_date
    AND end_date )
ORDER BY
  Campaign_ID,
  Date

מספר החשיפות ומספר המשתמשים הייחודיים לפי קמפיין בטווח תאריכים

שאילתת ה-SQL לדוגמה הבאה מנתחת את מספר החשיפות והמשתמשים הייחודיים לפי קמפיין בין התאריכים start_date ל-end_date.

# START_DATE = DATE_ADD(CURRENT_DATE(), INTERVAL -31 DAY)
# END_DATE = DATE_ADD(CURRENT_DATE(), INTERVAL -1 DAY)
SELECT
  base.*,
  imp.count AS imp_count,
  imp.du AS imp_du
FROM (
  SELECT
    *
  FROM (
    SELECT
      Campaign,
      Campaign_ID
    FROM
      `dataset.match_table_campaigns_campaign_manager_id`
    WHERE
      _DATA_DATE = _LATEST_DATE ),
    (
    SELECT
      date AS Date
    FROM
      `bigquery-public-data.utility_us.date_greg`
    WHERE
      Date BETWEEN start_date
      AND end_date ) ) AS base
LEFT JOIN (
  SELECT
    Campaign_ID,
    _DATA_DATE AS Date,
    COUNT(*) AS count,
    COUNT(DISTINCT User_ID) AS du
  FROM
    `dataset.impression_campaign_manager_id`
  WHERE
    _DATA_DATE BETWEEN start_date
    AND end_date
  GROUP BY
    Campaign_ID,
    Date ) AS imp
ON
  base.Campaign_ID = imp.Campaign_ID
  AND base.Date = imp.Date
WHERE
  base.Campaign_ID = imp.Campaign_ID
  AND base.Date = imp.Date
ORDER BY
  base.Campaign_ID,
  base.Date

חשיפות, קליקים, פעילויות ומשתמשים ייחודיים לפי קמפיין

שאילתת ה-SQL לדוגמה הבאה מנתחת את מספר החשיפות, הקליקים, הפעילויות והמשתמשים הייחודיים לפי קמפיין ב-30 הימים האחרונים. בשאילתה הזו, מחליפים את המשתנים כמו campaign_list בערכים שלכם. לדוגמה, מחליפים את campaign_list ברשימה של כל הקמפיינים הרלוונטיים ב-Campaign Manager, שמופרדים באמצעות פסיקים, במסגרת ההיקף של השאילתה.

# START_DATE = DATE_ADD(CURRENT_DATE(), INTERVAL -31 DAY)
# END_DATE = DATE_ADD(CURRENT_DATE(), INTERVAL -1 DAY)
SELECT
  base.*,
  imp.count AS imp_count,
  imp.du AS imp_du,
  click.count AS click_count,
  click.du AS click_du,
  activity.count AS activity_count,
  activity.du AS activity_du
FROM (
  SELECT
    *
  FROM (
    SELECT
      Campaign,
      Campaign_ID
    FROM
      `dataset.match_table_campaigns_campaign_manager_id`
    WHERE
      _DATA_DATE = _LATEST_DATE ),
    (
    SELECT
      date AS Date
    FROM
      `bigquery-public-data.utility_us.date_greg`
    WHERE
      Date BETWEEN DATE_ADD(CURRENT_DATE(), INTERVAL -31 DAY)
      AND DATE_ADD(CURRENT_DATE(), INTERVAL -1 DAY) ) ) AS base
LEFT JOIN (
  SELECT
    Campaign_ID,
    _DATA_DATE AS Date,
    COUNT(*) AS count,
    COUNT(DISTINCT User_ID) AS du
  FROM
    `dataset.impression_campaign_manager_id`
  WHERE
    _DATA_DATE BETWEEN DATE_ADD(CURRENT_DATE(), INTERVAL -31 DAY)
    AND DATE_ADD(CURRENT_DATE(), INTERVAL -1 DAY)
  GROUP BY
    Campaign_ID,
    Date ) AS imp
ON
  base.Campaign_ID = imp.Campaign_ID
  AND base.Date = imp.Date
LEFT JOIN (
  SELECT
    Campaign_ID,
    _DATA_DATE AS Date,
    COUNT(*) AS count,
    COUNT(DISTINCT User_ID) AS du
  FROM
    `dataset.click_campaign_manager_id`
  WHERE
    _DATA_DATE BETWEEN DATE_ADD(CURRENT_DATE(), INTERVAL -31 DAY)
    AND DATE_ADD(CURRENT_DATE(), INTERVAL -1 DAY)
  GROUP BY
    Campaign_ID,
    Date ) AS click
ON
  base.Campaign_ID = click.Campaign_ID
  AND base.Date = click.Date
LEFT JOIN (
  SELECT
    Campaign_ID,
    _DATA_DATE AS Date,
    COUNT(*) AS count,
    COUNT(DISTINCT User_ID) AS du
  FROM
    `dataset.activity_campaign_manager_id`
  WHERE
    _DATA_DATE BETWEEN DATE_ADD(CURRENT_DATE(), INTERVAL -31 DAY)
    AND DATE_ADD(CURRENT_DATE(), INTERVAL -1 DAY)
  GROUP BY
    Campaign_ID,
    Date ) AS activity
ON
  base.Campaign_ID = activity.Campaign_ID
  AND base.Date = activity.Date
WHERE
  base.Campaign_ID IN campaign_list
  AND (base.Date = imp.Date
    OR base.Date = click.Date
    OR base.Date = activity.Date)
ORDER BY
  base.Campaign_ID,
  base.Date

פעילות בקמפיין

שאילתת ה-SQL לדוגמה הבאה מנתחת את פעילות הקמפיין ב-30 הימים האחרונים. בשאילתה הזו, מחליפים את המשתנים כמו campaign_list בערכים שלכם. לדוגמה, מחליפים את campaign_list ברשימה של כל הקמפיינים הרלוונטיים ב-Campaign Manager, שמופרדים באמצעות פסיקים, במסגרת ההיקף של השאילתה.

# START_DATE = DATE_ADD(CURRENT_DATE(), INTERVAL -31 DAY)
# END_DATE = DATE_ADD(CURRENT_DATE(), INTERVAL -1 DAY)
SELECT
  base.*,
  activity.count AS activity_count,
  activity.du AS activity_du
FROM (
  SELECT
    *
  FROM (
    SELECT
      Campaign,
      Campaign_ID
    FROM
      `dataset.match_table_campaigns_campaign_manager_id`
    WHERE
      _DATA_DATE = _LATEST_DATE ),
    (
    SELECT
      mt_at.Activity_Group,
      mt_ac.Activity,
      mt_ac.Activity_Type,
      mt_ac.Activity_Sub_Type,
      mt_ac.Activity_ID,
      mt_ac.Activity_Group_ID
    FROM
      `dataset.match_table_activity_cats_campaign_manager_id` AS mt_ac
    JOIN (
      SELECT
        Activity_Group,
        Activity_Group_ID
      FROM
        `dataset.match_table_activity_types_campaign_manager_id`
      WHERE
        _DATA_DATE = _LATEST_DATE ) AS mt_at
    ON
      mt_at.Activity_Group_ID = mt_ac.Activity_Group_ID
    WHERE
      _DATA_DATE = _LATEST_DATE ),
    (
    SELECT
      date AS Date
    FROM
      `bigquery-public-data.utility_us.date_greg`
    WHERE
      Date BETWEEN start_date
      AND end_date ) ) AS base
LEFT JOIN (
  SELECT
    Campaign_ID,
    Activity_ID,
    _DATA_DATE AS Date,
    COUNT(*) AS count,
    COUNT(DISTINCT User_ID) AS du
  FROM
    `dataset.activity_campaign_manager_id`
  WHERE
    _DATA_DATE BETWEEN DATE_ADD(CURRENT_DATE(), INTERVAL -31 DAY)
    AND DATE_ADD(CURRENT_DATE(), INTERVAL -1 DAY)
  GROUP BY
    Campaign_ID,
    Activity_ID,
    Date ) AS activity
ON
  base.Campaign_ID = activity.Campaign_ID
  AND base.Activity_ID = activity.Activity_ID
  AND base.Date = activity.Date
WHERE
  base.Campaign_ID IN campaign_list
  AND base.Activity_ID = activity.Activity_ID
ORDER BY
  base.Campaign_ID,
  base.Activity_Group_ID,
  base.Activity_ID,
  base.Date