טעינת נתונים של בעלי תוכן ב-YouTube לתוך BigQuery

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

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

שירות העברת הנתונים ל-BigQuery עבור המחבר של בעלי תוכן ב-YouTube תומך באפשרויות הבאות להעברת נתונים.

אפשרויות להעברת נתונים תמיכה
דוחות נתמכים מחבר בעלי התוכן ב-YouTube תומך בהעברת נתונים מהדוחות הבאים:

מחבר בעלי התוכן ב-YouTube תומך בגרסת ה-API מ-18 ביוני 2018.

במאמר שינוי של דוחות בעלי תוכן ב-YouTube מוסבר איך דוחות בעלי תוכן ב-YouTube משתנים לטבלאות ולתצוגות ב-BigQuery.

תדירות החזרה מחבר בעלי התוכן ב-YouTube תומך בהעברות נתונים יומיות.

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

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

דוחות של YouTube שמכילים נתונים היסטוריים זמינים למשך 30 יום מהמועד שבו הם נוצרו. (דוחות שכוללים נתונים לא היסטוריים זמינים למשך 60 יום). מידע נוסף זמין במאמר בנושא נתונים היסטוריים.

הטמעת נתונים מהעברות של בעלי תוכן ב-YouTube

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

רענון חלונות

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

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

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

מגבלות

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

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

לפני שיוצרים העברת נתונים של בעלי תוכן ב-YouTube:

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

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

התפקידים הנדרשים ב-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.

תפקידים נדרשים ב-YouTube

  • מנהל התוכן של YouTube או בעלי התוכן ב-YouTube.

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

  • Hide revenue data לא מסומן בהגדרות הדוחות של בעלי התוכן ב-YouTube.

    כדי שהדוחות שקשורים להכנסות יועברו, צריך לבטל את הסימון של ההגדרה Hide revenue data של הרשאת הדוחות של YouTube עבור המשתמש שיוצר את ההעברה.

    youtube-content-owner-reports-uncheck-hide-revenue

הגדרת העברה של בעלות על תוכן ב-YouTube

כדי להגדיר העברת נתונים של בעלי תוכן ב-YouTube, צריך:

  • מזהה בעלי התוכן: מופיע ב-YouTube. כשנכנסים ל-YouTube בתור בעלי תוכן או מנהלי תוכן, המזהה מופיע בכתובת ה-URL אחרי o=. לדוגמה, אם כתובת ה-URL היא https://studio.youtube.com/owner/AbCDE_8FghIjK?o=AbCDE_8FghIjK, מזהה בעל התוכן הוא AbCDE_8FghIjK. כדי לבחור חשבון אחר במערכת ניהול התוכן, אפשר לעיין במאמר בנושא כניסה לחשבון במערכת ניהול התוכן או במאמר בנושא החלפת ערוץ ב-YouTube. מידע נוסף על יצירה וניהול של חשבון מערכת ניהול התוכן זמין במאמר בנושא הגדרת חשבון מערכת ניהול התוכן.
  • סיומת הטבלה: שם ידידותי למשתמש של הערוץ שסיפקתם כשביצעתם את ההגדרה של ההעברה. הסיומת מצורפת למזהה של העבודה כדי ליצור את שם הטבלה, לדוגמה reportTypeId_suffix. הסיומת משמשת כדי למנוע העברות נתונים נפרדות מכתיבה לאותן טבלאות. סיומת הטבלה צריכה להיות ייחודית בכל ההעברות שמעלות נתונים לאותו מערך נתונים, והסיומת צריכה להיות קצרה כדי למזער את אורך השם של הטבלה שנוצרת.

אם אתם משתמשים ב-YouTube Reporting API ויש לכם משימות דיווח קיימות, שירות העברת הנתונים ל-BigQuery טוען את נתוני הדוחות. אם אין לכם משימות דיווח קיימות, הגדרת העברת הנתונים תפעיל באופן אוטומטי משימות דיווח ב-YouTube.

כדי להגדיר העברת נתונים של בעלי תוכן ב-YouTube:

המסוף

  1. נכנסים לדף BigQuery במסוף Google Cloud . מוודאים שאתם מחוברים לחשבון בתור בעלי התוכן או מנהלי התוכן.

    לדף BigQuery

  2. לוחצים על העברות.

  3. לוחצים על יצירת העברה.

  4. בדף Create Transfer:

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

      מקור ההעברה

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

      שם ההעברה

    • בקטע אפשרויות תזמון:

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

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

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

      • בשדה מזהה בעלי התוכן, מזינים את המזהה של בעלי התוכן.
      • בשדה Table suffix (סיומת הטבלה), מזינים סיומת, כמו MT.

      פרטי המקור של בעלי התוכן ב-YouTube

    • בתפריט Service Account בוחרים חשבון שירות מתוך חשבונות השירות שמשויכים לפרויקט Google Cloud . אתם יכולים לשייך חשבון שירות להעברת הנתונים במקום להשתמש בפרטי הכניסה של המשתמש. מידע נוסף על שימוש בחשבונות שירות בהעברות נתונים זמין במאמר שימוש בחשבונות שירות.

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

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

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

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

BQ

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

  • --data_source
  • --target_dataset
  • --display_name
  • --params

דגלים אופציונליים:

  • --service_account_name – מציין חשבון שירות שישמש לאימות העברת הבעלות על תוכן במקום חשבון המשתמש.
bq mk \
--transfer_config \
--project_id=project_id \
--target_dataset=dataset \
--display_name=name \
--params='parameters' \
--data_source=data_source \
--service_account_name=service_account_name

כאשר:

  • project_id הוא מזהה הפרויקט.
  • dataset הוא מערך נתוני היעד להגדרת ההעברה.
  • name הוא השם המוצג של הגדרת ההעברה. שם העברת הנתונים יכול להיות כל ערך שיאפשר לכם לזהות את ההעברה אם תצטרכו לשנות אותה בהמשך.
  • parameters מכיל את הפרמטרים של הגדרת ההעברה שנוצרה בפורמט JSON. לדוגמה: --params='{"param":"param_value"}'. כדי להעביר נתונים של בעלי תוכן ב-YouTube, צריך לספק את הפרמטרים content_owner_id ו-table_suffix. אפשר להגדיר את הפרמטר configure_jobs לערך true כדי לאפשר לשירות העברת הנתונים ל-BigQuery לנהל בשבילכם את משימות הדיווח ב-YouTube. אם יש דוחות של YouTube שלא קיימים בחשבון שלכם, ייווצרו משימות חדשות של דיווח כדי להפעיל אותם.
  • data_source הוא מקור הנתונים – youtube_content_owner.
  • service_account_name הוא שם חשבון השירות שמשמש לאימות העברת הנתונים. חשבון השירות צריך להיות בבעלות אותו חשבון project_id ששימש ליצירת ההעברה, וצריכות להיות לו כל ההרשאות הנדרשות.

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

לדוגמה, הפקודה הבאה יוצרת העברת נתונים של בעלי תוכן ב-YouTube בשם My Transfer באמצעות מזהה בעלי התוכן AbCDE_8FghIjK, סיומת הטבלה MT ומערך נתוני היעד mydataset. העברת הנתונים נוצרת בפרויקט שמוגדר כברירת מחדל:

bq mk \
--transfer_config \
--target_dataset=mydataset \
--display_name='My Transfer' \
--params='{"content_owner_id":"abCDE_8FghIjK","table_suffix":"MT","configure_jobs":"true"}' \
--data_source=youtube_content_owner

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 youtube content owner channel transfer config
public class CreateYoutubeContentOwnerTransfer {

  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 contentOwnerId = "MY_CONTENT_OWNER_ID";
    String tableSuffix = "_test";
    Map<String, Value> params = new HashMap<>();
    params.put("content_owner_id", Value.newBuilder().setStringValue(contentOwnerId).build());
    params.put("table_suffix", Value.newBuilder().setStringValue(tableSuffix).build());
    TransferConfig transferConfig =
        TransferConfig.newBuilder()
            .setDestinationDatasetId(datasetId)
            .setDisplayName("Your Youtube Owner Channel Config Name")
            .setDataSourceId("youtube_content_owner")
            .setParams(Struct.newBuilder().putAllFields(params).build())
            .build();
    createYoutubeContentOwnerTransfer(projectId, transferConfig);
  }

  public static void createYoutubeContentOwnerTransfer(
      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(
          "Youtube content owner channel transfer created successfully :" + config.getName());
    } catch (ApiException ex) {
      System.out.print("Youtube content owner channel transfer was not created." + ex.toString());
    }
  }
}

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

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

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

פתרון בעיות בהגדרה של העברת בעלות על תוכן ב-YouTube

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