Notifiche di esecuzione di BigQuery Data Transfer Service

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

Esistono due tipi di notifiche di esecuzione che puoi configurare 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 via email: notifiche leggibili inviate quando un trasferimento non va a buon fine

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 dei trasferimenti a un argomento Pub/Sub. Le notifiche Pub/Sub vengono attivate dalle esecuzioni di trasferimento completate 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 abbonati 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à le 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 hai l'autorizzazione necessaria.

    • Se prevedi di creare argomenti per ricevere notifiche, devi avere le autorizzazioni pubsub.topics.create.

    • Indipendentemente dal fatto che tu intenda utilizzare argomenti nuovi o esistenti, devi disporre delle autorizzazioni pubsub.topics.getIamPolicy e pubsub.topics.setIamPolicy. Se crei un argomento, solitamente disponi già dell'autorizzazione. Le seguenti impostazioni predefinite Il ruolo IAM ha sia pubsub.topics.getIamPolicy che Autorizzazioni pubsub.topics.setIamPolicy: pubsub.admin. Per ulteriori informazioni, consulta Controllo dell'accesso Pub/Sub.

  3. Disporre di un argomento Pub/Sub esistente che vuoi 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. Le notifiche contengono sempre il seguente insieme di coppie chiave:valore, indipendentemente dal payload della notifica:

Nome dell'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 contenente 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 serializzazione JSON UTF-8 contenente la rappresentazione della risorsa di un TransferRun.

Notifiche via email

Le notifiche via email inviano messaggi leggibili quando un trasferimento non va a buon fine. Questi messaggi vengono inviati all'email dell'amministratore trasferito - l'account che ha configurato il trasferimento. Non puoi configurare i contenuti e non puoi configurare il destinatario del messaggio.

Se hai utilizzato un account di servizio per autenticare una configurazione di trasferimento, potrebbe non avere accesso all'email per ricevere email di notifica sull'esecuzione del trasferimento. In questi casi, ti consigliamo di configurare le notifiche Pub/Sub. per ricevere notifiche sull'esecuzione del trasferimento.

Per inviare notifiche via email per l'esecuzione del trasferimento ad altri utenti, 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 sulla configurazione del trasferimento, sull'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: TRANSFER_ADMIN
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.

Attivare o modificare le notifiche

Per attivare le notifiche o modificarne una esistente, scegli una delle seguenti opzioni:

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 modificare le notifiche di un trasferimento esistente, fai clic sul nome del trasferimento e poi su Modifica.

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

    • Notifiche via email: se attivi questa opzione, l'amministratore dei trasferimenti riceve una notifica via email quando un'esecuzione del trasferimento non va a buon fine.
    • Notifiche Pub/Sub: quando attivi questa opzione, scegli il tuo nome o il tuo clic in 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 di configurazione Java riportate nella guida rapida all'utilizzo di BigQuery con le librerie client. Per ulteriori informazioni, consulta API Java BigQuery documentazione di riferimento.

Per autenticarti a BigQuery, configura le credenziali predefinite dell'applicazione. Per saperne di più, consulta Configurare 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 la documentazione di riferimento dell'API BigQuery Python.

Per autenticarti a BigQuery, configura le 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