Trasferimenti dell'archiviazione BLOB

BigQuery Data Transfer Service per Azure Blob Storage ti consente di pianificare e gestire job di caricamento ricorrenti da Archiviazione BLOB in in BigQuery.

Prima di iniziare

Prima di creare un trasferimento di Archiviazione BLOB, segui questi passaggi:

Autorizzazioni obbligatorie

Per creare un trasferimento di Archiviazione BLOB, devi disporre bigquery.transfers.update Autorizzazione Identity and Access Management (IAM). Devi inoltre avere le autorizzazioni bigquery.datasets.get e bigquery.datasets.update nella set di dati di destinazione.

Il ruolo IAM predefinito di bigquery.admin include le autorizzazioni necessario per creare un trasferimento di archiviazione BLOB.

Per ulteriori informazioni su IAM di BigQuery, consulta Controllo dell'accesso con IAM.

Verifica di avere le autorizzazioni corrette in Archiviazione BLOB per attivare il trasferimento, consulta Firma di accesso condiviso.

Se intendi configurare le notifiche di esecuzione del trasferimento per Pub/Sub, devi dispongono dell'autorizzazione pubsub.topics.setIamPolicy. Non sono necessarie autorizzazioni Pub/Sub per le notifiche via email . Per ulteriori informazioni, vedi Notifiche di esecuzione di BigQuery Data Transfer Service.

Limitazioni

I trasferimenti di Archiviazione BLOB sono soggetti alle seguenti limitazioni:

Configura un trasferimento di dati da archiviazione BLOB

Seleziona una delle seguenti opzioni:

Console

  1. Nella console Google Cloud, vai alla pagina BigQuery.

    Vai a BigQuery

  2. Nel menu di navigazione di BigQuery, fai clic su Trasferimenti di dati.

  3. Fai clic su Crea trasferimento.

  4. Nella pagina Crea trasferimento, segui questi passaggi:

    • Nella sezione Tipo di origine, per Origine, scegli Archiviazione BLOB di Azure.

      Tipo di origine di trasferimento

    • Nella sezione Nome configurazione di trasferimento, per Nome visualizzato, inserisci un nome del trasferimento.

    • Nella sezione Opzioni di pianificazione:

      • Seleziona Frequenza di ripetizione. Se selezioni Ore, Giorni, Settimane o Mesi, devi anche specificare una frequenza. Tu Puoi anche selezionare Personalizzata per specificare una frequenza di ripetizione personalizzata. Se selezioni On demand, questo trasferimento verrà eseguito quando il trasferimento viene attivato manualmente.

      • Se applicabile, seleziona Inizia ora o Inizia all'ora impostata. e specificare una data di inizio e un'ora di esecuzione.

    • Nella sezione Impostazioni destinazione, per Set di dati, scegli il creato per archiviare i dati.

    • Nella sezione Dettagli origine dati:

      • In Tabella di destinazione, inserisci il nome della tabella che hai creato. per archiviare i dati in BigQuery. Tabella di destinazione supporto nomi parametri.
      • In Nome account di archiviazione Azure, inserisci il Nome account Archiviazione BLOB.
      • In Nome container, inserisci la colonna Archiviazione BLOB il nome del container.
      • In Percorso dati, inserisci il percorso per filtrare i file da trasferire. Vedi gli esempi.
      • In Token SAS, inserisci il token di Azure SAS.
      • In Formato file, scegli il formato dei dati di origine.
      • Per Disposizione di scrittura, seleziona WRITE_APPEND per aggiungere in modo incrementale nuovi dati a tabella di destinazione o WRITE_TRUNCATE per sovrascrivere i dati nel tabella di destinazione durante ogni esecuzione del trasferimento. WRITE_APPEND è il valore predefinito per Scrivi.

      Per ulteriori informazioni su come BigQuery Data Transfer Service importa i dati utilizzando WRITE_APPEND o WRITE_TRUNCATE, consulta Importazione dati per i trasferimenti di BLOB di Azure. Per ulteriori informazioni sul campo writeDisposition, consulta JobConfigurationLoad.

      Dettagli origine dati

    • Nella sezione Opzioni di trasferimento, procedi nel seguente modo:

      • In Numero di errori consentiti, inserisci un valore intero per il numero massimo di record non validi che è possibile ignorare. Il valore predefinito è 0.
      • (Facoltativo) Per i tipi di targeting decimale, inserisci i valori separati da virgole elenco dei possibili tipi di dati SQL con valori decimali nell'origine in cui vengono convertiti i dati. Per quale tipo di dati SQL è selezionato della conversione dipende dalle seguenti condizioni:
        • Nell'ordine di NUMERIC, BIGNUMERIC e STRING, un tipo è selezionato se è nell'elenco specificato e se supporta precisione e scala.
        • Se nessuno dei tipi di dati elencati supporta la precisione e scalabilità, il tipo di dati che supporta la più ampia gamma sia selezionato l'elenco specificato. Se un valore supera il limite supportato durante la lettura dei dati di origine, viene generato un errore.
        • Il tipo di dati STRING supporta tutti i valori di precisione e scala.
        • Se questo campo viene lasciato vuoto, per impostazione predefinita il tipo di dati sarà NUMERIC,STRING per ORC e NUMERIC per gli altri formati file.
        • Questo campo non può contenere tipi di dati duplicati.
        • L'ordine dei tipi di dati elencati viene ignorato.
    • Se hai scelto il formato file CSV o JSON, in JSON, CSV seleziona Ignora valori sconosciuti per accettare le righe che contengono valori che non corrispondono allo schema.

    • Se hai scelto CSV come formato file, inserisci uno qualsiasi nella sezione CSV opzioni CSV aggiuntive per caricare i dati.

      Opzioni CSV

    • Nella sezione Opzioni di notifica, puoi scegliere di attivare notifiche email e notifiche Pub/Sub.

      • Quando abiliti le notifiche via email, l'amministratore del trasferimento riceve una notifica via email quando un trasferimento non va a buon fine.
      • Quando attivi Notifiche Pub/Sub scegli il nome di un argomento in cui pubblicare o fai clic Crea un argomento per crearne uno.
    • Se usi le CMEK, nella Nella sezione Opzioni avanzate, seleziona Chiave gestita dal cliente. Un elenco di vengono visualizzate le CMEK disponibili tra cui scegliere. Per informazioni su come funzionano le CMEK con BigQuery Data Transfer Service, vedi Specifica la chiave di crittografia con trasferimenti.

  5. Fai clic su Salva.

bq

Utilizza la Comando bq mk --transfer_config per creare un trasferimento di Archiviazione BLOB:

bq mk \
  --transfer_config \
  --project_id=PROJECT_ID \
  --data_source=DATA_SOURCE \
  --display_name=DISPLAY_NAME \
  --target_dataset=DATASET \
  --destination_kms_key=DESTINATION_KEY \
  --params=PARAMETERS

Sostituisci quanto segue:

  • PROJECT_ID: (facoltativo) l'ID progetto contenente del set di dati di destinazione. Se non specificato, viene utilizzato il progetto predefinito.
  • DATA_SOURCE: azure_blob_storage.
  • DISPLAY_NAME: il nome visualizzato del trasferimento configurazione. Il nome del trasferimento può essere qualsiasi valore che ti consenta di identificare il trasferimento se devi modificarlo in un secondo momento.
  • DATASET: set di dati di destinazione per il trasferimento configurazione.
  • DESTINATION_KEY: (facoltativo) il campo ID risorsa della chiave Cloud KMS: ad esempio projects/project_name/locations/us/keyRings/key_ring_name/cryptoKeys/key_name.
  • PARAMETERS: i parametri del trasferimento di rete, elencata in formato JSON. Ad esempio: --params={"param1":"value1", "param2":"value2"}. Di seguito sono riportati i per un trasferimento dello spazio di archiviazione BLOB:
    • destination_table_name_template: campo obbligatorio. Il nome del tuo tabella di destinazione.
    • storage_account: campo obbligatorio. Il nome dell'account Archiviazione BLOB.
    • container: campo obbligatorio. Il nome del container di archiviazione BLOB.
    • data_path: facoltativo. Il percorso per filtrare i file da trasferire. Consulta esempi.
    • sas_token: campo obbligatorio. Il token Azure SAS.
    • file_format: facoltativo. Il tipo di file che vuoi trasferire: CSV, JSON, AVRO, PARQUET o ORC. Il valore predefinito è CSV.
    • write_disposition: facoltativo. Seleziona WRITE_APPEND a cui aggiungere dati tabella di destinazione, o WRITE_TRUNCATE, per sovrascrivere i dati nel tabella di destinazione. Il valore predefinito è WRITE_APPEND.
    • max_bad_records: facoltativo. Il numero di record non validi consentiti. La il valore predefinito è 0.
    • decimal_target_types: facoltativo. Un elenco separato da virgole di possibili query SQL i tipi di dati in cui vengono convertiti i valori decimali nei dati di origine. Se questo campo non è fornito, per impostazione predefinita il tipo di dati è NUMERIC,STRING per ORC e NUMERIC per gli altri formati file.
    • ignore_unknown_values: facoltativo e ignorato se file_format non è JSON o CSV. Imposta true per accettare righe contenenti valori che non corrispondono allo schema.
    • field_delimiter: facoltativo e si applica solo quando file_format è CSV. Il carattere che separa i campi. Il valore predefinito è ,.
    • skip_leading_rows: facoltativo e si applica solo quando file_format è CSV. Indica il numero di righe di intestazione che non vuoi per l'importazione. Il valore predefinito è 0.
    • allow_quoted_newlines: facoltativo e si applica solo quando file_format è CSV. Indica se consentire gli a capo all'interno dei campi tra virgolette.
    • allow_jagged_rows: facoltativo e si applica solo quando file_format è CSV. Indica se accettare le righe mancanti colonne facoltative. I valori mancanti sono stati compilati con NULL.

Ad esempio, quanto segue crea un trasferimento di Archiviazione BLOB chiamato mytransfer:

bq mk \
  --transfer_config \
  --data_source=azure_blob_storage \
  --display_name=mytransfer \
  --target_dataset=mydataset \
  --destination_kms_key=projects/myproject/locations/us/keyRings/mykeyring/cryptoKeys/key1
  --params={"destination_table_name_template":"mytable",
      "storage_account":"myaccount",
      "container":"mycontainer",
      "data_path":"myfolder/*.csv",
      "sas_token":"my_sas_token_value",
      "file_format":"CSV",
      "max_bad_records":"1",
      "ignore_unknown_values":"true",
      "field_delimiter":"|",
      "skip_leading_rows":"1",
      "allow_quoted_newlines":"true",
      "allow_jagged_rows":"false"}

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 create azure blob storage transfer config.
public class CreateAzureBlobStorageTransfer {

  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 displayName = "MY_TRANSFER_DISPLAY_NAME";
    final String datasetId = "MY_DATASET_ID";
    String tableId = "MY_TABLE_ID";
    String storageAccount = "MY_AZURE_STORAGE_ACCOUNT_NAME";
    String containerName = "MY_AZURE_CONTAINER_NAME";
    String dataPath = "MY_AZURE_FILE_NAME_OR_PREFIX";
    String sasToken = "MY_AZURE_SAS_TOKEN";
    String fileFormat = "CSV";
    String fieldDelimiter = ",";
    String skipLeadingRows = "1";
    Map<String, Value> params = new HashMap<>();
    params.put(
        "destination_table_name_template", Value.newBuilder().setStringValue(tableId).build());
    params.put("storage_account", Value.newBuilder().setStringValue(storageAccount).build());
    params.put("container", Value.newBuilder().setStringValue(containerName).build());
    params.put("data_path", Value.newBuilder().setStringValue(dataPath).build());
    params.put("sas_token", Value.newBuilder().setStringValue(sasToken).build());
    params.put("file_format", Value.newBuilder().setStringValue(fileFormat).build());
    params.put("field_delimiter", Value.newBuilder().setStringValue(fieldDelimiter).build());
    params.put("skip_leading_rows", Value.newBuilder().setStringValue(skipLeadingRows).build());
    createAzureBlobStorageTransfer(projectId, displayName, datasetId, params);
  }

  public static void createAzureBlobStorageTransfer(
      String projectId, String displayName, String datasetId, Map<String, Value> params)
      throws IOException {
    TransferConfig transferConfig =
        TransferConfig.newBuilder()
            .setDestinationDatasetId(datasetId)
            .setDisplayName(displayName)
            .setDataSourceId("azure_blob_storage")
            .setParams(Struct.newBuilder().putAllFields(params).build())
            .setSchedule("every 24 hours")
            .build();
    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests.
    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("Azure Blob Storage transfer created successfully: " + config.getName());
    } catch (ApiException ex) {
      System.out.print("Azure Blob Storage transfer was not created." + ex.toString());
    }
  }
}

Specifica la chiave di crittografia con trasferimenti

Puoi specificare le chiavi di crittografia gestite dal cliente (CMEK) per crittografare i dati per un'esecuzione di trasferimento. Puoi utilizzare una CMEK per supportare i trasferimenti da Archiviazione BLOB di Azure.

Quando specifichi una CMEK con un trasferimento, BigQuery Data Transfer Service applica CMEK a qualsiasi cache intermedia su disco dei dati importati, il flusso di lavoro di trasferimento dati è conforme a CMEK.

Non puoi aggiornare un trasferimento esistente per aggiungere una CMEK se il trasferimento non è stato eseguito originariamente creato con una CMEK. Ad esempio, non puoi modificare una destinazione che in origine era criptata per impostazione predefinita e ora è crittografata con CMEK. Al contrario, non puoi neanche modificare una tabella di destinazione criptata con CMEK un tipo diverso di crittografia.

Puoi aggiornare una CMEK per un trasferimento se la configurazione del trasferimento era originariamente creato con una crittografia CMEK. Quando aggiorni una CMEK per un trasferimento configurazione, BigQuery Data Transfer Service propaga la CMEK alla destinazione alla successiva esecuzione del trasferimento, in cui BigQuery Data Transfer Service sostituisce qualsiasi CMEK obsoleta con la nuova durante l'esecuzione del trasferimento. Per ulteriori informazioni, vedi Aggiornare un trasferimento.

Puoi anche usare le chiavi predefinite di progetto. Quando specifichi una chiave predefinita di progetto con un trasferimento, BigQuery Data Transfer Service usa la chiave predefinita del progetto come chiave predefinita per tutti i nuovi trasferimenti configurazioni.

Risolvere i problemi di configurazione del trasferimento

Se riscontri problemi durante la configurazione del trasferimento, consulta l'articolo Problemi di trasferimento dello spazio di archiviazione BLOB.

Passaggi successivi