טעינת נתונים מ-Google Play ל-BigQuery

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

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

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

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

במאמר המרת דוחות של Google Play מוסבר איך דוחות של Google Play מומרים לטבלאות ולתצוגות ב-BigQuery.

תדירות החזרה מחבר Google Play תומך בהעברות נתונים יומיות.

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

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

הטמעת נתונים מהעברות של Google Play

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

רענון חלונות

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

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

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

מגבלות

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

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

לפני שיוצרים העברת נתונים מ-Google Play:

  • מוודאים שביצעתם את כל הפעולות שנדרשות כדי להפעיל את שירות העברת נתונים ל-BigQuery.
  • יוצרים מערך נתונים ב-BigQuery לאחסון הנתונים של Google Play.
  • מוצאים את הקטגוריה של Cloud Storage:
    1. ב-Google Play Console, לוחצים על הורדת דוחות ובוחרים באפשרות ביקורות, סטטיסטיקות או פיננסי.
    2. כדי להעתיק את המזהה של קטגוריה של Cloud Storage, לוחצים על העתקת URI של Cloud Storage. מזהה הקטגוריה מתחיל ב-gs://. לדוגמה, בדוח הביקורות, המזהה שלכם דומה למזהה הבא:
      gs://pubsite_prod_rev_01234567890987654321/reviews
    3. כדי להעביר את הנתונים מ-Google Play, צריך להעתיק רק את המזהה הייחודי שמופיע בין התגים gs:// לבין /reviews:
      pubsite_prod_rev_01234567890987654321
  • אם אתם מתכוונים להגדיר התראות על הפעלת העברה ב-Pub/Sub, אתם צריכים הרשאות pubsub.topics.setIamPolicy. אם מגדירים רק התראות באימייל, לא צריך הרשאות Pub/Sub. מידע נוסף זמין במאמר בנושא התראות על הפעלת שירות העברת נתונים ל-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.

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

חשוב לוודא שיש לכם את ההרשאות הבאות ב-Google Play:

  • צריכה להיות לכם גישה לדוחות ב-Google Play Console.

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

הגדרת העברה מ-Google Play

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

  • קטגוריה של Cloud Storage. השלבים לאיתור הקטגוריה של Cloud Storage מפורטים במאמר לפני שמתחילים. הקטגוריה של Cloud Storage מתחילה ב-pubsite_prod_rev. לדוגמה: pubsite_prod_rev_01234567890987654321.
  • סיומת של טבלה: שם ידידותי למשתמש לכל מקורות הנתונים שנטענים לאותו מערך נתונים. הסיומת משמשת כדי למנוע העברות נפרדות מכתיבה לאותם טבלאות. סיומת הטבלה חייבת להיות ייחודית בכל ההעברות שמעלות נתונים לאותו מערך נתונים, והסיומת צריכה להיות קצרה כדי למזער את אורך שם הטבלה שמתקבל.

כדי להגדיר העברת נתונים ב-Google Play:

המסוף

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

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

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

  3. בדף Create Transfer:

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

      מקור ההעברה

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

      שם ההעברה

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

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

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

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

      • בשדה Cloud Storage bucket (קטגוריה של Cloud Storage), מזינים את המזהה של הקטגוריה ב-Cloud Storage.
      • בשדה סיומת לטבלה, מזינים סיומת כמו MT (ל-My Transfer).

      פרטי המקור של Google Play

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

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

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

BQ

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

  • --target_dataset
  • --display_name
  • --params
  • --data_source
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 הוא מזהה הפרויקט. אם לא מציינים את --project_id, המערכת משתמשת בפרויקט שמוגדר כברירת מחדל.
  • dataset הוא מערך נתוני היעד להגדרת ההעברה.
  • name הוא השם המוצג של הגדרת ההעברה. שם העברת הנתונים יכול להיות כל ערך שיאפשר לכם לזהות את ההעברה אם תצטרכו לשנות אותה בהמשך.
  • parameters מכיל את הפרמטרים של הגדרת ההעברה שנוצרה בפורמט JSON. לדוגמה: --params='{"param":"param_value"}'. ב-Google Play, צריך לספק את הפרמטרים bucket ו-table_suffix. ‫bucket היא הקטגוריה ב-Cloud Storage שמכילה את קובצי הדוחות של Play.
  • data_source הוא מקור הנתונים: play.
  • service_account_name הוא שם חשבון השירות שמשמש לאימות העברת הנתונים. חשבון השירות צריך להיות בבעלות אותו project_id ששימש ליצירת ההעברה, וצריכות להיות לו כל ההרשאות הנדרשות.

לדוגמה, הפקודה הבאה יוצרת העברת נתונים של Google Play בשם My Transfer באמצעות קטגוריה של Cloud Storage‏ pubsite_prod_rev_01234567890987654321 ומערך נתונים של יעד mydataset. העברת הנתונים נוצרת בפרויקט שמוגדר כברירת מחדל:

bq mk \
--transfer_config \
--target_dataset=mydataset \
--display_name='My Transfer' \
--params='{"bucket":"pubsite_prod_rev_01234567890987654321","table_suffix":"MT"}' \
--data_source=play

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

[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 a play transfer config.
public class CreatePlayTransfer {

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

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

פתרון בעיות בהגדרת ההעברה של Google Play

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

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

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

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

תמחור

מידע על תמחור העברת נתונים ב-Google Play זמין בדף תמחור.

אחרי שהנתונים מועברים ל-BigQuery, חלים תעריפי האחסון והשאילתות הרגילים של BigQuery.

המאמרים הבאים