Usa el controlador JDBC para BigQuery
El controlador de conectividad de bases de datos de Java (JDBC) para BigQuery conecta tu aplicación Java a BigQuery, lo que te permite usar las funciones de BigQuery con la infraestructura y las herramientas que prefieras. Este controlador está diseñado específicamente para BigQuery y no se puede usar con otros productos o servicios. No necesitas licencias adicionales para usar este controlador.
Antes de comenzar
- Asegúrate de conocer los controladores JDBC y el paquete
java.sql. - Verifica que tu sistema esté configurado con Java Runtime Environment (JRE) 8.0 o una versión posterior.
Configura el controlador
Para configurar el controlador JDBC para BigQuery, debes instalar el controlador, autenticarte en BigQuery y establecer una conexión.
Instala el controlador
- Descarga uno de los siguientes paquetes de JDBC:
- Uber JAR. Un solo archivo JAR con todas las dependencias incluidas
- Archivo JAR delgado con dependencias Un archivo ZIP que incluye un archivo JAR delgado con todas las dependencias.
- Uber JAR con sombreado Un solo archivo JAR con todas las dependencias incluidas y, además, sombreadas.
- Agrega el archivo JAR descargado a tu ruta de clase para que el compilador y el tiempo de ejecución de Java puedan ubicar las clases JDBC necesarias.
Autenticación en BigQuery
El controlador JDBC para BigQuery proporciona varias opciones de autenticación:
- Usa una cuenta de servicio
- Usa una cuenta de usuario de Google
- Cómo usar un token de acceso y un token de actualización generados previamente
- Usa las credenciales predeterminadas de la aplicación
- Usa un método externo
Autentica con una cuenta de servicio
Cuando establezcas una conexión con el controlador JDBC para BigQuery, haz lo siguiente:
- Establece la propiedad de conexión
OAuthTypeen0. - Establece la propiedad de conexión
ProjectIden el nombre de tu proyecto de BigQuery. - Realiza una de las siguientes acciones:
- Si usas una clave y un correo electrónico de cuenta de servicio, configura la propiedad de conexión
OAuthServiceAcctEmailen la dirección de correo electrónico de tu cuenta de servicio de Google y la propiedad de conexiónOAuthPvtKeyen el objeto JSON de la clave de la cuenta de servicio. ParaOAuthPvtKey, puedes usar el objeto JSON de la clave o la ruta de acceso completa del archivo de claves. - Si usas un archivo de claves de cuenta de servicio, establece la propiedad de conexión
OAuthPvtKeyPathen la ruta de acceso completa al archivo de claves de la cuenta de servicio.
- Si usas una clave y un correo electrónico de cuenta de servicio, configura la propiedad de conexión
En los siguientes dos ejemplos, se usa la autenticación de cuenta de servicio:
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;
Autentica con una cuenta de usuario de Google
Cuando establezcas una conexión con el controlador JDBC para BigQuery, haz lo siguiente:
- Establece la propiedad de conexión
OAuthTypeen1. - Establece la propiedad de conexión
ProjectIden el nombre de tu proyecto de BigQuery. - Establece la propiedad de conexión
OAuthClientIden tu ID de cliente y la propiedad de conexiónOAuthClientSecreten tu secreto del cliente.
Para obtener más información, consulta Usa OAuth 2.0 para acceder a las APIs de Google y Administra clientes de OAuth.
En el siguiente ejemplo, se usa la autenticación de cuentas de usuario de Google:
jdbc:bigquery://https://www.googleapis.com/bigquery/v2:443; ProjectId=MyTestProject;OAuthType=1; OAuthClientId=123456789012-abcdefghijklmnopqrstuvwxyz12345.apps.googleusercontent.com; OAuthClientSecret=_aB-C1D_E2fGh3Ij4kL5m6No7p8QR9sT0uV;
Autentica con un token de acceso o de actualización generado previamente
Cuando establezcas una conexión con el controlador JDBC para BigQuery, haz lo siguiente:
- Establece la propiedad de conexión
OAuthTypeen2. - Establece la propiedad de conexión
ProjectIden el nombre de tu proyecto de BigQuery. - Realiza una de las siguientes acciones:
- Si usas un token de acceso generado previamente, configura la propiedad de conexión
OAuthAccessTokenen tu token de acceso. - Si usas un token de actualización generado previamente, establece la propiedad de conexión
OAuthRefreshTokenen tu token de actualización, la propiedad de conexiónOAuthClientIden tu ID de cliente y la propiedad de conexiónOAuthClientSecreten tu secreto del cliente.
- Si usas un token de acceso generado previamente, configura la propiedad de conexión
Si deseas obtener más información, consulta Usa OAuth 2.0 para acceder a las APIs de Google.
En el siguiente ejemplo, se usa la autenticación con un token de acceso generado previamente:
jdbc:bigquery://https://www.googleapis.com/bigquery/v2:443; ProjectId=MyTestProject;OAuthType=2; OAuthAccessToken=ya29.a0AfH6SMCiH1L-x_yZABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_;
En el siguiente ejemplo, se usa la autenticación con tokens de actualización generados previamente:
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;
Autentica con credenciales predeterminadas de la aplicación
Las credenciales predeterminadas de la aplicación (ADC) son una estrategia que usan las bibliotecas de autenticación para encontrar credenciales automáticamente según el entorno de la aplicación.
Cuando establezcas una conexión con el controlador JDBC para BigQuery, haz lo siguiente:
- Establece la propiedad de conexión
OAuthTypeen3. - Establece la propiedad de conexión
ProjectIden el nombre de tu proyecto de BigQuery.
Para obtener más información, consulta Configura credenciales predeterminadas de la aplicación.
En el siguiente ejemplo, se usa la autenticación de ADC:
jdbc:bigquery://https://www.googleapis.com/bigquery/v2:443; ProjectId=MyTestProject;OAuthType=3;
Autentica con un método externo
Puedes autenticarte con métodos externos, como la federación de identidades de personal o la federación de identidades para cargas de trabajo.
Cuando establezcas una conexión con el controlador JDBC para BigQuery, haz lo siguiente:
- Establece la propiedad de conexión
OAuthTypeen4. - Establece la propiedad de conexión
ProjectIden el nombre de tu proyecto de BigQuery. - Realiza una de las siguientes acciones:
- Establece la propiedad de conexión
OAuthPvtKeyo la propiedad de conexiónOAuthPvtKeyPathen la ruta completa del archivo de configuración. ParaOAuthPvtKey, puedes usar el objeto JSON de la clave o la ruta de acceso completa del archivo de claves. - Establece la propiedad de conexión
OAuthPvtKeyen el objeto de configuración de la cuenta externa sin procesar. - Establece las siguientes propiedades de conexión de
BYOID, que se describen en la sección propiedades de conexión:BYOID_AudienceUriBYOID_CredentialSourceBYOID_PoolUserProjectBYOID_SA_Impersonation_UriBYOID_SubjectTokenTypeBYOID_TokenUri
- Establece la propiedad de conexión
En los siguientes ejemplos, se usan métodos de autenticación externos:
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;"
A continuación, se muestra un ejemplo de un archivo de configuración:
{ "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" }
Establece una conexión
Para establecer una conexión con el controlador JDBC para BigQuery, haz lo siguiente:
Agrega la dependencia de
google-cloud-bigquery-jdbca tu archivo de compilación de 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>
Si usas un proyecto de Gradle, agrega lo siguiente al archivo de compilación:
dependencies { // ... other dependencies implementation files('path/to/file/google-jdbc-jar-with-dependencies.jar') }
Identifica tu cadena de conexión para el controlador JDBC. Esta cadena captura toda la información esencial que se requiere para establecer una conexión entre tu aplicación de Java y una base de datos específica. El controlador JDBC para la cadena de conexión de BigQuery tiene el siguiente formato:
jdbc:bigquery://HOST:PORT;ProjectId=PROJECT_ID;OAuthType=AUTH_TYPE;PROPERTIES
Reemplaza lo siguiente:
HOST: Es la dirección IP o de DNS del servidor.PORT: Es el número de puerto TCP.PROJECT_ID: Es el ID de tu proyecto de BigQuery.AUTH_TYPE: Es un número que especifica el tipo de autenticación que usaste. Uno de los siguientes:0: Autenticación de la cuenta de servicio de Google1: Autenticación de la cuenta de usuario de Google2: Autenticación con token de actualización o token de acceso pregenerado3: Autenticación con credenciales predeterminadas de la aplicación4: Métodos de autenticación externos, como la federación de identidades de personal o la federación de Workload Identity
PROPERTIES: Son propiedades de conexión adicionales para el controlador de JDBC. Las propiedades deben aparecer en el formatoproperty_1=value_1; property_2=value_2;.... Los nombres de las propiedades no distinguen mayúsculas de minúsculas. Para obtener una lista completa de las propiedades de conexión, consulta Propiedades de conexión.
Conéctate al controlador con la clase
DriverManageroDataSource.Conéctate a la clase
DriverManager:import java.sql.Connection; import java.sql.DriverManager; private static Connection getJdbcConnectionDM(){ Connection connection = DriverManager.getConnection(CONNECTION_STRING); return connection; }
Reemplaza
CONNECTION_STRINGpor la cadena de conexión del paso anterior.Conéctate a la clase
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; }
Reemplaza
CONNECTION_STRINGpor la cadena de conexión del paso anterior.La clase
DataSourcetambién tiene métodos setter, que puedes usar para establecer propiedades de conexión, en lugar de incluir cada propiedad en la cadena de conexión. A continuación, se muestra un ejemplo: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(); }
Explora las funciones para conductores
Ahora que te conectaste al controlador JDBC para BigQuery, puedes explorar sus funciones.
Conector de SQL
El conector de SQL te permite ejecutar consultas en SQL con BigQuery. Usa la propiedad de conexión QueryDialect para especificar el dialecto de SQL que deseas usar.
Asignación de tipos de datos
El controlador JDBC para BigQuery admite las siguientes asignaciones de tipos de datos:
| Tipo de BigQuery | Tipo de SQL | Tipo de 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 |
Registros anidados y repetidos
El controlador JDBC para BigQuery admite registros anidados y repetidos, en los que el controlador devuelve el tipo base como un objeto struct o una representación de cadena de un objeto JSON.
A continuación, se muestra un ejemplo de cómo consultar el registro base de los datos de 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());
El resultado es el siguiente:
{
"v": {
"f": [
{
"v": "Adam"
},
{
"v": "5"
}
]
}
}A continuación, se muestra un ejemplo de cómo consultar los subcomponentes de un objeto 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()); }
A continuación, se muestra un ejemplo de cómo consultar un array estándar de datos repetidos:
// 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]); }
A continuación, se muestra un ejemplo de cómo consultar un array de structs de datos repetidos:
// 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]); }
Conjunto de resultados grande
Para recuperar conjuntos de resultados grandes cuando usas el controlador JDBC para BigQuery, haz lo siguiente:
- Si la propiedad de conexión
QueryDialectestá configurada comoSQL, especifica un conjunto de datos y una tabla para almacenar los resultados con las propiedades de conexiónLargeResultDatasetyLargeResultTable. - Si tu propiedad de conexión
QueryDialectestá configurada comoBIG_QUERY, establece la propiedad de conexiónAllowLargeResultsenTRUEy especifica un conjunto de datos y una tabla para almacenar los resultados con las propiedades de conexiónLargeResultDatasetyLargeResultTable.
En ambos casos, puedes usar la propiedad de conexión LargeResultsDatasetExpirationTime para especificar la duración del ciclo de vida del conjunto de datos de destino.
Si no especificas valores para las propiedades de conexión LargeResultDataset y LargeResultTable, el controlador JDBC para BigQuery crea un conjunto de datos oculto llamado _google_jdbc y una tabla temporal dentro de él.
Estos recursos se borran automáticamente después de 24 horas.
Se siguen aplicando todos los límites y las cuotas de BigQuery.
Parámetros posicionales
Los parámetros posicionales son marcadores de posición dentro de una instrucción de SQL que representan valores que se deben proporcionar durante la ejecución de la consulta. El controlador JDBC para BigQuery admite parámetros posicionales con el signo de interrogación (?). A continuación, se muestra un ejemplo de una consulta que usa un parámetro posicional:
PreparedStatement preparedStatement = connection.prepareStatement( "SELECT * FROM MyTestTable where testColumn = ?"); preparedStatement.setString(1, "string2"); ResultSet resultSet = statement.executeQuery(selectQuery);
SELECT consultas
Puedes usar el controlador JDBC para BigQuery para ejecutar consultas SELECT a través de la API de BigQuery o la API de BigQuery Storage Read.
Si usas la API de BigQuery, establece la propiedad de conexión JobCreationMode para especificar si la consulta se ejecuta con o sin la creación de un trabajo.
Si usas la API de Storage Read, usa la propiedad de conexión EnableHighThroughputAPI para habilitar la API y verificar que se cumplan las siguientes condiciones:
- El esquema no usa el tipo
INTERVAL. - La cantidad total de filas es menor que el valor de la propiedad de conexión
HighThroughputMinTableSize. - La proporción de filas por tamaño de página es menor que el valor de la propiedad de conexión
HighThroughputActivationRatio.
Inserción masiva
Para realizar operaciones de inserción masiva con el controlador JDBC para BigQuery, usa el método executeBatch.
A continuación, se muestra un ejemplo de operación de escritura:
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
El controlador JDBC para BigQuery admite acciones de registro en el controlador a través de Java Util Logging. El registro puede afectar el rendimiento, por lo que solo debes habilitarlo para capturar un problema y, luego, inhabilitarlo cuando termines.
Para configurar el registro, haz lo siguiente:
Establece la propiedad
LogLevelsegún la siguiente tabla:LogLevelvalorLogLevelDescripción 0OFFNo se registran mensajes. 1SEVEREErrores o fallas graves que afectan la funcionalidad de la aplicación 2WARNINGProblemas o situaciones potenciales que podrían requerir atención 3INFOMensajes informativos sobre eventos y progreso normales. 4CONFIGSon mensajes relacionados con la información de configuración estática. 5FINESon mensajes de registro generales. 6FINERSon mensajes de seguimiento detallados. 7FINESTMensajes de seguimiento muy detallados, útiles para la depuración exhaustiva. 8ALLSe registran todos los mensajes. Establece la propiedad
LogPathen la ruta de acceso completa de la carpeta en la que deseas guardar el archivo de registro.
Como alternativa, puedes configurar el registro con las variables de entorno BIGQUERY_JDBC_LOG_LEVEL y BIGQUERY_JDBC_LOG_PATH.
Propiedades de la conexión
En un controlador JDBC, las propiedades de conexión son parámetros de configuración que puedes incluir en la cadena de conexión o pasar a través de los métodos setter cuando estableces una conexión a una base de datos. El controlador JDBC para BigQuery admite las siguientes propiedades de conexión.
AdditionalProjects
Esta propiedad de conexión permite que las consultas y las operaciones de metadatos accedan a los conjuntos de datos dentro de los proyectos especificados, además del proyecto principal que se define en la cadena de conexión.
- Valor predeterminado: N/A
- Tipo de datos: Cadena (cadena de IDs de proyectos separados por comas)
- Obligatorio: No
AllowLargeResults
Esta propiedad de conexión especifica si el controlador procesa los resultados de la consulta que son mayores a 128 MB cuando la propiedad de conexión QueryDialect se establece en BIG_QUERY. Si la propiedad de conexión QueryDialect se establece en SQL, la propiedad de conexión AllowLargeResults se establece en TRUE de forma predeterminada. Para obtener más información, consulta Conjunto de resultados grande.
- Valor predeterminado:
TRUE - Tipo de datos: booleano
- Obligatorio: No
BYOID_AudienceUri
Esta propiedad de conexión especifica la propiedad de público en un archivo de configuración de una cuenta externa. La propiedad audience contiene el nombre del recurso del grupo de identidades para cargas de trabajo o del grupo de personal, y el identificador del proveedor en ese grupo.
- Valor predeterminado: N/A
- Tipo de datos: string
- Obligatorio: Solo cuando
OAuthType=4
BYOID_CredentialSource
Esta propiedad de conexión establece la información de recuperación del token y la información del entorno.
- Valor predeterminado: N/A
- Tipo de datos: string
- Obligatorio: Solo cuando
OAuthType=4
BYOID_PoolUserProject
Esta propiedad de conexión establece el proyecto del usuario cuando se usa el grupo de personal. El proyecto debe tener el permiso de IAM serviceusage.services.use.
- Valor predeterminado: N/A
- Tipo de datos: string
- Obligatorio: Solo cuando se usa
OAuthType=4y el grupo de personal
BYOID_SA_Impersonation_Uri
Esta propiedad de conexión establece la URL para la suplantación de la cuenta de servicio cuando se usan grupos de identidades de cargas de trabajo y las APIs no se integraron con UberMint.
- Valor predeterminado: N/A
- Tipo de datos: string
- Obligatorio: Solo cuando
OAuthType=4y se usa el grupo de identidades de cargas de trabajo con suplantación de identidad de la cuenta de servicio
BYOID_SubjectTokenType
Esta propiedad de conexión establece el token de STS según la especificación de intercambio de tokens. El valor debe ser uno de los siguientes:
Urn:ietf:params:oauth:token-type:jwtUrn:ietf:params:oauth:token-type:id_tokenUrn:ietf:params:oauth:token-type:saml2urn:ietf:params:aws:token-type:aws4_request- Valor predeterminado:
urn:ietf:params:oauth:tokentype:id_token - Tipo de datos: string
- Obligatorio: Solo cuando
OAuthType=4
BYOID_TokenUri
Esta propiedad de conexión establece el extremo de intercambio de tokens del STS.
- Valor predeterminado:
https://sts.googleapis.com/v1/token - Tipo de datos: string
- Obligatorio: No
ConnectionPoolSize
Esta propiedad de conexión establece el tamaño del grupo de conexiones si la agrupación de conexiones está habilitada.
- Valor predeterminado:
10 - Tipo de datos: Long
- Obligatorio: No
DefaultDataset
Esta propiedad de conexión especifica el conjunto de datos que se usa cuando ejecutas una consulta sin especificar un conjunto de datos de forma explícita. Puedes usar el formato DATASET_ID o PROJECT_ID.DATASET_ID.
- Valor predeterminado: N/A
- Tipo de datos: string
- Obligatorio: No
EnableHighThroughputAPI
Esta propiedad de conexión determina si se puede usar la API de Storage Read. También se deben satisfacer las propiedades de conexión HighThroughputActivationRatio y HighThroughputMinTableSize para usar la API de Storage Read.
- Valor predeterminado:
FALSE - Tipo de datos: booleano
- Obligatorio: No
EnableSession
Esta propiedad de conexión determina si la conexión inicia una sesión. Cuando se usa, el ID de sesión se pasa a todas las consultas posteriores.
- Valor predeterminado:
FALSE - Tipo de datos: booleano
- Obligatorio: No
EnableWriteAPI
Esta propiedad de conexión determina si se puede usar la API de Storage Write. Debe establecerse en TRUE para habilitar las inserciones masivas.
- Valor predeterminado:
FALSE - Tipo de datos: booleano
- Obligatorio: No
EndpointOverrides
Esta propiedad de conexión establece extremos personalizados en una cadena separada por comas.
- Valores predeterminados:
BIGQUERY=https://bigquery.googleapis.comREAD_API=https://bigquerystorage.googleapis.comOAUTH2=https://oauth2.googleapis.comSTS=https://sts.googleapis.com
- Tipo de datos: string
- Obligatorio: No
FilterTablesOnDefaultDataset
Esta propiedad de conexión controla el alcance de los metadatos que devuelven los métodos DatabaseMetaData.getTables() y DatabaseMetaData.getColumns().
Cuando la propiedad está inhabilitada, no se aplica ningún filtro. La propiedad de conexión DefaultDataset también debe establecerse para habilitar el filtrado.
- Valor predeterminado:
FALSE - Tipo de datos: booleano
- Obligatorio: No
HighThroughputActivationRatio
Esta propiedad de conexión establece un umbral para la cantidad de páginas en una respuesta de búsqueda. Cuando se supera este número y se cumplen las condiciones de EnableHighThroughputAPI y HighThroughputMinTableSize, el controlador comienza a usar la API de Storage Read.
- Valor predeterminado:
2 - Tipo de datos: número entero
- Obligatorio: No
HighThroughputMinTableSize
Esta propiedad de conexión establece un umbral para la cantidad de filas en una respuesta de consulta. Cuando se supera este número y se cumplen las condiciones de EnableHighThroughputAPI y HighThroughputActivationRatio, el controlador comienza a usar la API de Storage Read.
- Valor predeterminado:
100 - Tipo de datos: número entero
- Obligatorio: No
JobCreationMode
Esta propiedad de conexión determina si las consultas se ejecutan sin crear trabajos. Un valor 1 significa que se crean trabajos para cada búsqueda, y un valor 2 significa que las búsquedas se pueden ejecutar sin trabajos.
- Valor predeterminado:
2 - Tipo de datos: número entero
- Obligatorio: No
JobTimeout
Esta propiedad de conexión establece el tiempo de espera del trabajo (en segundos) después del cual se cancela el trabajo en el servidor.
- Valor predeterminado:
0 - Tipo de datos: Long
- Obligatorio: No
KMSKeyName
Esta propiedad de conexión establece el nombre de la clave de KMS para encriptar los datos.
- Valor predeterminado: N/A
- Tipo de datos: string
- Obligatorio: No
Labels
Esta propiedad de conexión establece etiquetas asociadas con la consulta para organizar y agrupar los trabajos de consulta.
- Valor predeterminado: N/A
- Tipo de datos: Map<String, String>
- Obligatorio: No
LargeResultDataset
Esta propiedad de conexión establece el conjunto de datos de destino para los resultados de la consulta. Para obtener más información, consulta Conjunto de resultados grande.
- Valor predeterminado:
_google_jdbc, solo cuandoQueryDialect=BIG_QUERYo cuandoQueryDialect=SQLy se establece la propiedad de conexiónLargeResultTable - Tipo de datos: string
- Obligatorio: No
LargeResultsDatasetExpirationTime
Esta propiedad de conexión especifica la vida útil de todas las tablas de un conjunto de datos, en milisegundos. Esta propiedad se ignora si el conjunto de datos ya tiene configurado un tiempo de vencimiento predeterminado.
- Valor predeterminado:
3600000 - Tipo de datos: Long
- Obligatorio: No
LargeResultTable
Esta propiedad de conexión establece la tabla de destino para los resultados de la consulta. Para obtener más información, consulta Conjunto de resultados grande.
- Valor predeterminado:
temp_table..., solo cuandoQueryDialect=BIG_QUERYo cuandoQueryDialect=SQLy la propiedad de conexiónLargeResultTableestán configuradas - Tipo de datos: string
- Obligatorio: No
ListenerPoolSize
Esta propiedad de conexión establece el tamaño del grupo de listeners si la agrupación de conexiones está habilitada.
- Valor predeterminado:
10 - Tipo de datos: Long
- Obligatorio: No
Location
Esta propiedad de conexión especifica la ubicación en la que se crean o consultan los conjuntos de datos. BigQuery determina automáticamente la ubicación si no se establece este valor.
- Valor predeterminado: N/A
- Tipo de datos: string
- Obligatorio: No
LogLevel
Esta propiedad de conexión controla el nivel de detalle que se registra durante las interacciones con la base de datos. Para obtener descripciones de los niveles, consulta Logging.
- Valor predeterminado:
0 - Tipo de datos: número entero
- Obligatorio: No
LogPath
Esta propiedad de conexión establece el directorio en el que se escriben los archivos de registro. Para obtener más detalles, consulta Logging.
- Valor predeterminado: N/A
- Tipo de datos: string
- Obligatorio: No
MaximumBytesBilled
Esta propiedad de conexión limita la cantidad de bytes facturados. Las consultas con bytes facturados superiores a este límite fallan sin generar cargos.
- Valor predeterminado:
0 - Tipo de datos: Long
- Obligatorio: No
MaxResults
Esta propiedad de conexión establece la cantidad máxima de resultados por página.
- Valor predeterminado:
10000 - Tipo de datos: Long
- Obligatorio: No
MetaDataFetchThreadCount
Esta propiedad de conexión configura la cantidad de subprocesos que se usan para los métodos de metadatos de la base de datos.
- Valor predeterminado:
32 - Tipo de datos: número entero
- Obligatorio: No
OAuthAccessToken
Esta propiedad de conexión especifica el token de acceso que se usa para la autenticación con tokens de acceso generados previamente.
- Valor predeterminado: N/A
- Tipo de datos: string
- Obligatorio: Cuando
AUTH_TYPE=2
OAuthClientId
Esta propiedad de conexión establece el ID de cliente para la autenticación con tokens de actualización generados previamente y la autenticación de cuentas de usuario.
- Valor predeterminado: N/A
- Tipo de datos: string
- Obligatorio: Cuando
AUTH_TYPE=1oAUTH_TYPE=2
OAuthClientSecret
Esta propiedad de conexión establece el secreto del cliente para la autenticación con tokens de actualización generados previamente y la autenticación de cuentas de usuario.
- Valor predeterminado: N/A
- Tipo de datos: string
- Obligatorio: Cuando
AUTH_TYPE=1oAUTH_TYPE=2
OAuthP12Password
Esta propiedad de conexión establece la contraseña del archivo de clave PKCS12.
- Valor predeterminado:
notasecret - Tipo de datos: string
- Obligatorio: No
OAuthPvtKey
Esta propiedad de conexión establece la clave de la cuenta de servicio cuando se usa la autenticación de la cuenta de servicio. Este valor puede ser un objeto de archivo de claves JSON sin procesar o una ruta de acceso al archivo de claves JSON.
- Valor predeterminado: N/A
- Tipo de datos: string
- Obligatorio: Cuando no se establecen
AUTH_TYPE=0ni el valor deOAuthPvtKeyPath
OAuthPvtKeyPath
Esta propiedad de conexión establece la ruta de acceso a la clave de la cuenta de servicio cuando se usa la autenticación de la cuenta de servicio.
- Valor predeterminado: N/A
- Tipo de datos: string
- Obligatorio: Cuando no se establecen
AUTH_TYPE=0ni los valores deOAuthPvtKeyyOAuthServiceAcctEmail
OAuthRefreshToken
Esta propiedad de conexión establece el token de actualización para la autenticación con tokens de actualización pregenerados. Un token de actualización de OAuth 2.0 es un tipo especial de token que permite que una aplicación obtenga un nuevo token de acceso cuando vence el actual, sin necesidad de que el usuario se vuelva a autenticar.
- Valor predeterminado: N/A
- Tipo de datos: string
- Obligatorio: Cuando
AUTH_TYPE=2
OAuthServiceAcctEmail
Esta propiedad de conexión establece el correo electrónico de la cuenta de servicio cuando se usa la autenticación de la cuenta de servicio.
- Valor predeterminado: N/A
- Tipo de datos: string
- Obligatorio: Cuando no se establecen
AUTH_TYPE=0ni el valor deOAuthPvtKeyPath
OAuthType
Esta propiedad de conexión especifica el tipo de autenticación. El valor debe ser uno de los siguientes:
0: Autenticación de la cuenta de servicio de Google1: Autenticación de la cuenta de usuario de Google2: Autenticación con token de actualización o token de acceso pregenerado3: Autenticación con credenciales predeterminadas de la aplicación4: Métodos de autenticación externos, como la federación de identidades de personal o la federación de Workload Identity- Valor predeterminado:
-1 - Tipo de datos: número entero
- Obligatorio: Sí
PartnerToken
Los socios de Google Cloud usan esta propiedad de conexión para hacer un seguimiento del uso del controlador.
- Valor predeterminado: N/A
- Tipo de datos: string
- Obligatorio: No
PrivateServiceConnectUris
Esta propiedad de conexión es idéntica a la propiedad EndpointOverrides. En su lugar, usa la propiedad EndpointOverrides.
ProjectId
Esta propiedad de conexión establece el ID del proyecto predeterminado para el controlador. Este proyecto se usa para ejecutar consultas y se factura por el uso de recursos. Si no se configura, el controlador infiere un ID del proyecto.
- Valor predeterminado: N/A
- Tipo de datos: string
- Obligatorio: No, pero se recomienda
ProxyHost
Esta propiedad de conexión establece el nombre de host o la dirección IP de un servidor proxy a través del cual se enruta la conexión JDBC.
- Valor predeterminado: N/A
- Tipo de datos: string
- Obligatorio: No
ProxyPort
Esta propiedad de conexión establece el número de puerto en el que el servidor proxy escucha las conexiones.
- Valor predeterminado: N/A
- Tipo de datos: string
- Obligatorio: No
ProxyPwd
Esta propiedad de conexión establece la contraseña que se necesita para la autenticación cuando se conecta a través de un servidor proxy que la requiere.
- Valor predeterminado: N/A
- Tipo de datos: string
- Obligatorio: No
ProxyUid
Esta propiedad de conexión establece el nombre de usuario que se necesita para la autenticación cuando se conecta a través de un servidor proxy que lo requiere.
- Valor predeterminado: N/A
- Tipo de datos: string
- Obligatorio: No
QueryDialect
Esta propiedad de conexión establece el dialecto de SQL para la ejecución de consultas. Usa SQL para GoogleSQL (muy recomendado) y BIG_QUERY para SQL heredado.
- Valor predeterminado:
SQL - Tipo de datos: string
- Obligatorio: No
QueryProperties
Esta propiedad de conexión configura las modificaciones del comportamiento de las consultas.
A continuación, se muestra un ejemplo que se establece en la cadena de conexión:
jdbc:bigquery://https://www.googleapis.com/bigquery/v2:443; QueryProperties=dataset_project_id=TestProjectID,time_zone=America/New_York;
A continuación, se muestra un ejemplo que se establece en la clase 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);
Para obtener más detalles, consulta ConnectionProperty.
- Valor predeterminado: N/A
- Tipo de datos: Map<String, String>
- Obligatorio: No
RequestGoogleDriveScope
Esta propiedad de conexión se usa para solicitar acceso a Google Drive. Cuando se habilita, se agrega el alcance de Drive de solo lectura a la conexión. Para habilitar esta propiedad, establece el valor en 1.
- Valor predeterminado:
0 - Tipo de datos: número entero
- Obligatorio: No
RetryInitialDelay
Esta propiedad de conexión establece la demora (en segundos) antes del primer reintento.
- Valor predeterminado:
0 - Tipo de datos: Long
- Obligatorio: No
RetryMaxDelay
Esta propiedad de conexión establece el límite máximo (en segundos) para la demora en el reintento.
- Valor predeterminado:
0 - Tipo de datos: Long
- Obligatorio: No
ServiceAccountImpersonationChain
Esta propiedad de conexión especifica una lista separada por comas de las direcciones de correo electrónico de las cuentas de servicio en la cadena de suplantación de identidad.
- Valor predeterminado: N/A
- Tipo de datos: string
- Obligatorio: No
ServiceAccountImpersonationEmail
Esta propiedad de conexión establece el correo electrónico de la cuenta de servicio que se representará.
- Valor predeterminado: N/A
- Tipo de datos: string
- Obligatorio: No
ServiceAccountImpersonationScopes
Esta propiedad de conexión especifica una lista separada por comas de los permisos de OAuth2 que se usarán con la cuenta suplantada.
- Valor predeterminado:
https://www.googleapis.com/auth/bigquery - Tipo de datos: string
- Obligatorio: No
ServiceAccountImpersonationTokenLifetime
Esta propiedad de conexión establece la vida útil del token de la cuenta suplantada (en segundos).
- Valor predeterminado:
3600 - Tipo de datos: número entero
- Obligatorio: No
SSLTrustStore
Esta propiedad de conexión especifica la ruta de acceso completa al almacén de confianza de Java que contiene los certificados de la autoridad certificadora (CA) de confianza. El controlador utiliza este almacén de confianza para validar la identidad del servidor durante el protocolo de enlace SSL/TLS.
- Valor predeterminado: N/A
- Tipo de datos: string
- Obligatorio: No
SSLTrustStorePwd
Esta propiedad de conexión especifica la contraseña del almacén de confianza de Java especificado en la propiedad SSLTrustStore.
- Valor predeterminado: N/A
- Tipo de datos: string
- Obligatorio: Solo si se usa un TrustStore de Java protegido con contraseña
SWA_ActivationRowCount
Esta propiedad de conexión establece una cantidad límite de filas de executeBatch insert que, cuando se supera, hace que el conector cambie a la API de Storage Write.
- Valor predeterminado:
3 - Tipo de datos: número entero
- Obligatorio: No
SWA_AppendRowCount
Esta propiedad de conexión establece el tamaño de la transmisión de escritura.
- Valor predeterminado:
1000 - Tipo de datos: número entero
- Obligatorio: No
Timeout
Esta propiedad de conexión establece el período, en segundos, durante el cual el conector reintenta una llamada a la API fallida antes de que se agote el tiempo de espera.
- Valor predeterminado:
0 - Tipo de datos: Long
- Obligatorio: No
UniverseDomain
Esta propiedad de conexión establece el dominio del universo, el dominio de nivel superior asociado a los recursos Google Cloud de tu organización.
- Valor predeterminado:
googleapis.com - Tipo de datos: string
- Obligatorio: No
UnsupportedHTAPIFallback
Esta propiedad de conexión determina si el conector recurre a la API de REST (cuando se establece en TRUE) o devuelve un error (cuando se establece en FALSE).
- Valor predeterminado:
TRUE - Tipo de datos: booleano
- Obligatorio: No
UseQueryCache
Esta propiedad de conexión habilita el almacenamiento en caché de consultas.
- Valor predeterminado:
TRUE - Tipo de datos: booleano
- Obligatorio: No