Notifiche di esecuzione di BigQuery Data Transfer Service

Questa pagina fornisce una panoramica delle notifiche di esecuzione per BigQuery Data Transfer Service.

Panoramica

Puoi configurare due tipi di notifiche di esecuzione per BigQuery Data Transfer Service:

  • Notifiche Pub/Sub: notifiche leggibili dalla macchina inviate quando un'esecuzione di trasferimento va a buon fine o meno
  • Notifiche email: notifiche leggibili inviate durante un trasferimento esecuzione non riuscita

Puoi configurare ogni tipo singolarmente oppure puoi utilizzare sia Pub/Sub e inviare notifiche di esecuzione via email.

Notifiche Pub/Sub

Le notifiche Pub/Sub inviano informazioni sulle esecuzioni di trasferimento a Pub/Sub. Le notifiche Pub/Sub vengono attivate il trasferimento completato viene eseguito nei seguenti stati:

  • SUCCEEDED
  • FAILED
  • CANCELLED

Puoi inviare notifiche a qualsiasi argomento Pub/Sub in qualsiasi progetto per per i quali disponi di autorizzazioni sufficienti. Una volta ricevuto dal argomento Pub/Sub, il messaggio risultante può essere inviato a un sottoscrittori all'argomento.

Prima di iniziare

Prima di configurare le notifiche di esecuzione del trasferimento Pub/Sub, devi:

  1. Abilita l'API Pub/Sub per il progetto che riceverà notifiche.

    Attiva l'API

  2. Disporre di autorizzazioni sufficienti per il progetto che riceverà le notifiche:

    • Se sei il proprietario del progetto che riceverà le notifiche, molto probabilmente dispongono dell'autorizzazione necessaria.

    • Se prevedi di creare argomenti per la ricezione delle notifiche, dispongono delle autorizzazioni pubsub.topics.create.

    • Sia che tu intenda utilizzare argomenti nuovi o esistenti, devi avere pubsub.topics.getIamPolicy e pubsub.topics.setIamPolicy autorizzazioni. Se crei un argomento, in genere hai già l'autorizzazione. Le seguenti impostazioni predefinite Il ruolo IAM ha sia pubsub.topics.getIamPolicy che Autorizzazioni pubsub.topics.setIamPolicy: pubsub.admin. Consulta Controllo dell'accesso Pub/Sub per ulteriori informazioni.

  3. Disporre di un argomento Pub/Sub esistente da inviare. notifiche.

Formato delle notifiche

Le notifiche inviate all'argomento Pub/Sub sono composte da due parti:

  • Attributi: un set di coppie chiave:valore che descrivono l'evento.
  • Payload: una stringa contenente i metadati dell'oggetto modificato.

Attributi

Gli attributi sono coppie chiave:valore contenute in tutte le notifiche inviate da di BigQuery Data Transfer Service in un argomento Pub/Sub. Notifiche sempre contengono il seguente set di coppie chiave:valore, indipendentemente dallo stato della notifica payload:

Nome attributo Esempio Descrizione
eventType TRANSFER_RUN_FINISHED Il tipo di evento che si è appena verificato. TRANSFER_RUN_FINISHED è l'unico valore possibile.
payloadFormat JSON_API_V1 Il formato del payload dell'oggetto. JSON_API_V1 è l'unico valore possibile.

Payload

Il payload è una stringa che contiene i metadati dell'esecuzione del trasferimento. Il tipo di payload non è al momento configurabile ed è fornito per modifiche future alla versione API.

Tipo di payload Descrizione
JSON_API_V1 Il payload sarà una stringa con serie JSON UTF-8 contenente la rappresentazione della risorsa di un TransferRun.

Notifiche via email

Le notifiche via email inviano messaggi email leggibili durante l'esecuzione di un trasferimento non riesce. Questi messaggi vengono inviati all'utente che ha configurato il trasferimento. I messaggi non sono configurabili.

Se altri utenti devono ricevere notifiche via email per l'esecuzione del trasferimento, configura l'email regole di forwarding per distribuire i messaggi. Se utilizzi Gmail, puoi Inoltrare automaticamente i messaggi di Gmail a un altro account.

La notifica via email viene inviata da BigQuery Data Transfer Service e contiene dettagli configurazione del trasferimento, esecuzione del trasferimento e un link alla cronologia delle esecuzioni per l'esecuzione non riuscita. Ad esempio:

From: bigquery-data-transfer-service-noreply@google.com
To: user_who_set_up_transfer
Title: BigQuery Data Transfer Service — Transfer Run Failure —
display_name

Transfer Configuration
Display Name: display_name
Source: data_source
Destination: project_id

Run Summary
Run: run_name
Schedule Time: schedule_time
Run Time: run_time
View Run History


Google LLC 1600 Amphitheatre Parkway, Mountain View, CA 94043

This email was sent because you indicated you are willing to receive Run
Notifications from the BigQuery Data Transfer Service. If you do not wish to
receive such emails in the future, click View Transfer Configuration and
un-check the "Send E-mail Notifications" option.

Attiva notifiche

Puoi attivare le notifiche in uno dei seguenti modi:

Console

  1. Vai alla pagina BigQuery nella console Google Cloud.

    Vai alla pagina di BigQuery

  2. Fai clic su Trasferimenti di dati nel menu di navigazione.

  3. Per attivare le notifiche per un nuovo trasferimento, fai clic su Crea trasferimento. Per regolare notifiche relative a un trasferimento esistente, fai clic sul nome del trasferimento e poi fai clic su Modifica.

  4. Nella sezione Opzioni di notifica, fai clic sui pulsanti di attivazione/disattivazione accanto al tipi di notifiche da attivare.

    • Notifiche via email: quando attivi questa opzione, il trasferimento L'amministratore riceve una notifica via email quando viene eseguito un trasferimento non riesce.
    • Notifiche Pub/Sub: quando abiliti questa opzione, scegli il tuo nome o il tuo clic sull'argomento Crea un argomento. Questa opzione configura l'esecuzione di Pub/Sub notifiche per il tuo trasferimento.

Java

Prima di provare questo esempio, segui le istruzioni per la configurazione di Java nel Guida rapida di BigQuery con librerie client. Per ulteriori informazioni, consulta API Java BigQuery documentazione di riferimento.

Per eseguire l'autenticazione su BigQuery, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per le librerie client.

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 get run notification
public class RunNotification {

  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace these variables before running the sample.
    final String projectId = "MY_PROJECT_ID";
    final String datasetId = "MY_DATASET_ID";
    final String pubsubTopicName = "MY_TOPIC_NAME";
    final String query =
        "SELECT CURRENT_TIMESTAMP() as current_time, @run_time as intended_run_time, "
            + "@run_date as intended_run_date, 17 as some_integer";
    Map<String, Value> params = new HashMap<>();
    params.put("query", Value.newBuilder().setStringValue(query).build());
    params.put(
        "destination_table_name_template",
        Value.newBuilder().setStringValue("my_destination_table_{run_date}").build());
    params.put("write_disposition", Value.newBuilder().setStringValue("WRITE_TRUNCATE").build());
    params.put("partitioning_field", Value.newBuilder().build());
    TransferConfig transferConfig =
        TransferConfig.newBuilder()
            .setDestinationDatasetId(datasetId)
            .setDisplayName("Your Scheduled Query Name")
            .setDataSourceId("scheduled_query")
            .setParams(Struct.newBuilder().putAllFields(params).build())
            .setSchedule("every 24 hours")
            .setNotificationPubsubTopic(pubsubTopicName)
            .build();
    runNotification(projectId, transferConfig);
  }

  public static void runNotification(String projectId, TransferConfig transferConfig)
      throws IOException {
    try (DataTransferServiceClient dataTransferServiceClient = DataTransferServiceClient.create()) {
      ProjectName parent = ProjectName.of(projectId);
      CreateTransferConfigRequest request =
          CreateTransferConfigRequest.newBuilder()
              .setParent(parent.toString())
              .setTransferConfig(transferConfig)
              .build();
      TransferConfig config = dataTransferServiceClient.createTransferConfig(request);
      System.out.println(
          "\nScheduled query with run notification created successfully :" + config.getName());
    } catch (ApiException ex) {
      System.out.print("\nScheduled query with run notification was not created." + ex.toString());
    }
  }
}

Python

Prima di provare questo esempio, segui le istruzioni per la configurazione di Python nel Guida rapida di BigQuery con librerie client. Per ulteriori informazioni, consulta API Python BigQuery documentazione di riferimento.

Per eseguire l'autenticazione su BigQuery, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per le librerie client.

transfer_config_name = "projects/1234/locations/us/transferConfigs/abcd"
pubsub_topic = "projects/PROJECT-ID/topics/TOPIC-ID"
from google.cloud import bigquery_datatransfer
from google.protobuf import field_mask_pb2

transfer_client = bigquery_datatransfer.DataTransferServiceClient()

transfer_config = bigquery_datatransfer.TransferConfig(name=transfer_config_name)
transfer_config.notification_pubsub_topic = pubsub_topic
update_mask = field_mask_pb2.FieldMask(paths=["notification_pubsub_topic"])

transfer_config = transfer_client.update_transfer_config(
    {"transfer_config": transfer_config, "update_mask": update_mask}
)

print(f"Updated config: '{transfer_config.name}'")
print(f"Notification Pub/Sub topic: '{transfer_config.notification_pubsub_topic}'")

Esegui prezzi delle notifiche

Configurando le notifiche di esecuzione di Pub/Sub, riceverai addebiti di Pub/Sub. Per ulteriori informazioni, consulta Pub/Sub nella pagina Prezzi.

Passaggi successivi