Utilizza il driver JDBC per BigQuery

Il driver Java Database Connectivity (JDBC) per BigQuery connette la tua applicazione Java a BigQuery, consentendoti di utilizzare le funzionalità di BigQuery con gli strumenti e l'infrastruttura che preferisci. Questo driver è progettato specificamente per BigQuery e non può essere utilizzato con altri prodotti o servizi. Per utilizzare questo driver non sono necessarie licenze aggiuntive.

Prima di iniziare

  1. Assicurati di avere familiarità con i driver JDBC e il pacchetto java.sql.
  2. Verifica che il sistema sia configurato con Java Runtime Environment (JRE) 8.0 o versioni successive.

Configurare il driver

Per configurare il driver JDBC per BigQuery, devi installarlo, autenticarti in BigQuery e stabilire una connessione.

Installare il driver

  1. Scarica uno dei seguenti pacchetti JDBC:
  2. Aggiungi il file JAR scaricato al classpath in modo che il compilatore Java e il runtime possano individuare le classi JDBC necessarie.

Autenticarsi in BigQuery

Il driver JDBC per BigQuery offre diverse opzioni di autenticazione:

  • utilizza un service account
  • Utilizzo di un account utente Google
  • Utilizzo di un token di accesso e di aggiornamento pregenerato
  • Utilizzo delle credenziali predefinite dell'applicazione
  • Utilizzo di un metodo esterno

Autenticarsi con un account di servizio

Quando stabilisci una connessione con il driver JDBC per BigQuery, procedi nel seguente modo:

  1. Imposta la proprietà di connessione OAuthType su 0.
  2. Imposta la proprietà di connessione ProjectId sul nome del tuo progetto BigQuery.
  3. Esegui una delle seguenti operazioni:
    • Se utilizzi un'email e una chiave dell'account di servizio, imposta la proprietà di connessione OAuthServiceAcctEmail sull'indirizzo email dell'account di servizio Google e imposta la proprietà di connessione OAuthPvtKey sull'oggetto JSON della chiave dell'account di servizio. Per OAuthPvtKey, puoi utilizzare l'oggetto JSON della chiave o il percorso completo del file di chiave.
    • Se utilizzi un file delle chiavi di un account di servizio, imposta la proprietà di connessione OAuthPvtKeyPath sul percorso completo del file delle chiavi del service account.

I due esempi seguenti utilizzano l'autenticazione del account di servizio:

jdbc:bigquery://https://www.googleapis.com/bigquery/v2:443;
ProjectId=MyTestProject;OAuthType=0;
OAuthServiceAcctEmail=bq-jdbc-sa@mytestproject.iam.gserviceaccount.com;
OAuthPvtKey=my-sa-key
jdbc:bigquery://https://www.googleapis.com/bigquery/v2:443;
ProjectId=MyTestProject;OAuthType=0;
OAuthPvtKeyPath=path/to/file/secret.json;

Autenticarsi con un account utente Google

Quando stabilisci una connessione con il driver JDBC per BigQuery, procedi nel seguente modo:

  1. Imposta la proprietà di connessione OAuthType su 1.
  2. Imposta la proprietà di connessione ProjectId sul nome del tuo progetto BigQuery.
  3. Imposta la proprietà di connessione OAuthClientId sull'ID client e la proprietà di connessione OAuthClientSecret sul client secret.

Per saperne di più, consulta Utilizzare OAuth 2.0 per accedere alle API di Google e Gestire i client OAuth.

L'esempio seguente utilizza l'autenticazione dell'account utente Google:

jdbc:bigquery://https://www.googleapis.com/bigquery/v2:443;
ProjectId=MyTestProject;OAuthType=1;
OAuthClientId=123456789012-abcdefghijklmnopqrstuvwxyz12345.apps.googleusercontent.com;
OAuthClientSecret=_aB-C1D_E2fGh3Ij4kL5m6No7p8QR9sT0uV;

Autenticarsi con un token di accesso o di aggiornamento pregenerato

Quando stabilisci una connessione con il driver JDBC per BigQuery, procedi nel seguente modo:

  1. Imposta la proprietà di connessione OAuthType su 2.
  2. Imposta la proprietà di connessione ProjectId sul nome del tuo progetto BigQuery.
  3. Esegui una delle seguenti operazioni:
    • Se utilizzi un token di accesso pregenerato, imposta la proprietà di connessione OAuthAccessToken sul token di accesso.
    • Se utilizzi un token di aggiornamento pregenerato, imposta la proprietà di connessione OAuthRefreshToken sul token di aggiornamento, la proprietà di connessione OAuthClientId sull'ID client e la proprietà di connessione OAuthClientSecret sul client secret.

Per saperne di più, consulta Utilizzare OAuth 2.0 per accedere alle API di Google.

Il seguente esempio utilizza l'autenticazione con token di accesso pregenerato:

jdbc:bigquery://https://www.googleapis.com/bigquery/v2:443;
ProjectId=MyTestProject;OAuthType=2;
OAuthAccessToken=ya29.a0AfH6SMCiH1L-x_yZABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_;

L'esempio seguente utilizza l'autenticazione con token di aggiornamento pregenerato:

jdbc:bigquery://https://www.googleapis.com/bigquery/v2:443;
ProjectId=MyTestProject;OAuthType=2;
OAuthClientId=123456789012-abcdefghijklmnopqrstuvwxyz12345.apps.googleusercontent.com;
OAuthClientSecret=_aB-C1D_E2fGh3Ij4kL5m6No7p8QR9sT0uV;
OAuthRefreshToken=1/fFAGRNJru1FTz70BzhT3Zg;

Eseguire l'autenticazione con le Credenziali predefinite dell'applicazione

Credenziali predefinite dell'applicazione (ADC) sono una strategia utilizzata dalle librerie di autenticazione per trovare automaticamente le credenziali in base all'ambiente dell'applicazione.

Quando stabilisci una connessione con il driver JDBC per BigQuery, procedi nel seguente modo:

  1. Imposta la proprietà di connessione OAuthType su 3.
  2. Imposta la proprietà di connessione ProjectId sul nome del tuo progetto BigQuery.

Per saperne di più, consulta Configurare le credenziali predefinite dell'applicazione.

Il seguente esempio utilizza l'autenticazione ADC:

jdbc:bigquery://https://www.googleapis.com/bigquery/v2:443;
ProjectId=MyTestProject;OAuthType=3;

Autenticarsi con un metodo esterno

Puoi eseguire l'autenticazione con metodi esterni come la federazione delle identità per la forza lavoro o la federazione delle identità per i workload.

Quando stabilisci una connessione con il driver JDBC per BigQuery, procedi nel seguente modo:

  1. Imposta la proprietà di connessione OAuthType su 4.
  2. Imposta la proprietà di connessione ProjectId sul nome del tuo progetto BigQuery.
  3. Esegui una delle seguenti operazioni:
    • Imposta la proprietà di connessione OAuthPvtKey o la proprietà di connessione OAuthPvtKeyPath sul percorso completo del file di configurazione. Per OAuthPvtKey, puoi utilizzare l'oggetto JSON della chiave o il percorso completo del file di chiave.
    • Imposta la proprietà di connessione OAuthPvtKey sull'oggetto di configurazione dell'account esterno non elaborato.
    • Imposta le seguenti proprietà di connessione BYOID, descritte nella sezione Proprietà di connessione:
      • BYOID_AudienceUri
      • BYOID_CredentialSource
      • BYOID_PoolUserProject
      • BYOID_SA_Impersonation_Uri
      • BYOID_SubjectTokenType
      • BYOID_TokenUri

I seguenti esempi utilizzano metodi di autenticazione esterni:

jdbc:bigquery://https://www.googleapis.com/bigquery/v2:443;
ProjectId=MyTestProject;OAuthType=4;
OAuthPvtKeyPath=path/to/file/secret.json;
jdbc:bigquery://https://www.googleapis.com/bigquery/v2:443;
ProjectId=MyTestProject;OAuthType=4;
OAuthPvtKey=External_account_configuration_object;
jdbc:bigquery://https://www.googleapis.com/bigquery/v2:443;
ProjectId=MyTestProject;OAuthType=4;
BYOID_AudienceUri=//iam.googleapis.com/projects/my-project/locations/US-EAST1/workloadIdentityPools/my-pool-/providers/my-provider;
BYOID_SubjectTokenType=urn:ietf:params:oauth:tokentype:id_token;
BYOID_CredentialSource={\"file\":\"/path/to/file\"};
BYOID_SA_Impersonation_Uri=my-sa;
BYOID_TokenUri=https://sts.googleapis.com/v1/token;"

Di seguito è riportato un esempio di file di configurazione:

{
  "type": "external_account",
  "audience": "//iam.googleapis.com/locations/global/workforcePools/my_pool_name/providers/my_provider_name",
  "subject_token_type": "urn:ietf:params:oauth:token-type:id_token",
  "token_url": "https://sts.googleapis.com/v1/token",
  "credential_source": {
    "file": "/path/to/workforce/tokrn.txt"
  },
  "workforce_pool_user_project": "my_project",
  "token_info_url": "https://sts.googleapis.com/v1/introspect"
}

Stabilire una connessione

Per stabilire una connessione con il driver JDBC per BigQuery:

  1. Aggiungi la dipendenza google-cloud-bigquery-jdbc al file di build Maven POM/Gradle:

    <dependency>
        <groupId>com.google.cloud</groupId>
        <artifactId>google-cloud-bigquery-jdbc</artifactId>
        <version>0.0.1</version>
        <scope>system</scope>
        <systemPath>path/to/file/google-jdbc-jar-with-dependencies.jar</systemPath>
    </dependency>
  2. Se utilizzi un progetto Gradle, aggiungi quanto segue anche al file di build:

    dependencies {
    // ... other dependencies
    implementation files('path/to/file/google-jdbc-jar-with-dependencies.jar')
    }
  3. Identifica la stringa di connessione per il driver JDBC. Questa stringa acquisisce tutte le informazioni essenziali necessarie per stabilire una connessione tra l'applicazione Java e un database specifico. Il driver JDBC per la stringa di connessione BigQuery ha il seguente formato:

    jdbc:bigquery://HOST:PORT;ProjectId=PROJECT_ID;OAuthType=AUTH_TYPE;PROPERTIES

    Sostituisci quanto segue:

    • HOST: il DNS o l'indirizzo IP del server.
    • PORT: il numero di porta TCP.
    • PROJECT_ID: l'ID del tuo progetto BigQuery.
    • AUTH_TYPE: un numero che specifica il tipo di autenticazione che hai utilizzato. Uno dei seguenti:
      • 0: Autenticazione del account di servizio Google
      • 1: autenticazione dell'account utente Google
      • 2: Autenticazione con token di aggiornamento o token di accesso pregenerato
      • 3: Autenticazione delle credenziali predefinite dell'applicazione
      • 4: metodi di autenticazione esterni, come la federazione delle identità per la forza lavoro o la federazione delle identità per i workload
    • PROPERTIES: proprietà di connessione aggiuntive per il driver JDBC. Le proprietà devono essere elencate nel formato property_1=value_1; property_2=value_2;.... I nomi delle proprietà non fanno distinzione tra maiuscole e minuscole. Per un elenco completo delle proprietà di connessione, consulta Proprietà di connessione.
  4. Connettiti al driver con la classe DriverManager o DataSource.

    • Connettiti al corso DriverManager:

      import java.sql.Connection;
      import java.sql.DriverManager;
      
      private static Connection getJdbcConnectionDM(){
        Connection connection = DriverManager.getConnection(CONNECTION_STRING);
        return connection;
      }

      Sostituisci CONNECTION_STRING con la stringa di connessione del passaggio precedente.

    • Connettiti al corso DataSource:

      import com.google.cloud.bigquery.jdbc.DataSource;
      import java.sql.Connection;
      import java.sql.SQLException;
      
      private static public Connection getJdbcConnectionDS() throws SQLException {
        Connection connection = null;
        DataSource dataSource = new com.google.cloud.bigquery.jdbc.DataSource();
        dataSource.setURL(CONNECTION_STRING);
        connection = dataSource.getConnection();
        return connection;
      }

      Sostituisci CONNECTION_STRING con la stringa di connessione del passaggio precedente.

      La classe DataSource dispone anche di metodi setter, che puoi utilizzare per impostare le proprietà di connessione, anziché includere ogni proprietà nella stringa di connessione. Di seguito è riportato un esempio:

      private static Connection getConnection() throws SQLException {
        DataSource ds = new DataSource();
        ds.setURL(CONNECTION_STRING);
        ds.setAuthType(3);  // Application Default Credentials
        ds.setProjectId("MyTestProject");
        ds.setEnableHighThroughputAPI(true);
        ds.setLogLevel("6");
        ds.setUseQueryCache(false);
        return ds.getConnection();
      }

Esplorare le funzionalità per il conducente

Ora che hai eseguito la connessione al driver JDBC per BigQuery, puoi esplorarne le funzionalità.

Connettore SQL

Il connettore SQL ti consente di eseguire query SQL con BigQuery. Utilizza la QueryDialect proprietà di connessione per specificare il dialetto SQL che vuoi utilizzare.

Mappatura dei tipi di dati

Il driver JDBC per BigQuery supporta i seguenti mapping dei tipi di dati:

Tipo BigQuery Tipo SQL Tipo di Java
ARRAY ARRAY Array
BIGNUMERIC NUMERIC BigDecimal
BOOL BOOLEAN Boolean
BYTES VARBINARY byte[]
DATE DATE Date
DATETIME OTHER String
FLOAT64 DOUBLE Double
GEOGRAPHY OTHER String
INT64 BIGINT Long
INTERVAL OTHER String
JSON OTHER String
NUMERIC NUMERIC BigDecimal
STRING NVARCHAR String
STRUCT STRUCT Struct
TIME TIME Time
TIMESTAMP TIMESTAMP Timestamp

Record nidificati e ripetuti

Il driver JDBC per BigQuery supporta record nidificati e ripetuti, in cui il driver restituisce il tipo di base come oggetto struct o una rappresentazione di stringa di un oggetto JSON.

Di seguito è riportato un esempio di query sul record di base dei dati struct:

ResultSet resultSet = statement.executeQuery("SELECT STRUCT(\"Adam\" as name, 5 as age)");
    resultSet.next();
    Struct obj = (Struct) resultSet.getObject(1);
    System.out.println(obj.toString());

Il risultato è il seguente:

{
  "v": {
    "f": [
      {
        "v": "Adam"
      },
      {
        "v": "5"
      }
    ]
  }
}

Di seguito è riportato un esempio di query sui sottocomponenti di un oggetto struct:

ResultSet resultSet = statement.executeQuery("SELECT STRUCT(\"Adam\" as name, 5 as age)");
    resultSet.next();
    Struct structObject = (Struct) resultSet.getObject(1);
    Object[] structComponents = structObject.getAttributes();
    for (Object component : structComponents){
      System.out.println(component.toString());
    }

Di seguito è riportato un esempio di query di un array standard di dati ripetuti:

// Execute Query
ResultSet resultSet = statement.executeQuery("SELECT [1,2,3]");
resultSet.next();
Object[] arrayObject = (Object[]) resultSet.getArray(1).getArray();

// Verify Result
int count =0;
for (; count < arrayObject.length; count++) {
  System.out.println(arrayObject[count]);
}

Di seguito è riportato un esempio di query di un array struct di dati ripetuti:

// Execute Query
ResultSet resultSet = statement.executeQuery("SELECT "
    + "[STRUCT(\"Adam\" as name, 12 as age), "
    + "STRUCT(\"Lily\" as name, 17 as age)]");

Struct[] arrayObject = (Struct[]) resultSet.getArray(1).getArray();

// Verify Result
for (int count =0; count < arrayObject.length; count++) {
  System.out.println(arrayObject[count]);
}

Set di risultati di grandi dimensioni

Per recuperare set di risultati di grandi dimensioni quando utilizzi il driver JDBC per BigQuery, procedi nel seguente modo:

  • Se la proprietà di connessione QueryDialect è impostata su SQL, specifica un set di dati e una tabella per archiviare i risultati con le proprietà di connessione LargeResultDataset e LargeResultTable.
  • Se la proprietà di connessione QueryDialect è impostata su BIG_QUERY, imposta la proprietà di connessione AllowLargeResults su TRUE e specifica un dataset e una tabella per archiviare i risultati con le proprietà di connessione LargeResultDataset e LargeResultTable.

In entrambi i casi, puoi utilizzare la proprietà di connessione LargeResultsDatasetExpirationTime per specificare la durata del ciclo di vita del set di dati di destinazione.

Se non specifichi i valori per le proprietà di connessione LargeResultDataset e LargeResultTable, il driver JDBC per BigQuery crea un set di dati nascosto denominato _google_jdbc e una tabella temporanea al suo interno. Queste risorse vengono eliminate automaticamente dopo 24 ore.

Continuano a essere applicati tutti i limiti e le quote di BigQuery.

Parametri posizionali

I parametri posizionali sono segnaposto all'interno di un'istruzione SQL che rappresentano i valori da fornire durante l'esecuzione della query. Il driver JDBC per BigQuery supporta i parametri posizionali con il simbolo del punto interrogativo (?). Di seguito è riportato un esempio di query che utilizza un parametro posizionale:

PreparedStatement preparedStatement = connection.prepareStatement(
    "SELECT * FROM MyTestTable where testColumn = ?");
preparedStatement.setString(1, "string2");
ResultSet resultSet = statement.executeQuery(selectQuery);

SELECT query

Puoi utilizzare il driver JDBC per BigQuery per eseguire query SELECT tramite l'API BigQuery o l'API BigQuery Storage Read.

Se utilizzi l'API BigQuery, imposta la proprietà JobCreationMode connection per specificare se la query viene eseguita con o senza la creazione di un job.

Se utilizzi l'API Storage Read, utilizza la proprietà di connessione EnableHighThroughputAPI per abilitare l'API e verificare che siano soddisfatte le seguenti condizioni:

  • Lo schema non utilizza il tipo INTERVAL.
  • Il numero totale di righe è inferiore al valore della proprietà di connessione HighThroughputMinTableSize.
  • Il rapporto tra righe e dimensioni della pagina è inferiore al valore della proprietà di connessione HighThroughputActivationRatio.

Inserimento collettivo

Per eseguire operazioni di inserimento collettivo con il driver JDBC per BigQuery, utilizza il metodo executeBatch.

Di seguito è riportata un'operazione di scrittura di esempio:

Connection conn = DriverManager.getConnection(connectionUrl);
PreparedStatement statement = null;
Statement st = conn.createStatement();
final String insertQuery = String.format(
        "INSERT INTO `%s.%s.%s` "
      + " (StringField, IntegerField, BooleanField) VALUES(?, ?, ?);",
        DEFAULT_CATALOG, DATASET, TABLE_NAME);

statement = conn.prepareStatement(insertQuery1);

for (int i=0; i<2000; ++i) {
      statement.setString(1, i+"StringField");
      statement.setInt(2, i);
      statement.setBoolean(3, true);
      statement.addBatch();
}

statement.executeBatch();

Logging

Il driver JDBC per BigQuery supporta la registrazione delle azioni nel driver tramite Java Util Logging. La registrazione può influire sulle prestazioni, quindi attivala solo per acquisire un problema e disattivala al termine.

Per configurare la registrazione:

  1. Imposta la proprietà LogLevel in base alla tabella seguente:

    Valore LogLevel LogLevel Descrizione
    0 OFF Nessun messaggio registrato.
    1 SEVERE Errori o guasti gravi che influiscono sulla funzionalità dell'applicazione.
    2 WARNING Potenziali problemi o situazioni che potrebbero richiedere attenzione.
    3 INFO Messaggi informativi su eventi e progressi normali.
    4 CONFIG Messaggi relativi alle informazioni di configurazione statica.
    5 FINE Messaggi di tracciamento generali.
    6 FINER Messaggi di tracciamento dettagliati.
    7 FINEST Messaggi di tracciamento molto dettagliati, utili per il debug esteso.
    8 ALL Tutti i messaggi vengono registrati.
  2. Imposta la proprietà LogPath sul percorso completo della cartella in cui vuoi salvare il file di log.

In alternativa, puoi configurare la registrazione con le variabili di ambiente BIGQUERY_JDBC_LOG_LEVEL e BIGQUERY_JDBC_LOG_PATH.

Proprietà di connessione

In un driver JDBC, le proprietà di connessione sono parametri di configurazione che puoi includere nella stringa di connessione o passare attraverso i metodi setter quando stabilisci una connessione a un database. Le seguenti proprietà di connessione sono supportate dal driver JDBC per BigQuery.

AdditionalProjects

Questa proprietà di connessione consente alle query e alle operazioni sui metadati di accedere ai set di dati all'interno dei progetti specificati, oltre al progetto principale definito nella stringa di connessione.

  • Valore predefinito: N/A
  • Tipo di dati: stringa (stringa di ID progetto separati da virgole)
  • Obbligatorio: no

AllowLargeResults

Questa proprietà di connessione specifica se il driver elabora i risultati della query di dimensioni superiori a 128 MB quando la proprietà di connessione QueryDialect è impostata su BIG_QUERY. Se la proprietà di connessione QueryDialect è impostata su SQL, la proprietà di connessione AllowLargeResults è impostata su TRUE per impostazione predefinita. Per maggiori informazioni, consulta Set di risultati di grandi dimensioni.

  • Valore predefinito: TRUE
  • Tipo di dati: booleano
  • Obbligatorio: no

BYOID_AudienceUri

Questa proprietà di connessione specifica la proprietà segmento di pubblico in un file di configurazione dell'account esterno. La proprietà audience contiene il nome della risorsa per il pool di identità del workload o il pool di forza lavoro e l'identificatore del provider in quel pool.

  • Valore predefinito: N/A
  • Tipo di dati: stringa
  • Obbligatorio: solo quando OAuthType=4

BYOID_CredentialSource

Questa proprietà di connessione imposta le informazioni di recupero dei token e le informazioni ambientali.

  • Valore predefinito: N/A
  • Tipo di dati: stringa
  • Obbligatorio: solo quando OAuthType=4

BYOID_PoolUserProject

Questa proprietà di connessione imposta il progetto utente quando viene utilizzato il pool di forza lavoro. Il progetto deve disporre dell'autorizzazione IAM serviceusage.services.use.

  • Valore predefinito: N/A
  • Tipo di dati: stringa
  • Obbligatorio: solo quando OAuthType=4 e si utilizza il pool forza lavoro

BYOID_SA_Impersonation_Uri

Questa proprietà di connessione imposta l'URL per la simulazione dell'identità del account di servizio quando vengono utilizzati i pool di identità del workload e le API non sono state integrate con UberMint.

  • Valore predefinito: N/A
  • Tipo di dati: stringa
  • Obbligatorio: solo quando OAuthType=4 e si utilizza il pool di identità per i workload con la simulazione dell'identità delaccount di serviziot

BYOID_SubjectTokenType

Questa proprietà di connessione imposta il token STS in base alla specifica di scambio di token. Il valore deve essere uno dei seguenti:

  • Urn:ietf:params:oauth:token-type:jwt
  • Urn:ietf:params:oauth:token-type:id_token
  • Urn:ietf:params:oauth:token-type:saml2
  • urn:ietf:params:aws:token-type:aws4_request

  • Valore predefinito: urn:ietf:params:oauth:tokentype:id_token
  • Tipo di dati: stringa
  • Obbligatorio: solo quando OAuthType=4

BYOID_TokenUri

Questa proprietà di connessione imposta l'endpoint di scambio di token STS.

  • Valore predefinito: https://sts.googleapis.com/v1/token
  • Tipo di dati: stringa
  • Obbligatorio: no

ConnectionPoolSize

Questa proprietà di connessione imposta la dimensione del pool di connessioni se il pooling delle connessioni è abilitato.

  • Valore predefinito: 10
  • Tipo di dati: Long
  • Obbligatorio: no

DefaultDataset

Questa proprietà di connessione specifica il set di dati utilizzato quando esegui una query senza specificare esplicitamente un set di dati. Puoi utilizzare il formato DATASET_ID o PROJECT_ID.DATASET_ID.

  • Valore predefinito: N/A
  • Tipo di dati: stringa
  • Obbligatorio: no

EnableHighThroughputAPI

Questa proprietà di connessione determina se l'API Storage Read può essere utilizzata. Per utilizzare l'API Storage Read, devono essere soddisfatte anche le proprietà di connessione HighThroughputActivationRatio e HighThroughputMinTableSize.

  • Valore predefinito: FALSE
  • Tipo di dati: booleano
  • Obbligatorio: no

EnableSession

Questa proprietà di connessione determina se la connessione avvia una sessione. Se utilizzato, l'ID sessione viene passato a tutte le query successive.

  • Valore predefinito: FALSE
  • Tipo di dati: booleano
  • Obbligatorio: no

EnableWriteAPI

Questa proprietà di connessione determina se è possibile utilizzare l'API Storage Write. Deve essere impostato su TRUE per abilitare gli inserimenti collettivi.

  • Valore predefinito: FALSE
  • Tipo di dati: booleano
  • Obbligatorio: no

EndpointOverrides

Questa proprietà di connessione imposta endpoint personalizzati in una stringa separata da virgole.

  • Valori predefiniti:
    • BIGQUERY=https://bigquery.googleapis.com
    • READ_API=https://bigquerystorage.googleapis.com
    • OAUTH2=https://oauth2.googleapis.com
    • STS=https://sts.googleapis.com
  • Tipo di dati: stringa
  • Obbligatorio: no

FilterTablesOnDefaultDataset

Questa proprietà di connessione controlla l'ambito dei metadati restituiti dai metodi DatabaseMetaData.getTables() e DatabaseMetaData.getColumns(). Quando la proprietà è disattivata, non viene applicato alcun filtro. Per abilitare il filtro, deve essere impostata anche la proprietà di connessione DefaultDataset.

  • Valore predefinito: FALSE
  • Tipo di dati: booleano
  • Obbligatorio: no

HighThroughputActivationRatio

Questa proprietà di connessione imposta una soglia per il numero di pagine in una risposta a una query. Quando questo numero viene superato e le condizioni EnableHighThroughputAPI e HighThroughputMinTableSize vengono soddisfatte, il driver inizia a utilizzare l'API Storage Read.

  • Valore predefinito: 2
  • Tipo di dati: numero intero
  • Obbligatorio: no

HighThroughputMinTableSize

Questa proprietà di connessione imposta una soglia per il numero di righe in una risposta alla query. Quando questo numero viene superato e le condizioni EnableHighThroughputAPI e HighThroughputActivationRatio vengono soddisfatte, il driver inizia a utilizzare l'API Storage Read.

  • Valore predefinito: 100
  • Tipo di dati: numero intero
  • Obbligatorio: no

JobCreationMode

Questa proprietà di connessione determina se le query vengono eseguite senza creare job. Un valore 1 indica che vengono creati job per ogni query, mentre un valore 2 indica che le query possono essere eseguite senza job.

  • Valore predefinito: 2
  • Tipo di dati: numero intero
  • Obbligatorio: no

JobTimeout

Questa proprietà di connessione imposta il timeout del job (in secondi) dopo il quale il job viene annullato sul server.

  • Valore predefinito: 0
  • Tipo di dati: Long
  • Obbligatorio: no

KMSKeyName

Questa proprietà di connessione imposta il nome della chiave KMS per la crittografia dei dati.

  • Valore predefinito: N/A
  • Tipo di dati: stringa
  • Obbligatorio: no

Labels

Questa proprietà di connessione imposta le etichette associate alla query per organizzare e raggruppare i job di query.

  • Valore predefinito: N/A
  • Tipo di dati: Map<String, String>
  • Obbligatorio: no

LargeResultDataset

Questa proprietà di connessione imposta il set di dati di destinazione per i risultati della query. Per maggiori informazioni, consulta Set di risultati di grandi dimensioni.

  • Valore predefinito: _google_jdbc, solo quando QueryDialect=BIG_QUERY o quando QueryDialect=SQL e la proprietà di connessione LargeResultTable è impostata
  • Tipo di dati: stringa
  • Obbligatorio: no

LargeResultsDatasetExpirationTime

Questa proprietà di connessione specifica la durata di tutte le tabelle in un set di dati, in millisecondi. Questa proprietà viene ignorata se il set di dati ha già impostato un tempo di scadenza predefinito.

  • Valore predefinito: 3600000
  • Tipo di dati: Long
  • Obbligatorio: no

LargeResultTable

Questa proprietà di connessione imposta la tabella di destinazione per i risultati della query. Per maggiori informazioni, consulta Set di risultati di grandi dimensioni.

  • Valore predefinito: temp_table..., solo quando QueryDialect=BIG_QUERY o quando QueryDialect=SQL e la proprietà di connessione LargeResultTable è impostata
  • Tipo di dati: stringa
  • Obbligatorio: no

ListenerPoolSize

Questa proprietà di connessione imposta le dimensioni del pool di listener se il pool di connessioni è abilitato.

  • Valore predefinito: 10
  • Tipo di dati: Long
  • Obbligatorio: no

Location

Questa proprietà di connessione specifica la posizione in cui vengono creati o interrogati i set di dati. BigQuery determina automaticamente la posizione se questo valore non è impostato.

  • Valore predefinito: N/A
  • Tipo di dati: stringa
  • Obbligatorio: no

LogLevel

Questa proprietà di connessione controlla il livello di dettaglio registrato durante le interazioni con il database. Per le descrizioni dei livelli, vedi Logging.

  • Valore predefinito: 0
  • Tipo di dati: numero intero
  • Obbligatorio: no

LogPath

Questa proprietà di connessione imposta la directory in cui vengono scritti i file di log. Per maggiori dettagli, consulta Logging.

  • Valore predefinito: N/A
  • Tipo di dati: stringa
  • Obbligatorio: no

MaximumBytesBilled

Questa proprietà di connessione limita il numero di byte fatturati. Le query con byte fatturati superiori a questo limite hanno esito negativo senza addebiti.

  • Valore predefinito: 0
  • Tipo di dati: Long
  • Obbligatorio: no

MaxResults

Questa proprietà di connessione imposta il numero massimo di risultati per pagina.

  • Valore predefinito: 10000
  • Tipo di dati: Long
  • Obbligatorio: no

MetaDataFetchThreadCount

Questa proprietà di connessione configura il numero di thread utilizzati per i metodi dei metadati del database.

  • Valore predefinito: 32
  • Tipo di dati: numero intero
  • Obbligatorio: no

OAuthAccessToken

Questa proprietà di connessione specifica il token di accesso utilizzato per l'autenticazione con token di accesso pregenerato.

  • Valore predefinito: N/A
  • Tipo di dati: stringa
  • Obbligatorio: quando AUTH_TYPE=2

OAuthClientId

Questa proprietà di connessione imposta l'ID client per l'autenticazione con token di aggiornamento pregenerato e l'autenticazione dell'account utente.

  • Valore predefinito: N/A
  • Tipo di dati: stringa
  • Obbligatorio: quando AUTH_TYPE=1 o AUTH_TYPE=2

OAuthClientSecret

Questa proprietà di connessione imposta il client secret per l'autenticazione del token di aggiornamento pregenerato e l'autenticazione dell'account utente.

  • Valore predefinito: N/A
  • Tipo di dati: stringa
  • Obbligatorio: quando AUTH_TYPE=1 o AUTH_TYPE=2

OAuthP12Password

Questa proprietà di connessione imposta la password per il file della chiave PKCS12.

  • Valore predefinito: notasecret
  • Tipo di dati: stringa
  • Obbligatorio: no

OAuthPvtKey

Questa proprietà di connessione imposta la chiave del account di servizio quando si utilizza l'autenticazione delaccount di serviziot. Questo valore può essere un oggetto JSON keyfile non elaborato o un percorso del JSON keyfile.

  • Valore predefinito: N/A
  • Tipo di dati: stringa
  • Obbligatorio: quando AUTH_TYPE=0 e il valore OAuthPvtKeyPath non sono impostati

OAuthPvtKeyPath

Questa proprietà di connessione imposta il percorso della chiave del account di servizio quando si utilizza l'autenticazione delaccount di serviziot.

  • Valore predefinito: N/A
  • Tipo di dati: stringa
  • Obbligatorio: quando AUTH_TYPE=0 e i valori OAuthPvtKey e OAuthServiceAcctEmail non sono impostati

OAuthRefreshToken

Questa proprietà di connessione imposta il token di aggiornamento per l'autenticazione del token di aggiornamento pregenerato. Un token di aggiornamento OAuth 2.0 è un tipo speciale di token che consente a un'applicazione di ottenere un nuovo token di accesso alla scadenza di quello attuale, senza richiedere all'utente di eseguire nuovamente l'autenticazione.

  • Valore predefinito: N/A
  • Tipo di dati: stringa
  • Obbligatorio: quando AUTH_TYPE=2

OAuthServiceAcctEmail

Questa proprietà di connessione imposta l'email del account di servizio quando si utilizza l'autenticazione del service account.

  • Valore predefinito: N/A
  • Tipo di dati: stringa
  • Obbligatorio: quando AUTH_TYPE=0 e il valore OAuthPvtKeyPath non sono impostati

OAuthType

Questa proprietà di connessione specifica il tipo di autenticazione. Il valore deve essere uno dei seguenti:

  • 0: Autenticazione del account di servizio Google
  • 1: autenticazione dell'account utente Google
  • 2: Autenticazione con token di aggiornamento o token di accesso pregenerato
  • 3: Autenticazione delle credenziali predefinite dell'applicazione
  • 4: metodi di autenticazione esterni, come la federazione delle identità della forza lavoro o la federazione delle identità per i workload

  • Valore predefinito: -1
  • Tipo di dati: numero intero
  • Obbligatorio: sì

PartnerToken

Questa proprietà di connessione viene utilizzata dai partner Google Cloud per monitorare l'utilizzo del driver.

  • Valore predefinito: N/A
  • Tipo di dati: stringa
  • Obbligatorio: no

PrivateServiceConnectUris

Questa proprietà di connessione è identica alla proprietà EndpointOverrides. Utilizza invece la proprietà EndpointOverrides.

ProjectId

Questa proprietà di connessione imposta l'ID progetto predefinito per il driver. Questo progetto viene utilizzato per eseguire query e viene fatturato per l'utilizzo delle risorse. Se non è impostato, il driver deduce un ID progetto.

  • Valore predefinito: N/A
  • Tipo di dati: stringa
  • Obbligatorio: no, ma altamente consigliato

ProxyHost

Questa proprietà di connessione imposta il nome host o l'indirizzo IP di un server proxy tramite cui viene instradata la connessione JDBC.

  • Valore predefinito: N/A
  • Tipo di dati: stringa
  • Obbligatorio: no

ProxyPort

Questa proprietà di connessione imposta il numero di porta su cui il server proxy è in attesa di connessioni.

  • Valore predefinito: N/A
  • Tipo di dati: stringa
  • Obbligatorio: no

ProxyPwd

Questa proprietà di connessione imposta la password necessaria per l'autenticazione quando ci si connette tramite un server proxy che la richiede.

  • Valore predefinito: N/A
  • Tipo di dati: stringa
  • Obbligatorio: no

ProxyUid

Questa proprietà di connessione imposta il nome utente necessario per l'autenticazione quando ci si connette tramite un server proxy che lo richiede.

  • Valore predefinito: N/A
  • Tipo di dati: stringa
  • Obbligatorio: no

QueryDialect

Questa proprietà di connessione imposta il dialetto SQL per l'esecuzione delle query. Utilizza SQL per GoogleSQL (opzione consigliata) e BIG_QUERY per SQL precedente.

  • Valore predefinito: SQL
  • Tipo di dati: stringa
  • Obbligatorio: no

QueryProperties

Questa proprietà di connessione configura le modifiche al comportamento delle query.

Di seguito è riportato un esempio impostato nella stringa di connessione:

jdbc:bigquery://https://www.googleapis.com/bigquery/v2:443;
QueryProperties=dataset_project_id=TestProjectID,time_zone=America/New_York;

Di seguito è riportato un esempio impostato nella classe DataSource:

Map<String, String> queryProperties = new HashMap<>();
queryProperties.put("dataset_project_id", "TestProjectID");
queryProperties.put("time_zone", "America/New_York");
DataSource dataSource = new DataSource();
dataSource.setQueryProperties(queryProperties);

Per maggiori dettagli, consulta ConnectionProperty.

  • Valore predefinito: N/A
  • Tipo di dati: Map<String, String>
  • Obbligatorio: no

RequestGoogleDriveScope

Questa proprietà di connessione viene utilizzata per richiedere l'accesso a Google Drive. Se attivato, all'account viene aggiunto l'ambito di sola lettura di Drive. Per attivare questa proprietà, imposta il valore su 1.

  • Valore predefinito: 0
  • Tipo di dati: numero intero
  • Obbligatorio: no

RetryInitialDelay

Questa proprietà di connessione imposta il ritardo (in secondi) prima del primo tentativo.

  • Valore predefinito: 0
  • Tipo di dati: Long
  • Obbligatorio: no

RetryMaxDelay

Questa proprietà di connessione imposta il limite massimo (in secondi) per il ritardo dei nuovi tentativi.

  • Valore predefinito: 0
  • Tipo di dati: Long
  • Obbligatorio: no

ServiceAccountImpersonationChain

Questa proprietà di connessione specifica un elenco separato da virgole di indirizzi email degli account di servizio nella catena di rappresentazione.

  • Valore predefinito: N/A
  • Tipo di dati: stringa
  • Obbligatorio: no

ServiceAccountImpersonationEmail

Questa proprietà di connessione imposta l'email del account di servizio da rappresentare.

  • Valore predefinito: N/A
  • Tipo di dati: stringa
  • Obbligatorio: no

ServiceAccountImpersonationScopes

Questa proprietà di connessione specifica un elenco separato da virgole di ambiti OAuth2 da utilizzare con l'account con identità simulata.

  • Valore predefinito: https://www.googleapis.com/auth/bigquery
  • Tipo di dati: stringa
  • Obbligatorio: no

ServiceAccountImpersonationTokenLifetime

Questa proprietà di connessione imposta la durata del token dell'account rappresentato (in secondi).

  • Valore predefinito: 3600
  • Tipo di dati: numero intero
  • Obbligatorio: no

SSLTrustStore

Questa proprietà di connessione specifica il percorso completo dell'archivio attendibilità Java che contiene i certificati dell'autorità di certificazione (CA) attendibili. Il driver utilizza questo truststore per convalidare l'identità del server durante l'handshake SSL/TLS.

  • Valore predefinito: N/A
  • Tipo di dati: stringa
  • Obbligatorio: no

SSLTrustStorePwd

Questa proprietà di connessione specifica la password per il TrustStore Java specificato nella proprietà SSLTrustStore.

  • Valore predefinito: N/A
  • Tipo di dati: stringa
  • Obbligatorio: solo se utilizzi un archivio attendibile Java protetto da password

SWA_ActivationRowCount

Questa proprietà di connessione imposta un numero soglia di righe executeBatch insert che, se superato, fa sì che il connettore passi all'API Storage Write.

  • Valore predefinito: 3
  • Tipo di dati: numero intero
  • Obbligatorio: no

SWA_AppendRowCount

Questa proprietà di connessione imposta le dimensioni del flusso di scrittura.

  • Valore predefinito: 1000
  • Tipo di dati: numero intero
  • Obbligatorio: no

Timeout

Questa proprietà di connessione imposta il periodo di tempo, in secondi, durante il quale il connettore ritenta una chiamata API non riuscita prima del timeout.

  • Valore predefinito: 0
  • Tipo di dati: Long
  • Obbligatorio: no

UniverseDomain

Questa proprietà di connessione imposta il dominio dell'universo, il dominio di primo livello associato alle risorse della tua organizzazione. Google Cloud

  • Valore predefinito: googleapis.com
  • Tipo di dati: stringa
  • Obbligatorio: no

UnsupportedHTAPIFallback

Questa proprietà di connessione determina se il connettore esegue il failover all'API REST (se impostata su TRUE) o restituisce un errore (se impostata su FALSE).

  • Valore predefinito: TRUE
  • Tipo di dati: booleano
  • Obbligatorio: no

UseQueryCache

Questa proprietà di connessione consente la memorizzazione nella cache delle query.

  • Valore predefinito: TRUE
  • Tipo di dati: booleano
  • Obbligatorio: no