ניהול העברות

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

איך רואים את ההעברות

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

התפקידים הנדרשים

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

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

בנוסף, כדי להציג הודעות ביומן דרך מסוף Google Cloud , צריך הרשאות לצפייה בנתונים של Cloud Logging. התפקיד "צפייה ביומנים" (roles/logging.viewer) נותן הרשאת קריאה בלבד לכל התכונות של Logging. במדריך לבקרת גישה של Cloud Logging תוכלו לקרוא מידע נוסף על ההרשאות והתפקידים בניהול הזהויות והרשאות הגישה (IAM) שחלים על הנתונים של יומני Cloud.

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

קבלת פרטי ההעברה

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

כדי לקבל מידע על הגדרת העברה:

המסוף

  1. עוברים לדף Data transfers.

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

  2. בוחרים את ההעברה שרוצים לקבל את הפרטים שלה.

  3. כדי לראות את הגדרת ההעברה ואת פרטי מקור הנתונים, לוחצים על Configuration בדף Transfer details. בדוגמה הבאה מוצגים מאפייני ההגדרות של העברת נתונים מ-Google Ads:

    הגדרות העברה במסוף

BQ

מזינים את הפקודה bq show ומציינים את שם המשאב של הגדרת ההעברה. אפשר להשתמש בדגל --format כדי לשלוט בפורמט הפלט.

bq show \
--format=prettyjson \
--transfer_config resource_name

מחליפים את resource_name בשם המשאב של ההעברה (שנקרא גם הגדרת ההעברה). אם אתם לא יודעים את שם המשאב של ההעברה, אתם יכולים למצוא אותו באמצעות: bq ls --transfer_config --transfer_location=location.

לדוגמה, מזינים את הפקודה הבאה כדי להציג את הגדרות ההעברה של projects/myproject/locations/us/transferConfigs/1234a123-1234-1a23-1be9-12ab3c456de7.

bq show \
--format=prettyjson \
--transfer_config projects/myproject/locations/us/transferConfigs/1234a123-1234-1a23-1be9-12ab3c456de7

API

משתמשים ב-method‏ projects.locations.transferConfigs.get ומציינים את הגדרת ההעברה באמצעות הפרמטר name.

Java

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

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

import com.google.api.gax.rpc.ApiException;
import com.google.cloud.bigquery.datatransfer.v1.DataTransferServiceClient;
import com.google.cloud.bigquery.datatransfer.v1.GetTransferConfigRequest;
import com.google.cloud.bigquery.datatransfer.v1.TransferConfig;
import java.io.IOException;

// Sample to get config info.
public class GetTransferConfigInfo {

  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace these variables before running the sample.
    String configId = "MY_CONFIG_ID";
    // i.e projects/{project_id}/transferConfigs/{config_id}` or
    // `projects/{project_id}/locations/{location_id}/transferConfigs/{config_id}`
    getTransferConfigInfo(configId);
  }

  public static void getTransferConfigInfo(String configId) throws IOException {
    try (DataTransferServiceClient dataTransferServiceClient = DataTransferServiceClient.create()) {
      GetTransferConfigRequest request =
          GetTransferConfigRequest.newBuilder().setName(configId).build();
      TransferConfig info = dataTransferServiceClient.getTransferConfig(request);
      System.out.print("Config info retrieved successfully." + info.getName() + "\n");
    } catch (ApiException ex) {
      System.out.print("config not found." + ex.toString());
    }
  }
}

הצגת רשימה של הגדרות העברה

כדי להציג את כל הגדרות ההעברה הקיימות בפרויקט:

המסוף

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

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

  2. אם יש הגדרות העברה בפרויקט, הן מופיעות ברשימת העברות הנתונים.

BQ

כדי להציג את כל הגדרות ההעברה של פרויקט לפי מיקום, מזינים את הפקודה bq ls ומציינים את הדגלים --transfer_location ו---transfer_config. אפשר גם להוסיף את הדגל --project_id כדי לציין פרויקט מסוים. אם לא מציינים את --project_id, המערכת משתמשת בפרויקט שמוגדר כברירת מחדל. אפשר להשתמש בדגל --format כדי לשלוט בפורמט הפלט.

כדי להציג רשימה של הגדרות העברה למקורות נתונים מסוימים, צריך להוסיף את הדגל --filter.

כדי להציג מספר מסוים של הגדרות העברה בפורמט של דפים, צריך להוסיף את הדגל --max_results כדי לציין את מספר ההעברות. הפקודה מחזירה אסימון דף שאתם מספקים באמצעות הדגל --page_token כדי לראות את n ההגדרות הבאות. אם משמיטים את --max_results, יש מגבלה של 1,000 הגדרות שיוחזרו, ו---max_results לא יקבל ערכים שגדולים מ-1,000. אם בפרויקט יש יותר מ-1,000 הגדרות אישיות, משתמשים ב---max_results וב---page_token כדי לעבור על כולן.

bq ls \
--transfer_config \
--transfer_location=location \
--project_id=project_id \
--max_results=integer \
--filter=dataSourceIds:data_sources

מחליפים את מה שכתוב בשדות הבאים:

דוגמאות:

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

bq ls \
--format=prettyjson \
--transfer_config \
--transfer_location=us

מזינים את הפקודה הבאה כדי להציג את כל הגדרות ההעברה בארה"ב של מזהה הפרויקט myproject.

bq ls \
--transfer_config \
--transfer_location=us \
--project_id=myproject

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

bq ls \
--transfer_config \
--transfer_location=us \
--project_id=myproject \
--max_results=3

הפקודה מחזירה טוקן לדף הבא. מעתיקים את האסימון של הדף ומזינים אותו בפקודה bq ls כדי לראות את 3 התוצאות הבאות.

bq ls \
--transfer_config \
--transfer_location=us \
--project_id=myproject \
--max_results=3 \
--page_token=AB1CdEfg_hIJKL

מזינים את הפקודה הבאה כדי להציג את הגדרות ההעברה של Ads ו-Campaign Manager עבור מזהה פרויקט myproject.

bq ls \
--transfer_config \
--transfer_location=us \
--project_id=myproject \
--filter=dataSourceIds:dcm_dt,google_ads

API

משתמשים ב-method‏ projects.locations.transferConfigs.list ומציינים את מזהה הפרויקט באמצעות הפרמטר parent.

Java

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

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

import com.google.api.gax.rpc.ApiException;
import com.google.cloud.bigquery.datatransfer.v1.DataTransferServiceClient;
import com.google.cloud.bigquery.datatransfer.v1.ListTransferConfigsRequest;
import com.google.cloud.bigquery.datatransfer.v1.ProjectName;
import java.io.IOException;

// Sample to get list of transfer config
public class ListTransferConfigs {

  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace these variables before running the sample.
    final String projectId = "MY_PROJECT_ID";
    listTransferConfigs(projectId);
  }

  public static void listTransferConfigs(String projectId) throws IOException {
    try (DataTransferServiceClient dataTransferServiceClient = DataTransferServiceClient.create()) {
      ProjectName parent = ProjectName.of(projectId);
      ListTransferConfigsRequest request =
          ListTransferConfigsRequest.newBuilder().setParent(parent.toString()).build();
      dataTransferServiceClient
          .listTransferConfigs(request)
          .iterateAll()
          .forEach(config -> System.out.print("Success! Config ID :" + config.getName() + "\n"));
    } catch (ApiException ex) {
      System.out.println("Config list not found due to error." + ex.toString());
    }
  }
}

Python

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

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

import google.api_core.exceptions
from google.cloud import bigquery_datatransfer_v1

client = bigquery_datatransfer_v1.DataTransferServiceClient()


def list_transfer_configs(project_id: str, location: str) -> None:
    """Lists transfer configurations in a given project.

    This sample demonstrates how to list all transfer configurations in a project.

    Args:
        project_id: The Google Cloud project ID.
        location: The geographic location of the transfer config, for example "us-central1"
    """

    parent = client.common_location_path(project_id, location)

    try:
        for config in client.list_transfer_configs(parent=parent):
            print(f"Name: {config.name}")
            print(f"Display Name: {config.display_name}")
            print(f"Data source: {config.data_source_id}")
            print(f"Destination dataset: {config.destination_dataset_id}")
            if "time_based_schedule" in config.schedule_options_v2:
                print(
                    f"Schedule: {config.schedule_options_v2.time_based_schedule.schedule}"
                )
            else:
                print("Schedule: None")
            print("---")
    except google.api_core.exceptions.NotFound:
        print(
            f"Error: Project '{project_id}' not found or contains no transfer configs."
        )
    except google.api_core.exceptions.PermissionDenied:
        print(
            f"Error: Permission denied for project '{project_id}'. Please ensure you have the correct permissions."
        )

הצגת היסטוריית ההרצות של ההעברות

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

כדי לראות את היסטוריית ההרצות של הגדרת העברה:

המסוף

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

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

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

  3. הדף RUN HISTORY של ההעברה שנבחרה ייפתח.

BQ

כדי להציג רשימה של הרצות העברה של הגדרת העברה מסוימת, מזינים את הפקודה bq ls ומציינים את הדגל --transfer_run. אפשר גם להוסיף את הדגל --project_id כדי לציין פרויקט מסוים. אם resource_name לא מכיל מידע על הפרויקט, המערכת משתמשת בערך --project_id. אם לא מציינים את --project_id, המערכת משתמשת בפרויקט שמוגדר כברירת מחדל. אפשר להשתמש בדגל --format כדי לשלוט בפורמט הפלט.

כדי להציג מספר מסוים של הפעלות העברה, צריך להוסיף את הדגל --max_results. הפקודה מחזירה אסימון דף שאתם מספקים באמצעות הדגל --page_token כדי לראות את n ההגדרות הבאות.

כדי להציג רשימה של הפעלות העברה על סמך מצב ההפעלה, צריך לספק את הדגל --filter.

bq ls \
--transfer_run \
--max_results=integer \
--transfer_location=location \
--project_id=project_id \
--filter=states:state, ... \
resource_name

מחליפים את מה שכתוב בשדות הבאים:

  • ‫integer הוא מספר התוצאות שיוחזרו.
  • ‫location הוא המיקום של הגדרות ההעברה. המיקום מצוין כשיוצרים העברה.
  • ‫project_id הוא מזהה הפרויקט.
  • ‫state, ... הוא אחד מהבאים או רשימה מופרדת בפסיקים:
    • SUCCEEDED
    • FAILED
    • PENDING
    • RUNNING
    • CANCELLED
  • ‫resource_name הוא שם המשאב של ההעברה (נקרא גם הגדרת ההעברה). אם אתם לא יודעים את שם המשאב של ההעברה, אתם יכולים למצוא אותו באמצעות: bq ls --transfer_config --transfer_location=location.

דוגמאות:

מזינים את הפקודה הבאה כדי להציג את 3 ההפעלות האחרונות של הגדרת ההעברה projects/myproject/locations/us/transferConfigs/1234a123-1234-1a23-1be9-12ab3c456de7. הפלט נשלט באמצעות הדגל --format.

bq ls \
--format=prettyjson \
--transfer_run \
--max_results=3 \
--transfer_location=us \
projects/myproject/locations/us/transferConfigs/1234a123-1234-1a23-1be9-12ab3c456de7

הפקודה מחזירה טוקן לדף הבא. מעתיקים את האסימון של הדף ומזינים אותו בפקודה bq ls כדי לראות את 3 התוצאות הבאות.

bq ls \
--format=prettyjson \
--transfer_run \
--max_results=3 \
--page_token=AB1CdEfg_hIJKL \
--transfer_location=us \
projects/myproject/locations/us/transferConfigs/1234a123-1234-1a23-1be9-12ab3c456de7

מזינים את הפקודה הבאה כדי להציג את כל ההפעלות שנכשלו בהגדרת ההעברה projects/myproject/locations/us/transferConfigs/1234a123-1234-1a23-1be9-12ab3c456de7.

bq ls \
--format=prettyjson \
--transfer_run \
--filter=states:FAILED \
--transfer_location=us \
projects/myproject/locations/us/transferConfigs/1234a123-1234-1a23-1be9-12ab3c456de7

API

משתמשים ב-method‏ projects.locations.transferConfigs.runs.list ומציינים את מזהה הפרויקט באמצעות הפרמטר parent.

Java

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

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

import com.google.api.gax.rpc.ApiException;
import com.google.cloud.bigquery.datatransfer.v1.DataTransferServiceClient;
import com.google.cloud.bigquery.datatransfer.v1.ListTransferRunsRequest;
import java.io.IOException;

// Sample to get run history from transfer config.
public class RunHistory {

  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace these variables before running the sample.
    String configId = "MY_CONFIG_ID";
    // i.e projects/{project_id}/transferConfigs/{config_id}` or
    // `projects/{project_id}/locations/{location_id}/transferConfigs/{config_id}`
    runHistory(configId);
  }

  public static void runHistory(String configId) throws IOException {
    try (DataTransferServiceClient dataTransferServiceClient = DataTransferServiceClient.create()) {
      ListTransferRunsRequest request =
          ListTransferRunsRequest.newBuilder().setParent(configId).build();
      dataTransferServiceClient
          .listTransferRuns(request)
          .iterateAll()
          .forEach(run -> System.out.print("Success! Run ID :" + run.getName() + "\n"));
    } catch (ApiException ex) {
      System.out.println("Run history not found due to error." + ex.toString());
    }
  }
}

הצגת פרטי הפעלת ההעברה והודעות ביומן

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

כדי לראות את פרטי ההפעלה של ההעברה:

המסוף

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

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

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

  3. הדף RUN HISTORY של ההעברה שנבחרה ייפתח.

  4. לוחצים על הפעלה ספציפית של ההעברה, והחלונית Run details תיפתח בשביל אותה הפעלה של ההעברה.

  5. בקטע פרטי ההפעלה, בודקים אם יש הודעות שגיאה. המידע הזה נדרש אם פונים ל-Cloud Customer Care. פרטי ההרצה כוללים גם הודעות ביומן ואזהרות.

    פרטי ההרצה במסוף

BQ

כדי לראות את הפרטים של הרצת ההעברה, מזינים את הפקודה bq show ומציינים את שם ההרצה של הרצת ההעברה באמצעות הדגל --transfer_run. אפשר להשתמש בדגל --format כדי לשלוט בפורמט הפלט.

bq show \
--format=prettyjson \
--transfer_run run_name

מחליפים את run_name בשם של הרצת ההעברה. כדי לאחזר את שם ההרצה, משתמשים בפקודה bq ls.

דוגמה:

מזינים את הפקודה הבאה כדי להציג את הפרטים של הרצת ההעברה projects/myproject/locations/us/transferConfigs/1234a123-1234-1a23-1be9-12ab3c456de7/runs/1a2b345c-0000-1234-5a67-89de1f12345g.

bq show \
--format=prettyjson \
--transfer_run \
projects/myproject/locations/us/transferConfigs/1234a123-1234-1a23-1be9-12ab3c456de7/runs/1a2b345c-0000-1234-5a67-89de1f12345g

כדי לראות את הודעות היומן של הפעלת העברה, מזינים את הפקודה bq ls עם הדגל --transfer_log. אפשר לסנן הודעות ביומן לפי סוג באמצעות הדגל --message_type.

כדי להציג מספר מסוים של הודעות ביומן, צריך להוסיף את הדגל --max_results. הפקודה מחזירה אסימון דף שאתם מספקים באמצעות הדגל --page_token כדי לראות את n ההודעות הבאות.

bq ls \
--transfer_log \
--max_results=integer \
--message_type=messageTypes:message_type \
run_name

מחליפים את מה שכתוב בשדות הבאים:

  • ‫integer הוא מספר הודעות היומן שיוחזרו.
  • ‫message_type הוא סוג הודעת היומן שרוצים להציג (ערך יחיד או רשימה מופרדת בפסיקים):
    • INFO
    • WARNING
    • ERROR
  • ‫run_name הוא שם ההרצה של העברת הנתונים. אפשר לאחזר את שם ההרצה באמצעות הפקודה bq ls.

דוגמאות:

מזינים את הפקודה הבאה כדי להציג את שתי הודעות היומן הראשונות של הרצת ההעברה projects/myproject/locations/us/transferConfigs/1234a123-1234-1a23-1be9-12ab3c456de7/runs/1a2b345c-0000-1234-5a67-89de1f12345g.

bq ls \
--transfer_log \
--max_results=2 \
projects/myproject/locations/us/transferConfigs/1234a123-1234-1a23-1be9-12ab3c456de7/runs/1a2b345c-0000-1234-5a67-89de1f12345g

הפקודה מחזירה טוקן לדף הבא. מעתיקים את הטוקן של הדף ומזינים אותו בפקודה bq ls כדי לראות את 2 התוצאות הבאות.

bq ls \
--transfer_log \
--max_results=2 \
--page_token=AB1CdEfg_hIJKL \
projects/myproject/locations/us/transferConfigs/1234a123-1234-1a23-1be9-12ab3c456de7/runs/1a2b345c-0000-1234-5a67-89de1f12345g

מזינים את הפקודה הבאה כדי להציג רק הודעות שגיאה של הרצת ההעברה projects/myproject/locations/us/transferConfigs/1234a123-1234-1a23-1be9-12ab3c456de7/runs/1a2b345c-0000-1234-5a67-89de1f12345g.

bq ls \
--transfer_log \
--message_type=messageTypes:ERROR \
projects/myproject/locations/us/transferConfigs/1234a123-1234-1a23-1be9-12ab3c456de7/runs/1a2b345c-0000-1234-5a67-89de1f12345g

API

משתמשים ב-method‏ projects.transferConfigs.runs.transferLogs.list ומציינים את שם ההרצה של ההעברה באמצעות הפרמטר parent.

Java

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

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

import com.google.api.gax.rpc.ApiException;
import com.google.cloud.bigquery.datatransfer.v1.DataTransferServiceClient;
import com.google.cloud.bigquery.datatransfer.v1.GetTransferRunRequest;
import com.google.cloud.bigquery.datatransfer.v1.TransferRun;
import java.io.IOException;

// Sample to get run details from transfer config.
public class RunDetails {

  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace these variables before running the sample.
    // runId examples:
    // `projects/{project_id}/transferConfigs/{config_id}/runs/{run_id}` or
    // `projects/{project_id}/locations/{location_id}/transferConfigs/{config_id}/runs/{run_id}`
    String runId = "MY_RUN_ID";
    runDetails(runId);
  }

  public static void runDetails(String runId) throws IOException {
    try (DataTransferServiceClient dataTransferServiceClient = DataTransferServiceClient.create()) {
      GetTransferRunRequest request = GetTransferRunRequest.newBuilder().setName(runId).build();
      TransferRun run = dataTransferServiceClient.getTransferRun(request);
      System.out.print("Run details retrieved successfully :" + run.getName() + "\n");
    } catch (ApiException ex) {
      System.out.print("Run details not found." + ex.toString());
    }
  }
}

שינוי ההעברות

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

התפקידים הנדרשים

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

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

עדכון העברה

אחרי שיוצרים הגדרת העברה, אפשר לערוך את השדות הבאים:

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

אי אפשר לערוך את המקור של ההעברה אחרי שהיא נוצרה.

כדי לעדכן העברה:

המסוף

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

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

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

  3. לוחצים על EDIT כדי לעדכן את הגדרות ההעברה.

BQ

מזינים את הפקודה bq update, מציינים את שם המשאב של הגדרת ההעברה באמצעות הדגל --transfer_config ומספקים את הדגלים --display_name,‏ --params,‏ --refresh_window_days,‏ --schedule או --target_dataset. אפשר גם לספק דגל --destination_kms_key לשאילתות מתוזמנות או להעברות מ-Cloud Storage.

bq update \
--display_name='NAME' \
--params='PARAMETERS' \
--refresh_window_days=INTEGER \
--schedule='SCHEDULE'
--target_dataset=DATASET_ID \
--destination_kms_key="DESTINATION_KEY" \
--transfer_config \
--service_account_name=SERVICE_ACCOUNT \
RESOURCE_NAME

מחליפים את מה שכתוב בשדות הבאים:

  • ‫NAME: השם המוצג של הגדרות ההעברה.
  • ‫PARAMETERS: הפרמטרים של הגדרות ההעברה בפורמט JSON. לדוגמה: --params='{"param1":"param_value1"}'. מידע על הפרמטרים הנתמכים מופיע במדריך להעברת נתונים של מקור הנתונים שלכם.
  • ‫INTEGER: ערך בין 0 ל-30. למידע על הגדרת חלון הרענון, עיינו במסמכי התיעוד של סוג ההעברה שלכם.
  • ‫SCHEDULE: לוח זמנים חוזר, למשל --schedule="every 3 hours". לתיאור של התחביר של schedule, ראו עיצוב של schedule.
  • DATASET_ID: קבוצת הנתונים של היעד להגדרות ההעברה.
  • ‫DESTINATION_KEY: מזהה המשאב של מפתח Cloud KMS – לדוגמה, projects/project_name/locations/us/keyRings/key_ring_name/cryptoKeys/key_name. אפשר להשתמש ב-CMEK רק בשאילתות מתוזמנות או בהעברות מ-Cloud Storage.
  • ‫SERVICE_ACCOUNT: מציינים חשבון שירות לשימוש בהעברה הזו.
  • ‫RESOURCE_NAME: שם המשאב של ההעברה (נקרא גם הגדרות ההעברה). אם אתם לא יודעים את שם המשאב של ההעברה, אתם יכולים למצוא אותו באמצעות: bq ls --transfer_config --transfer_location=location.

דוגמאות:

הפקודה הבאה מעדכנת את השם המוצג, את מערך הנתונים המוגדר כיעד, את חלון הרענון ואת הפרמטרים של העברת הנתונים מ-Google Ads, ‏projects/myproject/locations/us/transferConfigs/1234a123-1234-1a23-1be9-12ab3c456de7:

bq update \
--display_name='My changed transfer' \
--params='{"customer_id":"123-123-5678"}' \
--refresh_window_days=3 \
--target_dataset=mydataset2 \
--transfer_config \
 projects/myproject/locations/us/transferConfigs/1234a123-1234-1a23-1be9-12ab3c456de7

הפקודה הבאה מעדכנת את הפרמטרים ואת לוח הזמנים של העברת השאילתה המתוזמנת projects/myproject/locations/us/transferConfigs/5678z567-5678-5z67-5yx9-56zy3c866vw9:

bq update \
--params='{"destination_table_name_template":"test", "write_disposition":"APPEND"}' \
--schedule="every 24 hours" \
--transfer_config \
projects/myproject/locations/us/transferConfigs/5678z567-5678-5z67-5yx9-56zy3c866vw9

API

משתמשים ב-method‏ projects.transferConfigs.patch ומציינים את שם המשאב של ההעברה באמצעות הפרמטר transferConfig.name. אם אתם לא יודעים את שם המשאב של ההעברה, אתם יכולים למצוא אותו באמצעות: bq ls --transfer_config --transfer_location=location. אפשר גם להפעיל את ה-method הבאה ולספק את מזהה הפרויקט באמצעות הפרמטר parent כדי להציג את כל ההעברות: projects.locations.transferConfigs.list.

Java

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

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

import com.google.api.gax.rpc.ApiException;
import com.google.cloud.bigquery.datatransfer.v1.DataTransferServiceClient;
import com.google.cloud.bigquery.datatransfer.v1.TransferConfig;
import com.google.cloud.bigquery.datatransfer.v1.UpdateTransferConfigRequest;
import com.google.protobuf.FieldMask;
import com.google.protobuf.util.FieldMaskUtil;
import java.io.IOException;

// Sample to update transfer config.
public class UpdateTransferConfig {

  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace these variables before running the sample.
    String configId = "MY_CONFIG_ID";
    TransferConfig transferConfig =
        TransferConfig.newBuilder()
            .setName(configId)
            .setDisplayName("UPDATED_DISPLAY_NAME")
            .build();
    FieldMask updateMask = FieldMaskUtil.fromString("display_name");
    updateTransferConfig(transferConfig, updateMask);
  }

  public static void updateTransferConfig(TransferConfig transferConfig, FieldMask updateMask)
      throws IOException {
    try (DataTransferServiceClient dataTransferServiceClient = DataTransferServiceClient.create()) {
      UpdateTransferConfigRequest request =
          UpdateTransferConfigRequest.newBuilder()
              .setTransferConfig(transferConfig)
              .setUpdateMask(updateMask)
              .build();
      TransferConfig updateConfig = dataTransferServiceClient.updateTransferConfig(request);
      System.out.println("Transfer config updated successfully :" + updateConfig.getDisplayName());
    } catch (ApiException ex) {
      System.out.print("Transfer config was not updated." + ex.toString());
    }
  }
}

Python

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

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

import google.api_core.exceptions
from google.cloud import bigquery_datatransfer_v1
from google.protobuf import field_mask_pb2


client = bigquery_datatransfer_v1.DataTransferServiceClient()


def update_transfer_config(
    project_id: str,
    location: str,
    transfer_config_id: str,
) -> None:
    """Updates a data transfer configuration.

    This sample shows how to update the display name for a transfer
    configuration.

    Args:
        project_id: The Google Cloud project ID.
        location: The geographic location of the transfer config, for example "us-central1"
        transfer_config_id: The transfer configuration ID
    """
    transfer_config_name = client.transfer_config_path(
        project=f"{project_id}/locations/{location}",
        transfer_config=transfer_config_id,
    )

    transfer_config = bigquery_datatransfer_v1.types.TransferConfig(
        name=transfer_config_name,
        display_name="My New Transfer Config display name",
    )
    update_mask = field_mask_pb2.FieldMask(paths=["display_name"])

    try:
        response = client.update_transfer_config(
            transfer_config=transfer_config,
            update_mask=update_mask,
        )

        print(f"Updated transfer config: {response.name}")
        print(f"New display name: {response.display_name}")
    except google.api_core.exceptions.NotFound:
        print(f"Error: Transfer config '{transfer_config_name}' not found.")

עדכון פרטי הכניסה

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

כדי לעדכן את פרטי הכניסה להעברה:

המסוף

  1. במסוף Google Cloud , נכנסים בתור המשתמש שאליו רוצים להעביר את הבעלות.

  2. עוברים לדף העברות נתונים.

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

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

  4. לוחצים על התפריט MORE ובוחרים באפשרות Update credentials.

  5. לוחצים על Allow כדי לתת לשירות העברת הנתונים ל-BigQuery הרשאה לצפות בנתוני הדיווח, ולגשת לנתונים ב-BigQuery ולנהל אותם.

BQ

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

bq update \
--update_credentials=boolean \
--transfer_config \
resource_name

מחליפים את מה שכתוב בשדות הבאים:

  • ‫boolean הוא ערך בוליאני שמציין אם צריך לעדכן את פרטי הכניסה של הגדרת ההעברה.
  • ‫resource_name הוא שם המשאב של ההעברה (שנקרא גם הגדרת ההעברה). אם אתם לא יודעים את שם המשאב של ההעברה, אתם יכולים למצוא אותו באמצעות: bq ls --transfer_config --transfer_location=location.

דוגמאות:

מזינים את הפקודה הבאה כדי לעדכן את פרטי הכניסה להעברת הנתונים מ-Google Ads, ‏projects/myproject/locations/us/transferConfigs/1234a123-1234-1a23-1be9-12ab3c456de7.

bq update \
--update_credentials=true \
--transfer_config \
projects/myproject/locations/us/transferConfigs/1234a123-1234-1a23-1be9-12ab3c456de7

API

משתמשים ב-method‏ projects.transferConfigs.patch ומספקים את הפרמטרים authorizationCode ו-updateMask.

Java

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

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

import com.google.api.gax.rpc.ApiException;
import com.google.cloud.bigquery.datatransfer.v1.DataTransferServiceClient;
import com.google.cloud.bigquery.datatransfer.v1.TransferConfig;
import com.google.cloud.bigquery.datatransfer.v1.UpdateTransferConfigRequest;
import com.google.protobuf.FieldMask;
import com.google.protobuf.util.FieldMaskUtil;
import java.io.IOException;

// Sample to update credentials in transfer config.
public class UpdateCredentials {

  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace these variables before running the sample.
    String configId = "MY_CONFIG_ID";
    String serviceAccount = "MY_SERVICE_ACCOUNT";
    TransferConfig transferConfig = TransferConfig.newBuilder().setName(configId).build();
    FieldMask updateMask = FieldMaskUtil.fromString("service_account_name");
    updateCredentials(transferConfig, serviceAccount, updateMask);
  }

  public static void updateCredentials(
      TransferConfig transferConfig, String serviceAccount, FieldMask updateMask)
      throws IOException {
    try (DataTransferServiceClient dataTransferServiceClient = DataTransferServiceClient.create()) {
      UpdateTransferConfigRequest request =
          UpdateTransferConfigRequest.newBuilder()
              .setTransferConfig(transferConfig)
              .setUpdateMask(updateMask)
              .setServiceAccountName(serviceAccount)
              .build();
      dataTransferServiceClient.updateTransferConfig(request);
      System.out.println("Credentials updated successfully");
    } catch (ApiException ex) {
      System.out.print("Credentials was not updated." + ex.toString());
    }
  }
}

Python

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

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

from google.cloud import bigquery_datatransfer
from google.protobuf import field_mask_pb2

transfer_client = bigquery_datatransfer.DataTransferServiceClient()

service_account_name = "abcdef-test-sa@abcdef-test.iam.gserviceaccount.com"
transfer_config_name = "projects/1234/locations/us/transferConfigs/abcd"

transfer_config = bigquery_datatransfer.TransferConfig(name=transfer_config_name)

transfer_config = transfer_client.update_transfer_config(
    {
        "transfer_config": transfer_config,
        "update_mask": field_mask_pb2.FieldMask(paths=["service_account_name"]),
        "service_account_name": service_account_name,
    }
)

print("Updated config: '{}'".format(transfer_config.name))

השבתת העברה

כשמשביתים העברה, הערך disabled מתווסף לשם ההעברה. כשההעברה מושבתת, לא מתוזמנות הפעלות חדשות של העברות ואי אפשר למלא נתונים חסרים. כל הפעלות ההעברה שמתבצעות מסתיימות.

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

כדי להשבית העברה:

המסוף

  1. נכנסים לדף BigQuery במסוף Google Cloud .

    כניסה ל-BigQuery

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

  3. בדף Transfers, לוחצים על ההעברה לבעלות שרוצים להשבית.

  4. לוחצים על השבתה. כדי להפעיל מחדש את ההעברה, לוחצים על ENABLE.

BQ

אי אפשר להשבית העברה באמצעות ה-CLI.

API

משתמשים ב-method‏ projects.locations.transferConfigs.patch ומגדירים את disabled כ-true במשאב projects.locations.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.DataTransferServiceClient;
import com.google.cloud.bigquery.datatransfer.v1.TransferConfig;
import com.google.cloud.bigquery.datatransfer.v1.UpdateTransferConfigRequest;
import com.google.protobuf.FieldMask;
import com.google.protobuf.util.FieldMaskUtil;
import java.io.IOException;

// Sample to disable transfer config.
public class DisableTransferConfig {

  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace these variables before running the sample.
    String configId = "MY_CONFIG_ID";
    TransferConfig transferConfig =
        TransferConfig.newBuilder().setName(configId).setDisabled(true).build();
    FieldMask updateMask = FieldMaskUtil.fromString("disabled");
    disableTransferConfig(transferConfig, updateMask);
  }

  public static void disableTransferConfig(TransferConfig transferConfig, FieldMask updateMask)
      throws IOException {
    try (DataTransferServiceClient dataTransferServiceClient = DataTransferServiceClient.create()) {
      UpdateTransferConfigRequest request =
          UpdateTransferConfigRequest.newBuilder()
              .setTransferConfig(transferConfig)
              .setUpdateMask(updateMask)
              .build();
      TransferConfig updateConfig = dataTransferServiceClient.updateTransferConfig(request);
      System.out.println("Transfer config disabled successfully :" + updateConfig.getDisplayName());
    } catch (ApiException ex) {
      System.out.print("Transfer config was not disabled." + ex.toString());
    }
  }
}

כדי להפעיל מחדש את ההעברה:

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

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

/*
 * Copyright 2020 Google LLC
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.example.bigquerydatatransfer;

import com.google.api.gax.rpc.ApiException;
import com.google.cloud.bigquery.datatransfer.v1.DataTransferServiceClient;
import com.google.cloud.bigquery.datatransfer.v1.TransferConfig;
import com.google.cloud.bigquery.datatransfer.v1.UpdateTransferConfigRequest;
import com.google.protobuf.FieldMask;
import com.google.protobuf.util.FieldMaskUtil;
import java.io.IOException;

// Sample to disable transfer config.
public class DisableTransferConfig {

  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace these variables before running the sample.
    String configId = "MY_CONFIG_ID";
    TransferConfig transferConfig =
        TransferConfig.newBuilder().setName(configId).setDisabled(true).build();
    FieldMask updateMask = FieldMaskUtil.fromString("disabled");
    disableTransferConfig(transferConfig, updateMask);
  }

  public static void disableTransferConfig(TransferConfig transferConfig, FieldMask updateMask)
      throws IOException {
    try (DataTransferServiceClient dataTransferServiceClient = DataTransferServiceClient.create()) {
      UpdateTransferConfigRequest request =
          UpdateTransferConfigRequest.newBuilder()
              .setTransferConfig(transferConfig)
              .setUpdateMask(updateMask)
              .build();
      TransferConfig updateConfig = dataTransferServiceClient.updateTransferConfig(request);
      System.out.println("Transfer config disabled successfully :" + updateConfig.getDisplayName());
    } catch (ApiException ex) {
      System.out.print("Transfer config was not disabled." + ex.toString());
    }
  }
}

מחיקת העברה

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

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

כדי למחוק העברה:

המסוף

  1. נכנסים לדף BigQuery במסוף Google Cloud .

    כניסה ל-BigQuery

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

  3. בדף Transfers, לוחצים על ההעברה לבעלות שרוצים למחוק מהרשימה.

  4. לוחצים על מחיקה. כאמצעי בטיחות, תצטרכו להקליד את המילה "מחיקה" בתיבה כדי לאשר את הפעולה.

BQ

מזינים את הפקודה bq rm ומציינים את שם המשאב של הגדרת ההעברה. אפשר להשתמש בדגל -f כדי למחוק הגדרת העברה בלי אישור.

bq rm \
-f \
--transfer_config \
resource_name

כאשר:

  • ‫resource_name הוא שם המשאב של ההעברה, שנקרא גם הגדרת ההעברה. אם אתם לא יודעים את שם המשאב של ההעברה, הריצו את הפקודה bq ls --transfer_config --transfer_location=location כדי להציג את כל ההעברות.

לדוגמה, מזינים את הפקודה הבאה כדי למחוק את הגדרת ההעברה projects/myproject/locations/us/transferConfigs/1234a123-1234-1a23-1be9-12ab3c456de7.

bq rm \
--transfer_config \
projects/myproject/locations/us/transferConfigs/1234a123-1234-1a23-1be9-12ab3c456de7

API

משתמשים ב-method‏ projects.locations.transferConfigs.delete ומציינים את המשאב שרוצים למחוק באמצעות הפרמטר name.

Java

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

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

import com.google.api.gax.rpc.ApiException;
import com.google.cloud.bigquery.datatransfer.v1.DataTransferServiceClient;
import com.google.cloud.bigquery.datatransfer.v1.DeleteTransferConfigRequest;
import java.io.IOException;

// Sample to delete a transfer config
public class DeleteTransferConfig {

  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace these variables before running the sample.
    // i.e projects/{project_id}/transferConfigs/{config_id}` or
    // `projects/{project_id}/locations/{location_id}/transferConfigs/{config_id}`
    String configId = "MY_CONFIG_ID";
    deleteTransferConfig(configId);
  }

  public static void deleteTransferConfig(String configId) throws IOException {
    try (DataTransferServiceClient dataTransferServiceClient = DataTransferServiceClient.create()) {
      DeleteTransferConfigRequest request =
          DeleteTransferConfigRequest.newBuilder().setName(configId).build();
      dataTransferServiceClient.deleteTransferConfig(request);
      System.out.println("Transfer config deleted successfully");
    } catch (ApiException ex) {
      System.out.println("Transfer config was not deleted." + ex.toString());
    }
  }
}

Python

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

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

import google.api_core.exceptions
from google.cloud import bigquery_datatransfer_v1

client = bigquery_datatransfer_v1.DataTransferServiceClient()


def delete_transfer_config(
    project_id: str, location: str, transfer_config_id: str
) -> None:
    """Deletes a data transfer configuration, including any associated transfer runs and logs.

    Args:
        project_id: The Google Cloud project ID.
        location: The geographic location of the transfer configuration, for example, "us-central1".
        transfer_config_id: The transfer configuration ID, for example, "1234a-5678-90b1-2c3d-4e5f67890g12".
    """

    name = client.transfer_config_path(
        project=f"{project_id}/locations/{location}",
        transfer_config=transfer_config_id,
    )
    request = bigquery_datatransfer_v1.DeleteTransferConfigRequest(name=name)

    try:
        client.delete_transfer_config(request=request)
        print(f"Deleted transfer config {name}")
    except google.api_core.exceptions.NotFound:
        print(f"Error: Transfer config '{name}' not found.")

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

הפעלה ידנית של העברה

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

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

כדי לדעת כמה נתונים זמינים למילוי חוסרים, עיינו במדריך להעברת נתונים של מקור הנתונים שלכם.

התפקידים הנדרשים

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

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

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

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

  • בוחרים את הפעלת ההעברה באמצעות מסוף Google Cloud , ואז לוחצים על Run transfer now או על Schedule backfill.
  • משתמשים בפקודה bq mk --transfer run באמצעות כלי שורת הפקודה bq
  • שליחת קריאה ל-method‏ projects.locations.transferConfigs.startManualRuns method של ה-API

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

המסוף

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

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

  2. בוחרים את ההעברה מהרשימה.

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

    • אם לחצתם על Run transfer now, בוחרים באפשרות Run one time transfer או Run for specific date, לפי הצורך. אם בחרתם באפשרות Run for specific date, בוחרים תאריך ושעה ספציפיים:

      הפעלת ההעברה עכשיו

    • אם לחצתם על Schedule backfill, בוחרים באפשרות Run one time transfer או באפשרות Run for a date range, לפי הצורך. אם בחרתם באפשרות Run for a date range, בוחרים תאריך ושעה להתחלה ולסיום:

      תזמון מילוי חוסרים

  4. לוחצים על OK.

BQ

כדי להפעיל ידנית הרצת העברה, מזינים את הפקודה bq mk עם הדגל --transfer_run:

bq mk \
--transfer_run \
--run_time='RUN_TIME' \
RESOURCE_NAME

מחליפים את מה שכתוב בשדות הבאים:

  • ‫RUN_TIME היא חותמת זמן שמציינת את התאריך של העברה קודמת. צריך להשתמש בחותמות זמן שמסתיימות ב-Z או מכילות הפרש תקין של אזור זמן, לדוגמה 2022-08-19T12:11:35.00Z או 2022-05-25T00:00:00+00:00.
    • אם להעברה אין פרמטר של זמן ריצה, או אם אתם רק רוצים להפעיל העברה עכשיו בלי לציין העברה קודמת, הזינו את השעה הנוכחית בשדה הזה.
  • ‫RESOURCE_NAME הוא שם המשאב שמופיע בהגדרות ההעברה, לדוגמה projects/myproject/locations/us/transferConfigs/1234a123-1234-1a23-1be9-12ab3c456de7.

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

bq mk \
--transfer_run \
--start_time='START_TIME' \
--end_time='END_TIME' \
RESOURCE_NAME

מחליפים את מה שכתוב בשדות הבאים:

  • השדות START_TIME ו-END_TIME הם חותמות זמן שמסתיימות ב-Z או מכילות הפרש תקין מאזור הזמן. הערכים האלה מציינים את טווח התאריכים שכולל את הפעלות ההעברה הקודמות שרוצים למלא, לדוגמה 2022-08-19T12:11:35.00Z או 2022-05-25T00:00:00+00:00
  • ‫RESOURCE_NAME הוא שם המשאב שמופיע בהגדרות ההעברה, לדוגמה projects/myproject/locations/us/transferConfigs/1234a123-1234-1a23-1be9-12ab3c456de7

API

כדי להפעיל ידנית הרצת העברה, משתמשים ב-method‏ projects.locations.transferConfigs.startManualRuns ומציינים את שם המשאב של הגדרת ההעברה באמצעות הפרמטר parent. כדי למצוא את שם המשאב של הגדרת העברה, קראו את המאמר קבלת פרטי העברה.

  "requestedRunTime": "RUN_TIME"

מחליפים את מה שכתוב בשדות הבאים:

  • ‫RUN_TIME היא חותמת זמן שמציינת את התאריך של העברה קודמת. צריך להשתמש בחותמות זמן שמסתיימות ב-Z או מכילות הפרש תקין של אזור זמן, לדוגמה 2022-08-19T12:11:35.00Z או 2022-05-25T00:00:00+00:00.
    • אם להעברה אין פרמטר של זמן ריצה, או אם אתם רק רוצים להפעיל העברה עכשיו בלי לציין העברה קודמת, הזינו את השעה הנוכחית בשדה הזה.

כדי להפעיל ידנית העברה של טווח תאריכים, צריך לציין את טווח התאריכים:

"requestedTimeRange": {
  "startTime": "START_TIME",
  "endTime": "END_TIME"
}

מחליפים את מה שכתוב בשדות הבאים:

  • ‫START_TIME ו-END_TIME הן חותמות זמן שמסתיימות ב-Z או מכילות היסט תקין של אזור זמן. הערכים האלה מציינים את טווח התאריכים שכולל את הפעלות ההעברה הקודמות שרוצים למלא ממנו, לדוגמה 2022-08-19T12:11:35.00Z או 2022-05-25T00:00:00+00:00

Java

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

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

import com.google.api.gax.rpc.ApiException;
import com.google.cloud.bigquery.datatransfer.v1.DataTransferServiceClient;
import com.google.cloud.bigquery.datatransfer.v1.ScheduleTransferRunsRequest;
import com.google.cloud.bigquery.datatransfer.v1.ScheduleTransferRunsResponse;
import com.google.protobuf.Timestamp;
import java.io.IOException;
import org.threeten.bp.Clock;
import org.threeten.bp.Instant;
import org.threeten.bp.temporal.ChronoUnit;

// Sample to run schedule back fill for transfer config
public class ScheduleBackFill {

  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace these variables before running the sample.
    String configId = "MY_CONFIG_ID";
    Clock clock = Clock.systemDefaultZone();
    Instant instant = clock.instant();
    Timestamp startTime =
        Timestamp.newBuilder()
            .setSeconds(instant.minus(5, ChronoUnit.DAYS).getEpochSecond())
            .setNanos(instant.minus(5, ChronoUnit.DAYS).getNano())
            .build();
    Timestamp endTime =
        Timestamp.newBuilder()
            .setSeconds(instant.minus(2, ChronoUnit.DAYS).getEpochSecond())
            .setNanos(instant.minus(2, ChronoUnit.DAYS).getNano())
            .build();
    scheduleBackFill(configId, startTime, endTime);
  }

  public static void scheduleBackFill(String configId, Timestamp startTime, Timestamp endTime)
      throws IOException {
    try (DataTransferServiceClient client = DataTransferServiceClient.create()) {
      ScheduleTransferRunsRequest request =
          ScheduleTransferRunsRequest.newBuilder()
              .setParent(configId)
              .setStartTime(startTime)
              .setEndTime(endTime)
              .build();
      ScheduleTransferRunsResponse response = client.scheduleTransferRuns(request);
      System.out.println("Schedule backfill run successfully :" + response.getRunsCount());
    } catch (ApiException ex) {
      System.out.print("Schedule backfill was not run." + ex.toString());
    }
  }
}

Python

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

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

import datetime

from google.cloud.bigquery_datatransfer_v1 import (
    DataTransferServiceClient,
    StartManualTransferRunsRequest,
)

# Create a client object
client = DataTransferServiceClient()

# Replace with your transfer configuration name
transfer_config_name = "projects/1234/locations/us/transferConfigs/abcd"
now = datetime.datetime.now(datetime.timezone.utc)
start_time = now - datetime.timedelta(days=5)
end_time = now - datetime.timedelta(days=2)

# Some data sources, such as scheduled_query only support daily run.
# Truncate start_time and end_time to midnight time (00:00AM UTC).
start_time = datetime.datetime(
    start_time.year, start_time.month, start_time.day, tzinfo=datetime.timezone.utc
)
end_time = datetime.datetime(
    end_time.year, end_time.month, end_time.day, tzinfo=datetime.timezone.utc
)

requested_time_range = StartManualTransferRunsRequest.TimeRange(
    start_time=start_time,
    end_time=end_time,
)

# Initialize request argument(s)
request = StartManualTransferRunsRequest(
    parent=transfer_config_name,
    requested_time_range=requested_time_range,
)

# Make the request
response = client.start_manual_transfer_runs(request=request)

# Handle the response
print("Started manual transfer runs:")
for run in response.runs:
    print(f"backfill: {run.run_time} run: {run.name}")

רישום ביומן ומעקב

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

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

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

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