Utiliser le pilote JDBC pour BigQuery

Le pilote Java Database Connectivity (JDBC) pour BigQuery connecte votre application Java à BigQuery, ce qui vous permet d'utiliser les fonctionnalités de BigQuery avec vos outils et votre infrastructure préférés. Ce pilote est conçu spécifiquement pour BigQuery et ne peut pas être utilisé avec d'autres produits ou services. Vous n'avez besoin d'aucune licence supplémentaire pour utiliser ce pilote.

Avant de commencer

  1. Assurez-vous de bien connaître les pilotes JDBC et le package java.sql.
  2. Vérifiez que votre système est configuré avec l'environnement d'exécution Java (JRE) 8.0 ou version ultérieure.

Configurer le pilote

Pour configurer le pilote JDBC pour BigQuery, vous devez l'installer, vous authentifier auprès de BigQuery et établir une connexion.

Installer le pilote

  1. Téléchargez l'un des packages JDBC suivants :
  2. Ajoutez le fichier JAR téléchargé à votre classpath afin que le compilateur et l'environnement d'exécution Java puissent localiser les classes JDBC nécessaires.

S'authentifier auprès de BigQuery

Le pilote JDBC pour BigQuery propose plusieurs options d'authentification :

  • Utiliser un compte de service
  • Utiliser un compte utilisateur Google
  • Utiliser un jeton d'accès et d'actualisation pré-généré
  • Utiliser les identifiants par défaut de l'application
  • Utiliser une méthode externe

S'authentifier avec un compte de service

Lorsque vous établissez une connexion avec le pilote JDBC pour BigQuery, procédez comme suit :

  1. Définissez la propriété de connexion OAuthType sur 0.
  2. Définissez la propriété de connexion ProjectId sur le nom de votre projet BigQuery.
  3. Effectuez l'une des opérations suivantes :
    • Si vous utilisez une adresse e-mail et une clé de compte de service, définissez la propriété de connexion OAuthServiceAcctEmail sur l'adresse e-mail de votre compte de service Google et la propriété de connexion OAuthPvtKey sur l'objet JSON de la clé du compte de service. Pour OAuthPvtKey, vous pouvez utiliser l'objet JSON de la clé ou le chemin d'accès complet au fichier de clé.
    • Si vous utilisez un fichier de clé de compte de service, définissez la propriété de connexion OAuthPvtKeyPath sur le chemin d'accès complet au fichier de clé du compte de service.

Les deux exemples suivants utilisent l'authentification par compte de service :

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;

S'authentifier avec un compte utilisateur Google

Lorsque vous établissez une connexion avec le pilote JDBC pour BigQuery, procédez comme suit :

  1. Définissez la propriété de connexion OAuthType sur 1.
  2. Définissez la propriété de connexion ProjectId sur le nom de votre projet BigQuery.
  3. Définissez la propriété de connexion OAuthClientId sur votre ID client et la propriété de connexion OAuthClientSecret sur votre code secret du client.

Pour en savoir plus, consultez Utiliser OAuth 2.0 pour accéder aux API Google et Gérer les clients OAuth.

L'exemple suivant utilise l'authentification de compte utilisateur Google :

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

S'authentifier avec un jeton d'accès ou d'actualisation pré-généré

Lorsque vous établissez une connexion avec le pilote JDBC pour BigQuery, procédez comme suit :

  1. Définissez la propriété de connexion OAuthType sur 2.
  2. Définissez la propriété de connexion ProjectId sur le nom de votre projet BigQuery.
  3. Effectuez l'une des opérations suivantes :
    • Si vous utilisez un jeton d'accès prégénéré, définissez la propriété de connexion OAuthAccessToken sur votre jeton d'accès.
    • Si vous utilisez un jeton d'actualisation pré-généré, définissez la propriété de connexion OAuthRefreshToken sur votre jeton d'actualisation, la propriété de connexion OAuthClientId sur votre ID client et la propriété de connexion OAuthClientSecret sur votre code secret du client.

Pour en savoir plus, consultez Utiliser OAuth 2.0 pour accéder aux API Google.

L'exemple suivant utilise l'authentification par jeton d'accès pré-généré :

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

L'exemple suivant utilise l'authentification par jeton d'actualisation pré-généré :

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;

S'authentifier avec les Identifiants par défaut de l'application

Identifiants par défaut de l'application (ADC) sont une stratégie utilisée par les bibliothèques d'authentification pour rechercher automatiquement des identifiants en fonction de l'environnement d'application.

Lorsque vous établissez une connexion avec le pilote JDBC pour BigQuery, procédez comme suit :

  1. Définissez la propriété de connexion OAuthType sur 3.
  2. Définissez la propriété de connexion ProjectId sur le nom de votre projet BigQuery.

Pour en savoir plus, consultez la page Configurer les identifiants par défaut de l'application.

L'exemple suivant utilise l'authentification ADC :

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

S'authentifier avec une méthode externe

Vous pouvez vous authentifier avec des méthodes externes telles que la fédération des identités des employés ou la fédération d'identité de charge de travail.

Lorsque vous établissez une connexion avec le pilote JDBC pour BigQuery, procédez comme suit :

  1. Définissez la propriété de connexion OAuthType sur 4.
  2. Définissez la propriété de connexion ProjectId sur le nom de votre projet BigQuery.
  3. Effectuez l'une des opérations suivantes :
    • Définissez la propriété de connexion OAuthPvtKey ou OAuthPvtKeyPath sur le chemin d'accès complet du fichier de configuration. Pour OAuthPvtKey, vous pouvez utiliser l'objet JSON de la clé ou le chemin d'accès complet au fichier de clé.
    • Définissez la propriété de connexion OAuthPvtKey sur l'objet de configuration du compte externe brut.
    • Définissez les propriétés de connexion BYOID suivantes, décrites dans la section Propriétés de connexion :
      • BYOID_AudienceUri
      • BYOID_CredentialSource
      • BYOID_PoolUserProject
      • BYOID_SA_Impersonation_Uri
      • BYOID_SubjectTokenType
      • BYOID_TokenUri

Les exemples suivants utilisent des méthodes d'authentification externes :

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;"

Voici un exemple de fichier de configuration :

{
  "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"
}

Établir une connexion

Pour établir une connexion avec le pilote JDBC pour BigQuery, procédez comme suit :

  1. Ajoutez la dépendance google-cloud-bigquery-jdbc à votre fichier de compilation 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. Si vous utilisez un projet Gradle, ajoutez également les éléments suivants au fichier de compilation :

    dependencies {
    // ... other dependencies
    implementation files('path/to/file/google-jdbc-jar-with-dependencies.jar')
    }
  3. Identifiez votre chaîne de connexion pour le pilote JDBC. Cette chaîne contient toutes les informations essentielles requises pour établir une connexion entre votre application Java et une base de données spécifique. La chaîne de connexion du pilote JDBC pour BigQuery se présente comme suit :

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

    Remplacez les éléments suivants :

    • HOST : adresse DNS ou IP du serveur.
    • PORT : numéro de port TCP.
    • PROJECT_ID : ID de votre projet BigQuery.
    • AUTH_TYPE : nombre spécifiant le type d'authentification que vous avez utilisé. Choisissez l'une des options suivantes :
      • 0 : Authentification du compte de service Google
      • 1 : authentification du compte utilisateur Google
      • 2 : authentification par jeton d'actualisation ou jeton d'accès pré-généré
      • 3 : authentification avec les identifiants par défaut de l'application
      • 4 : méthodes d'authentification externes, telles que la fédération d'identité de personnel ou la fédération d'identité de charge de travail
    • PROPERTIES : propriétés de connexion supplémentaires pour le pilote JDBC. Les propriétés doivent être listées au format property_1=value_1; property_2=value_2;.... Les noms de propriétés ne sont pas sensibles à la casse. Pour obtenir la liste complète des propriétés de connexion, consultez Propriétés de connexion.
  4. Connectez-vous au pilote avec la classe DriverManager ou DataSource.

    • Connectez-vous à la classe DriverManager :

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

      Remplacez CONNECTION_STRING par la chaîne de connexion de l'étape précédente.

    • Connectez-vous à la classe 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;
      }

      Remplacez CONNECTION_STRING par la chaîne de connexion de l'étape précédente.

      La classe DataSource possède également des méthodes setter, que vous pouvez utiliser pour définir les propriétés de connexion, plutôt que d'inclure chaque propriété dans la chaîne de connexion. En voici un exemple :

      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();
      }

Découvrir les fonctionnalités pour les conducteurs

Maintenant que vous êtes connecté au pilote JDBC pour BigQuery, vous pouvez explorer ses fonctionnalités.

Connecteur SQL

Le connecteur SQL vous permet d'exécuter des requêtes SQL avec BigQuery. Utilisez la propriété de connexion QueryDialect pour spécifier le dialecte SQL que vous souhaitez utiliser.

Mappage des types de données

Le pilote JDBC pour BigQuery accepte les mappages de types de données suivants :

Type BigQuery Type SQL Type 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

Enregistrements imbriqués et répétés

Le pilote JDBC pour BigQuery est compatible avec les enregistrements imbriqués et répétés, où le pilote renvoie le type de base sous la forme d'un objet struct ou d'une représentation sous forme de chaîne d'un objet JSON.

Voici un exemple d'interrogation de l'enregistrement de base des données structurées :

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());

Le résultat est le suivant :

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

Voici un exemple de requête de sous-composants d'un objet 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());
    }

Voici un exemple de requête pour une série standard de données répétées :

// 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]);
}

Voici un exemple de requête pour un tableau structuré de données répétées :

// 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]);
}

Ensemble de résultats volumineux

Pour récupérer des ensembles de résultats volumineux lorsque vous utilisez le pilote JDBC pour BigQuery, procédez comme suit :

  • Si la propriété de connexion QueryDialect est définie sur SQL, spécifiez un ensemble de données et une table pour stocker les résultats avec les propriétés de connexion LargeResultDataset et LargeResultTable.
  • Si la propriété de connexion QueryDialect est définie sur BIG_QUERY, définissez la propriété de connexion AllowLargeResults sur TRUE, puis spécifiez un ensemble de données et une table pour stocker les résultats avec les propriétés de connexion LargeResultDataset et LargeResultTable.

Dans les deux cas, vous pouvez utiliser la propriété de connexion LargeResultsDatasetExpirationTime pour spécifier la durée de vie de l'ensemble de données de destination.

Si vous ne spécifiez pas de valeurs pour les propriétés de connexion LargeResultDataset et LargeResultTable, le pilote JDBC pour BigQuery crée un ensemble de données masqué nommé _google_jdbc et une table temporaire dans cet ensemble. Ces ressources sont automatiquement supprimées au bout de 24 heures.

Tous les quotas et limites BigQuery restent applicables.

Paramètres positionnels

Les paramètres positionnels sont des espaces réservés dans une instruction SQL qui représentent des valeurs à fournir lors de l'exécution de la requête. Le pilote JDBC pour BigQuery est compatible avec les paramètres positionnels utilisant le symbole point d'interrogation (?). Voici un exemple de requête utilisant un paramètre positionnel :

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

SELECT requêtes

Vous pouvez utiliser le pilote JDBC pour BigQuery afin d'exécuter des requêtes SELECT via l'API BigQuery ou l'API BigQuery Storage Read.

Si vous utilisez l'API BigQuery, définissez la propriété de connexion JobCreationMode pour spécifier si la requête s'exécute avec ou sans création de tâche.

Si vous utilisez l'API Storage Read, utilisez la propriété de connexion EnableHighThroughputAPI pour activer l'API et vérifiez que les conditions suivantes sont remplies :

  • Le schéma n'utilise pas le type INTERVAL.
  • Le nombre total de lignes est inférieur à la valeur de la propriété de connexion HighThroughputMinTableSize.
  • Le ratio entre le nombre de lignes et la taille de la page est inférieur à la valeur de la propriété de connexion HighThroughputActivationRatio.

Insertion groupée

Pour effectuer des opérations d'insertion groupée avec le pilote JDBC pour BigQuery, utilisez la méthode executeBatch.

Voici un exemple d'opération d'écriture :

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();

Journalisation

Le pilote JDBC pour BigQuery est compatible avec l'enregistrement des actions dans le pilote via Java Util Logging. La journalisation peut affecter les performances. N'activez-la que pour capturer un problème, puis désactivez-la une fois que vous avez terminé.

Pour configurer la journalisation :

  1. Définissez la propriété LogLevel selon le tableau suivant :

    Valeur LogLevel LogLevel Description
    0 OFF Aucun message n'est consigné.
    1 SEVERE Défaillances ou erreurs graves ayant un impact sur les fonctionnalités de l'application.
    2 WARNING Problèmes ou situations potentielles pouvant nécessiter votre attention.
    3 INFO Messages d'information sur les événements normaux et la progression.
    4 CONFIG Messages concernant les informations de configuration statiques.
    5 FINE Messages de traçage généraux.
    6 FINER Messages de traçage détaillés.
    7 FINEST Messages de trace très détaillés, utiles pour un débogage approfondi.
    8 ALL Tous les messages sont consignés.
  2. Définissez la propriété LogPath sur le chemin d'accès complet du dossier dans lequel vous souhaitez enregistrer le fichier journal.

Vous pouvez également configurer la journalisation avec les variables d'environnement BIGQUERY_JDBC_LOG_LEVEL et BIGQUERY_JDBC_LOG_PATH.

Propriétés de connexion

Dans un pilote JDBC, les propriétés de connexion sont des paramètres de configuration que vous pouvez inclure dans la chaîne de connexion ou transmettre via les méthodes setter lorsque vous établissez une connexion à une base de données. Les propriétés de connexion suivantes sont compatibles avec le pilote JDBC pour BigQuery.

AdditionalProjects

Cette propriété de connexion permet aux requêtes et aux opérations sur les métadonnées d'accéder aux ensembles de données dans les projets spécifiés, en plus du projet principal défini dans la chaîne de connexion.

  • Valeur par défaut : N/A
  • Type de données : chaîne (chaîne d'ID de projet séparés par une virgule)
  • Obligatoire : non

AllowLargeResults

Cette propriété de connexion indique si le pilote traite les résultats de requête supérieurs à 128 Mo lorsque la propriété de connexion QueryDialect est définie sur BIG_QUERY. Si la propriété de connexion QueryDialect est définie sur SQL, la propriété de connexion AllowLargeResults est définie sur TRUE par défaut. Pour en savoir plus, consultez Ensemble de résultats volumineux.

  • Valeur par défaut : TRUE.
  • Type de données : booléen
  • Obligatoire : non

BYOID_AudienceUri

Cette propriété de connexion spécifie la propriété d'audience dans un fichier de configuration de compte externe. La propriété "audience" contient le nom de ressource du pool d'identités de charge de travail ou du pool de collaborateurs, ainsi que l'identifiant du fournisseur dans ce pool.

  • Valeur par défaut : N/A
  • Type de données : chaîne
  • Obligatoire : uniquement lorsque OAuthType=4

BYOID_CredentialSource

Cette propriété de connexion définit les informations de récupération du jeton et les informations environnementales.

  • Valeur par défaut : N/A
  • Type de données : chaîne
  • Obligatoire : uniquement lorsque OAuthType=4

BYOID_PoolUserProject

Cette propriété de connexion définit le projet utilisateur lorsque le pool d'employés est utilisé. Le projet doit disposer de l'autorisation IAM serviceusage.services.use.

  • Valeur par défaut : N/A
  • Type de données : chaîne
  • Obligatoire : uniquement lorsque OAuthType=4 est utilisé et que le pool de personnel est utilisé

BYOID_SA_Impersonation_Uri

Cette propriété de connexion définit l'URL pour l'usurpation d'identité du compte de service lorsque des pools d'identités de charge de travail sont utilisés et que les API n'ont pas été intégrées à UberMint.

  • Valeur par défaut : N/A
  • Type de données : chaîne
  • Obligatoire : uniquement lorsque OAuthType=4 et que vous utilisez un pool d'identités de charge de travail avec l'emprunt d'identité d'un compte de service

BYOID_SubjectTokenType

Cette propriété de connexion définit le jeton STS en fonction de la spécification d'échange de jetons. La valeur doit correspondre à l'un des éléments suivants :

  • 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

  • Valeur par défaut : urn:ietf:params:oauth:tokentype:id_token.
  • Type de données : chaîne
  • Obligatoire : uniquement lorsque OAuthType=4

BYOID_TokenUri

Cette propriété de connexion définit le point de terminaison d'échange de jetons STS.

  • Valeur par défaut : https://sts.googleapis.com/v1/token.
  • Type de données : chaîne
  • Obligatoire : non

ConnectionPoolSize

Cette propriété de connexion définit la taille du pool de connexions si le regroupement de connexions est activé.

  • Valeur par défaut : 10.
  • Type de données : long
  • Obligatoire : non

DefaultDataset

Cette propriété de connexion spécifie l'ensemble de données utilisé lorsque vous exécutez une requête sans spécifier explicitement un ensemble de données. Vous pouvez utiliser le format DATASET_ID ou PROJECT_ID.DATASET_ID.

  • Valeur par défaut : N/A
  • Type de données : chaîne
  • Obligatoire : non

EnableHighThroughputAPI

Cette propriété de connexion détermine si l'API Storage Read peut être utilisée. Les propriétés de connexion HighThroughputActivationRatio et HighThroughputMinTableSize doivent également être respectées pour utiliser l'API Storage Read.

  • Valeur par défaut : FALSE.
  • Type de données : booléen
  • Obligatoire : non

EnableSession

Cette propriété de connexion détermine si la connexion démarre une session. Lorsqu'il est utilisé, l'ID de session est transmis à toutes les requêtes suivantes.

  • Valeur par défaut : FALSE.
  • Type de données : booléen
  • Obligatoire : non

EnableWriteAPI

Cette propriété de connexion détermine si l'API Storage Write peut être utilisée. La valeur de ce champ doit correspondre à TRUE pour activer les insertions groupées.

  • Valeur par défaut : FALSE.
  • Type de données : booléen
  • Obligatoire : non

EndpointOverrides

Cette propriété de connexion définit des points de terminaison personnalisés dans une chaîne séparée par des virgules.

  • Valeurs par défaut :
    • BIGQUERY=https://bigquery.googleapis.com
    • READ_API=https://bigquerystorage.googleapis.com
    • OAUTH2=https://oauth2.googleapis.com
    • STS=https://sts.googleapis.com
  • Type de données : chaîne
  • Obligatoire : non

FilterTablesOnDefaultDataset

Cette propriété de connexion contrôle le champ d'application des métadonnées renvoyées par les méthodes DatabaseMetaData.getTables() et DatabaseMetaData.getColumns(). Lorsque la propriété est désactivée, aucun filtrage n'a lieu. La propriété de connexion DefaultDataset doit également être définie pour activer le filtrage.

  • Valeur par défaut : FALSE.
  • Type de données : booléen
  • Obligatoire : non

HighThroughputActivationRatio

Cette propriété de connexion définit un seuil pour le nombre de pages dans une réponse à une requête. Lorsque ce nombre est dépassé et que les conditions EnableHighThroughputAPI et HighThroughputMinTableSize sont remplies, le pilote commence à utiliser l'API Storage Read.

  • Valeur par défaut : 2.
  • Type de données : nombre entier
  • Obligatoire : non

HighThroughputMinTableSize

Cette propriété de connexion définit un seuil pour le nombre de lignes dans une réponse à une requête. Lorsque ce nombre est dépassé et que les conditions EnableHighThroughputAPI et HighThroughputActivationRatio sont remplies, le pilote commence à utiliser l'API Storage Read.

  • Valeur par défaut : 100.
  • Type de données : nombre entier
  • Obligatoire : non

JobCreationMode

Cette propriété de connexion détermine si les requêtes sont exécutées sans créer de jobs. Une valeur 1 signifie que des jobs sont créés pour chaque requête, et une valeur 2 signifie que les requêtes peuvent être exécutées sans jobs.

  • Valeur par défaut : 2.
  • Type de données : nombre entier
  • Obligatoire : non

JobTimeout

Cette propriété de connexion définit le délai avant expiration du job (en secondes), au-delà duquel le job est annulé sur le serveur.

  • Valeur par défaut : 0.
  • Type de données : long
  • Obligatoire : non

KMSKeyName

Cette propriété de connexion définit le nom de la clé KMS pour le chiffrement des données.

  • Valeur par défaut : N/A
  • Type de données : chaîne
  • Obligatoire : non

Labels

Cette propriété de connexion définit les libellés associés à la requête pour organiser et regrouper les tâches de requête.

  • Valeur par défaut : N/A
  • Type de données : Map<String, String>
  • Obligatoire : non

LargeResultDataset

Cette propriété de connexion définit l'ensemble de données de destination pour les résultats de requête. Pour en savoir plus, consultez Ensemble de résultats volumineux.

  • Valeur par défaut : _google_jdbc, uniquement lorsque QueryDialect=BIG_QUERY ou lorsque QueryDialect=SQL et que la propriété de connexion LargeResultTable est définie
  • Type de données : chaîne
  • Obligatoire : non

LargeResultsDatasetExpirationTime

Cette propriété de connexion spécifie la durée de vie de toutes les tables d'un ensemble de données, en millisecondes. Cette propriété est ignorée si un délai d'expiration par défaut est déjà défini pour l'ensemble de données.

  • Valeur par défaut : 3600000.
  • Type de données : long
  • Obligatoire : non

LargeResultTable

Cette propriété de connexion définit la table de destination des résultats de la requête. Pour en savoir plus, consultez Ensemble de résultats volumineux.

  • Valeur par défaut : temp_table..., uniquement lorsque QueryDialect=BIG_QUERY ou lorsque QueryDialect=SQL et la propriété de connexion LargeResultTable sont définies
  • Type de données : chaîne
  • Obligatoire : non

ListenerPoolSize

Cette propriété de connexion définit la taille du pool d'écouteurs si le regroupement de connexions est activé.

  • Valeur par défaut : 10.
  • Type de données : long
  • Obligatoire : non

Location

Cette propriété de connexion spécifie l'emplacement où les ensembles de données sont créés ou interrogés. BigQuery détermine automatiquement l'emplacement si cette valeur n'est pas définie.

  • Valeur par défaut : N/A
  • Type de données : chaîne
  • Obligatoire : non

LogLevel

Cette propriété de connexion contrôle le niveau de détail enregistré lors des interactions avec la base de données. Pour obtenir des descriptions des niveaux, consultez Journalisation.

  • Valeur par défaut : 0.
  • Type de données : nombre entier
  • Obligatoire : non

LogPath

Cette propriété de connexion définit le répertoire dans lequel les fichiers journaux sont écrits. Pour en savoir plus, consultez la section Journalisation.

  • Valeur par défaut : N/A
  • Type de données : chaîne
  • Obligatoire : non

MaximumBytesBilled

Cette propriété de connexion limite le nombre d'octets facturés. Les requêtes dont les octets facturés dépassent cette limite échouent sans entraîner de frais.

  • Valeur par défaut : 0.
  • Type de données : long
  • Obligatoire : non

MaxResults

Cette propriété de connexion définit le nombre maximal de résultats par page.

  • Valeur par défaut : 10000.
  • Type de données : long
  • Obligatoire : non

MetaDataFetchThreadCount

Cette propriété de connexion configure le nombre de threads utilisés pour les méthodes de métadonnées de la base de données.

  • Valeur par défaut : 32.
  • Type de données : nombre entier
  • Obligatoire : non

OAuthAccessToken

Cette propriété de connexion spécifie le jeton d'accès utilisé pour l'authentification par jeton d'accès pré-généré.

  • Valeur par défaut : N/A
  • Type de données : chaîne
  • Obligatoire : lorsque AUTH_TYPE=2

OAuthClientId

Cette propriété de connexion définit l'ID client pour l'authentification par jeton d'actualisation pré-généré et l'authentification par compte utilisateur.

  • Valeur par défaut : N/A
  • Type de données : chaîne
  • Obligatoire : lorsque AUTH_TYPE=1 ou AUTH_TYPE=2

OAuthClientSecret

Cette propriété de connexion définit le code secret du client pour l'authentification par jeton d'actualisation pré-généré et l'authentification par compte utilisateur.

  • Valeur par défaut : N/A
  • Type de données : chaîne
  • Obligatoire : lorsque AUTH_TYPE=1 ou AUTH_TYPE=2

OAuthP12Password

Cette propriété de connexion définit le mot de passe du fichier de clé PKCS12.

  • Valeur par défaut : notasecret.
  • Type de données : chaîne
  • Obligatoire : non

OAuthPvtKey

Cette propriété de connexion définit la clé du compte de service lorsque vous utilisez l'authentification par compte de service. Cette valeur peut être un objet de fichier de clé JSON brut ou un chemin d'accès au fichier de clé JSON.

  • Valeur par défaut : N/A
  • Type de données : chaîne
  • Obligatoire : lorsque AUTH_TYPE=0 et la valeur OAuthPvtKeyPath ne sont pas définis

OAuthPvtKeyPath

Cette propriété de connexion définit le chemin d'accès à la clé du compte de service lorsque vous utilisez l'authentification par compte de service.

  • Valeur par défaut : N/A
  • Type de données : chaîne
  • Obligatoire : lorsque AUTH_TYPE=0 et les valeurs OAuthPvtKey et OAuthServiceAcctEmail ne sont pas définies

OAuthRefreshToken

Cette propriété de connexion définit le jeton d'actualisation pour l'authentification par jeton d'actualisation pré-généré. Un jeton d'actualisation OAuth 2.0 est un type spécial de jeton qui permet à une application d'obtenir un nouveau jeton d'accès lorsque celui en cours expire, sans que l'utilisateur ait besoin de se réauthentifier.

  • Valeur par défaut : N/A
  • Type de données : chaîne
  • Obligatoire : lorsque AUTH_TYPE=2

OAuthServiceAcctEmail

Cette propriété de connexion définit l'adresse e-mail du compte de service lorsque vous utilisez l'authentification par compte de service.

  • Valeur par défaut : N/A
  • Type de données : chaîne
  • Obligatoire : lorsque AUTH_TYPE=0 et la valeur OAuthPvtKeyPath ne sont pas définis

OAuthType

Cette propriété de connexion spécifie le type d'authentification. La valeur doit correspondre à l'un des éléments suivants :

  • 0 : Authentification du compte de service Google
  • 1 : authentification du compte utilisateur Google
  • 2 : authentification par jeton d'actualisation ou jeton d'accès pré-généré
  • 3 : authentification avec les identifiants par défaut de l'application
  • 4 : méthodes d'authentification externes, telles que la fédération d'identité de personnel ou la fédération d'identité de charge de travail

  • Valeur par défaut : -1.
  • Type de données : nombre entier
  • Obligatoire : oui

PartnerToken

Cette propriété de connexion est utilisée par les partenaires Google Cloud pour suivre l'utilisation du pilote.

  • Valeur par défaut : N/A
  • Type de données : chaîne
  • Obligatoire : non

PrivateServiceConnectUris

Cette propriété de connexion est identique à la propriété EndpointOverrides. Utilisez plutôt la propriété EndpointOverrides.

ProjectId

Cette propriété de connexion définit l'ID de projet par défaut pour le pilote. Ce projet est utilisé pour exécuter des requêtes et est facturé pour l'utilisation des ressources. S'il n'est pas défini, le pilote déduit un ID de projet.

  • Valeur par défaut : N/A
  • Type de données : chaîne
  • Obligatoire : non, mais fortement recommandé

ProxyHost

Cette propriété de connexion définit le nom d'hôte ou l'adresse IP d'un serveur proxy par lequel la connexion JDBC est acheminée.

  • Valeur par défaut : N/A
  • Type de données : chaîne
  • Obligatoire : non

ProxyPort

Cette propriété de connexion définit le numéro de port sur lequel le serveur proxy écoute les connexions.

  • Valeur par défaut : N/A
  • Type de données : chaîne
  • Obligatoire : non

ProxyPwd

Cette propriété de connexion définit le mot de passe nécessaire pour l'authentification lors de la connexion via un serveur proxy qui l'exige.

  • Valeur par défaut : N/A
  • Type de données : chaîne
  • Obligatoire : non

ProxyUid

Cette propriété de connexion définit le nom d'utilisateur nécessaire pour l'authentification lors de la connexion via un serveur proxy qui l'exige.

  • Valeur par défaut : N/A
  • Type de données : chaîne
  • Obligatoire : non

QueryDialect

Cette propriété de connexion définit le dialecte SQL pour l'exécution des requêtes. Utilisez SQL pour GoogleSQL (vivement recommandé) et BIG_QUERY pour l'ancien SQL.

  • Valeur par défaut : SQL.
  • Type de données : chaîne
  • Obligatoire : non

QueryProperties

Cette propriété de connexion configure les modifications du comportement des requêtes.

Voici un exemple de configuration dans la chaîne de connexion :

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

Voici un exemple défini dans la 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);

Pour en savoir plus, consultez ConnectionProperty.

  • Valeur par défaut : N/A
  • Type de données : Map<String, String>
  • Obligatoire : non

RequestGoogleDriveScope

Cette propriété de connexion est utilisée pour demander l'accès à Google Drive. Lorsque cette option est activée, le champ Drive en lecture seule est ajouté à la connexion. Pour activer cette propriété, définissez la valeur sur 1.

  • Valeur par défaut : 0.
  • Type de données : nombre entier
  • Obligatoire : non

RetryInitialDelay

Cette propriété de connexion définit le délai (en secondes) avant la première tentative.

  • Valeur par défaut : 0.
  • Type de données : long
  • Obligatoire : non

RetryMaxDelay

Cette propriété de connexion définit la limite maximale (en secondes) du délai de nouvelle tentative.

  • Valeur par défaut : 0.
  • Type de données : long
  • Obligatoire : non

ServiceAccountImpersonationChain

Cette propriété de connexion spécifie une liste d'adresses e-mail de comptes de service séparées par une virgule dans la chaîne d'emprunt d'identité.

  • Valeur par défaut : N/A
  • Type de données : chaîne
  • Obligatoire : non

ServiceAccountImpersonationEmail

Cette propriété de connexion définit l'adresse e-mail du compte de service dont l'identité doit être empruntée.

  • Valeur par défaut : N/A
  • Type de données : chaîne
  • Obligatoire : non

ServiceAccountImpersonationScopes

Cette propriété de connexion spécifie une liste de champs d'application OAuth2 séparés par une virgule à utiliser avec le compte usurpé.

  • Valeur par défaut : https://www.googleapis.com/auth/bigquery.
  • Type de données : chaîne
  • Obligatoire : non

ServiceAccountImpersonationTokenLifetime

Cette propriété de connexion définit la durée de vie du jeton du compte usurpé (en secondes).

  • Valeur par défaut : 3600.
  • Type de données : nombre entier
  • Obligatoire : non

SSLTrustStore

Cette propriété de connexion spécifie le chemin d'accès complet au Java TrustStore contenant les certificats d'autorité de certification (CA) de confiance. Le pilote utilise ce truststore pour valider l'identité du serveur lors du handshake SSL/TLS.

  • Valeur par défaut : N/A
  • Type de données : chaîne
  • Obligatoire : non

SSLTrustStorePwd

Cette propriété de connexion spécifie le mot de passe du truststore Java spécifié dans la propriété SSLTrustStore.

  • Valeur par défaut : N/A
  • Type de données : chaîne
  • Obligatoire : uniquement si vous utilisez un TrustStore Java protégé par un mot de passe

SWA_ActivationRowCount

Cette propriété de connexion définit un seuil de nombre de lignes executeBatch insert. Lorsque ce seuil est dépassé, le connecteur passe à l'API Storage Write.

  • Valeur par défaut : 3.
  • Type de données : nombre entier
  • Obligatoire : non

SWA_AppendRowCount

Cette propriété de connexion définit la taille du flux d'écriture.

  • Valeur par défaut : 1000.
  • Type de données : nombre entier
  • Obligatoire : non

Timeout

Cette propriété de connexion définit la durée, en secondes, pendant laquelle le connecteur réessaie un appel d'API ayant échoué avant d'expirer.

  • Valeur par défaut : 0.
  • Type de données : long
  • Obligatoire : non

UniverseDomain

Cette propriété de connexion définit le domaine de l'univers, qui est le domaine de premier niveau associé aux ressources Google Cloud de votre organisation.

  • Valeur par défaut : googleapis.com.
  • Type de données : chaîne
  • Obligatoire : non

UnsupportedHTAPIFallback

Cette propriété de connexion détermine si le connecteur revient à l'API REST (lorsqu'elle est définie sur TRUE) ou renvoie une erreur (lorsqu'elle est définie sur FALSE).

  • Valeur par défaut : TRUE.
  • Type de données : booléen
  • Obligatoire : non

UseQueryCache

Cette propriété de connexion permet la mise en cache des requêtes.

  • Valeur par défaut : TRUE.
  • Type de données : booléen
  • Obligatoire : non