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

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

לפני שיוצרים העברה של נתונים מערוץ 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, צריך:

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

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

כדי ליצור העברת נתונים מערוץ YouTube:

המסוף

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

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

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

  3. בדף Create Transfer:

    • בקטע Source type, בשדה Source, בוחרים באפשרות YouTube Channel.

      מקור ההעברה

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

      שם ההעברה

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

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

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

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

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

      פרטים על מקור ערוץ YouTube

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

      • לוחצים על המתג כדי להפעיל התראות באימייל. כשמפעילים את האפשרות הזו, האדמין של ההעברה מקבל התראה באימייל אם ההעברה נכשלת.
      • בקטע 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"}'. להעברות נתונים של ערוצי YouTube, חובה לספק את הפרמטר table_suffix. אפשר להגדיר את הפרמטר configure_jobs לערך true כדי לאפשר לשירות העברת הנתונים ל-BigQuery לנהל בשבילכם את משימות הדיווח ב-YouTube. אם יש דוחות של YouTube שלא קיימים בערוץ שלכם, ייווצרו משימות דיווח חדשות כדי להפעיל אותם.
  • data_source הוא מקור הנתונים – youtube_channel.

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

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

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

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 channel transfer config.
public class CreateYoutubeChannelTransfer {

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

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

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

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

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

פתרון בעיות בהגדרת העברת ערוץ YouTube

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