Usar el controlador JDBC para BigQuery
El controlador Java Database Connectivity (JDBC) para BigQuery conecta tu aplicación Java a BigQuery, lo que te permite usar las funciones de BigQuery con las herramientas y la infraestructura que prefieras. Este controlador se ha diseñado específicamente para BigQuery y no se puede usar con otros productos o servicios. No necesitas ninguna licencia adicional para usar este controlador.
Antes de empezar
- Familiarízate con 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.
Configurar el controlador
Para configurar el controlador JDBC de BigQuery, debe instalar el controlador, autenticarse en BigQuery y establecer una conexión.
Instalar el controlador
- Descarga uno de los siguientes paquetes JDBC:
- Uber JAR. Un único archivo JAR con todas las dependencias incluidas.
- JAR ligero con dependencias. Un archivo ZIP que incluye un archivo JAR ligero con todas las dependencias.
- Uber JAR sombreado. Un único archivo JAR con todas las dependencias incluidas y sombreadas.
- Añade el archivo JAR descargado a tu classpath para que el compilador y el tiempo de ejecución de Java puedan localizar las clases JDBC necesarias.
Autenticarse en BigQuery
El controlador JDBC de BigQuery ofrece varias opciones de autenticación:
- Usar una cuenta de servicio
- Usar una cuenta de usuario de Google
- Usar un token de acceso y un token de actualización pregenerados
- Usar las credenciales de aplicación predeterminadas
- Usar un método externo
Autenticar con una cuenta de servicio
Cuando establezca una conexión con el controlador JDBC de BigQuery, haga lo siguiente:
- Asigna el valor
0a la propiedad de conexiónOAuthType. - Asigna a la propiedad de conexión
ProjectIdel nombre de tu proyecto de BigQuery. - Realiza una de estas acciones:
- Si usas un correo y una clave de cuenta de servicio, asigna a la propiedad de conexión
OAuthServiceAcctEmailla dirección de correo de tu cuenta de servicio de Google y a la propiedad de conexiónOAuthPvtKeyel objeto JSON de la clave de la cuenta de servicio. EnOAuthPvtKey, puedes usar el objeto JSON de la clave o la ruta completa del archivo de claves. - Si usas un archivo de clave de cuenta de servicio, asigna a la propiedad de conexión
OAuthPvtKeyPathla ruta completa al archivo de clave de la cuenta de servicio.
- Si usas un correo y una clave de cuenta de servicio, asigna a la propiedad de conexión
En los dos ejemplos siguientes se usa la autenticación con 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;
Autenticar con una cuenta de usuario de Google
Cuando establezca una conexión con el controlador JDBC de BigQuery, haga lo siguiente:
- Asigna el valor
1a la propiedad de conexiónOAuthType. - Asigna a la propiedad de conexión
ProjectIdel nombre de tu proyecto de BigQuery. - Asigna el valor de la propiedad de conexión
OAuthClientIda tu ID de cliente y el valor de la propiedad de conexiónOAuthClientSecreta tu secreto de cliente.
Para obtener más información, consulta los artículos sobre cómo usar OAuth 2.0 para acceder a las APIs de Google y gestionar 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;
Autenticarse con un token de acceso o de actualización generado previamente
Cuando establezca una conexión con el controlador JDBC de BigQuery, haga lo siguiente:
- Asigna el valor
2a la propiedad de conexiónOAuthType. - Asigna a la propiedad de conexión
ProjectIdel nombre de tu proyecto de BigQuery. - Realiza una de estas acciones:
- Si usas un token de acceso generado previamente, asigna el valor de la propiedad de conexión
OAuthAccessTokena tu token de acceso. - Si usas un token de actualización generado previamente, asigna a la propiedad
OAuthRefreshTokenconnection tu token de actualización, a la propiedadOAuthClientIdconnection tu ID de cliente y a la propiedadOAuthClientSecretconnection tu secreto de cliente.
- Si usas un token de acceso generado previamente, asigna el valor de la propiedad de conexión
Para obtener más información, consulta el artículo sobre cómo usar OAuth 2.0 para acceder a las APIs de Google.
En el siguiente ejemplo se usa la autenticación con tokens de acceso pregenerados:
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 pregenerados:
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;
Autenticarse con credenciales de aplicación predeterminadas
Las credenciales predeterminadas de la aplicación (ADC) son una estrategia que utilizan las bibliotecas de autenticación para encontrar automáticamente las credenciales en función del entorno de la aplicación.
Cuando establezca una conexión con el controlador JDBC de BigQuery, haga lo siguiente:
- Asigna el valor
3a la propiedad de conexiónOAuthType. - Asigna a la propiedad de conexión
ProjectIdel nombre de tu proyecto de BigQuery.
Para obtener más información, consulta Configurar 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;
Autenticarse con un método externo
Puedes autenticarte con métodos externos, como Workforce Identity Federation o Workload Identity Federation.
Cuando establezca una conexión con el controlador JDBC de BigQuery, haga lo siguiente:
- Asigna el valor
4a la propiedad de conexiónOAuthType. - Asigna a la propiedad de conexión
ProjectIdel nombre de tu proyecto de BigQuery. - Realiza una de estas acciones:
- Asigna a la propiedad de conexión
OAuthPvtKeyo a la propiedad de conexiónOAuthPvtKeyPathla ruta completa del archivo de configuración. EnOAuthPvtKey, puedes usar el objeto JSON de la clave o la ruta completa del archivo de claves. - Asigna a la propiedad de conexión
OAuthPvtKeyel objeto de configuración de la cuenta externa sin procesar. - Define las siguientes propiedades de conexión
BYOID, que se describen en la sección Propiedades de conexión:BYOID_AudienceUriBYOID_CredentialSourceBYOID_PoolUserProjectBYOID_SA_Impersonation_UriBYOID_SubjectTokenTypeBYOID_TokenUri
- Asigna a la propiedad de conexión
En los siguientes ejemplos se utilizan 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 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" }
Establecer una conexión
Para establecer una conexión con el controlador JDBC de BigQuery, haga lo siguiente:
Añade la dependencia
google-cloud-bigquery-jdbca tu archivo de compilación 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, añade lo siguiente al archivo de compilación:
dependencies { // ... other dependencies implementation files('path/to/file/google-jdbc-jar-with-dependencies.jar') }
Identifica la cadena de conexión del controlador JDBC. Esta cadena recoge toda la información esencial que se necesita para establecer una conexión entre tu aplicación Java y una base de datos específica. El controlador JDBC de la cadena de conexión de BigQuery tiene el siguiente formato:
jdbc:bigquery://HOST:PORT;ProjectId=PROJECT_ID;OAuthType=AUTH_TYPE;PROPERTIES
Haz los cambios siguientes:
HOST: la dirección DNS o IP del servidor.PORT: número de puerto TCP.PROJECT_ID: el ID de tu proyecto de BigQuery.AUTH_TYPE: un número que especifica el tipo de autenticación que has usado. Una de las siguientes:0: autenticación de 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 de credenciales de aplicación predeterminadas4: métodos de autenticación externos, como Workforce Identity Federation o Workload Identity Federation
PROPERTIES: propiedades de conexión adicionales para el controlador JDBC. Las propiedades deben indicarse en el formatoproperty_1=value_1; property_2=value_2;.... En los nombres de las propiedades no se distingue entre mayúsculas y minúsculas. Para ver 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; }
Sustituye
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; }
Sustituye
CONNECTION_STRINGpor la cadena de conexión del paso anterior.La clase
DataSourcetambién tiene métodos setter que puedes usar para definir propiedades de conexión, en lugar de incluir todas las propiedades 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(); }
Descubrir las funciones del conductor
Ahora que te has conectado al controlador JDBC de BigQuery, puedes explorar sus funciones.
Conector SQL
El conector de SQL te permite ejecutar consultas de SQL con BigQuery. Usa la propiedad de conexión QueryDialect para especificar el dialecto SQL que quieras 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 consulta del registro base de 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 consulta de 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 consulta de una matriz 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 consulta de una matriz struct 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 de gran tamaño
Para obtener conjuntos de resultados de gran tamaño cuando uses el controlador JDBC para BigQuery, haz lo siguiente:
- Si la propiedad de conexión
QueryDialecttiene el valorSQL, especifica un conjunto de datos y una tabla para almacenar los resultados con las propiedades de conexiónLargeResultDatasetyLargeResultTable. - Si la propiedad de conexión
QueryDialecttiene el valorBIG_QUERY, asigne el valorTRUEa la propiedad de conexiónAllowLargeResultsy especifique un conjunto de datos y una tabla para almacenar los resultados con las propiedades de conexiónLargeResultDatasetyLargeResultTable.
En ambos casos, puedes usar la propiedad LargeResultsDatasetExpirationTimeconnection
para especificar la duración del conjunto de datos de destino.
Si no especifica valores para las propiedades de conexión LargeResultDataset y LargeResultTable, el controlador JDBC de BigQuery creará un conjunto de datos oculto llamado _google_jdbc y una tabla temporal en él.
Estos recursos se eliminan automáticamente al cabo de 24 horas.
Se siguen aplicando todas las cuotas y los límites de BigQuery.
Parámetros posicionales
Los parámetros posicionales son marcadores de posición en una instrucción SQL que representan los valores que se deben proporcionar durante la ejecución de la consulta. El controlador JDBC de BigQuery admite parámetros posicionales con el símbolo de interrogación (?). A continuación, se muestra un ejemplo de 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 SELECT
consultas a través de la API de BigQuery o la API Read de BigQuery Storage.
Si usas la API de BigQuery, define la propiedad JobCreationMode connection
para especificar si la consulta se ejecuta con o sin crear un trabajo.
Si usas la API Storage Read, usa la propiedad de conexión EnableHighThroughputAPI
para habilitar la API y verificar que se cumplen las siguientes
condiciones:
- El esquema no usa el tipo
INTERVAL. - El número total de filas es inferior al valor de la propiedad de conexión
HighThroughputMinTableSize. - La proporción de filas por página es inferior al valor de la propiedad de conexión
HighThroughputActivationRatio.
Inserción en bloque
Para realizar operaciones de inserción masiva con el controlador JDBC de 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();
Almacenamiento de registros
El controlador JDBC de BigQuery admite el registro de acciones en el controlador mediante Java Util Logging. El registro puede afectar al rendimiento, por lo que solo debes habilitarlo para registrar un problema y, después, inhabilitarlo.
Para configurar el registro, haz lo siguiente:
Asigna el valor de la propiedad
LogLevelsegún la siguiente tabla:LogLevelvalueLogLevelDescripción 0OFFNo se registra ningún mensaje. 1SEVEREFallos o errores graves que afecten a la funcionalidad de la aplicación. 2WARNINGProblemas o situaciones potenciales que podrían requerir atención. 3INFOMensajes informativos sobre eventos y progreso normales. 4CONFIGMensajes sobre la información de configuración estática. 5FINEMensajes de seguimiento generales. 6FINERMensajes de seguimiento detallados. 7FINESTMensajes de seguimiento muy detallados, útiles para depuraciones exhaustivas. 8ALLTodos los mensajes se registran. Asigna a la propiedad
LogPathla ruta completa de la carpeta en la que quieras guardar el archivo de registro.
También puedes configurar el registro con las variables de entorno BIGQUERY_JDBC_LOG_LEVEL
y BIGQUERY_JDBC_LOG_PATH.
Propiedades de 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 con una base de datos. El controlador JDBC de 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 conjuntos de datos de proyectos específicos, además del proyecto principal definido 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 las consultas que superan los 128 MB cuando la propiedad de conexión QueryDialect se define como BIG_QUERY. Si la propiedad de conexión QueryDialect tiene el valor SQL, la propiedad de conexión AllowLargeResults tiene el valor 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 audiencia en un archivo de configuración de una cuenta externa. La propiedad audience contiene el nombre del recurso del grupo de identidades de carga de trabajo o del grupo de Workforce, así como el identificador del proveedor en ese grupo.
- Valor predeterminado: N/A
- Tipo de datos: cadena
- Obligatorio: solo cuando
OAuthType=4
BYOID_CredentialSource
Esta propiedad de conexión define la información de obtención de tokens y la información del entorno.
- Valor predeterminado: N/A
- Tipo de datos: cadena
- Obligatorio: solo cuando
OAuthType=4
BYOID_PoolUserProject
Esta propiedad de conexión define el proyecto de usuario cuando se usa el grupo de trabajadores. El proyecto debe tener el permiso serviceusage.services.use de gestión de identidades y accesos.
- Valor predeterminado: N/A
- Tipo de datos: cadena
- Obligatorio: solo cuando se usa
OAuthType=4y el grupo de trabajadores
BYOID_SA_Impersonation_Uri
Esta propiedad de conexión define la URL de la suplantación de la cuenta de servicio cuando se usan grupos de identidades de carga de trabajo y las APIs no se han integrado con UberMint.
- Valor predeterminado: N/A
- Tipo de datos: cadena
- Obligatorio: solo cuando se usa
OAuthType=4y un grupo de identidades de carga de trabajo con suplantación de identidad de cuenta de servicio
BYOID_SubjectTokenType
Esta propiedad de conexión define el token STS en función de 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: cadena
- Obligatorio: solo cuando
OAuthType=4
BYOID_TokenUri
Esta propiedad de conexión define el endpoint de intercambio de tokens de STS.
- Valor predeterminado:
https://sts.googleapis.com/v1/token - Tipo de datos: cadena
- Obligatorio: no
ConnectionPoolSize
Esta propiedad de conexión define el tamaño del grupo de conexiones si se habilita el grupo de conexiones.
- 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 explícitamente un conjunto de datos. Puedes usar el formato
DATASET_ID o el
PROJECT_ID.DATASET_ID.
- Valor predeterminado: N/A
- Tipo de datos: cadena
- Obligatorio: no
EnableHighThroughputAPI
Esta propiedad de conexión determina si se puede usar la API Storage Read. También se deben cumplir las propiedades de conexión HighThroughputActivationRatio y HighThroughputMinTableSize para usar la API 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 transfiere 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 Storage Write. Para habilitar las inserciones en bloque, el valor de este campo debe ser TRUE.
- Valor predeterminado:
FALSE - Tipo de datos: booleano
- Obligatorio: no
EndpointOverrides
Esta propiedad de conexión define endpoints 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: cadena
- Obligatorio: no
FilterTablesOnDefaultDataset
Esta propiedad de conexión controla el ámbito de los metadatos devueltos por los métodos DatabaseMetaData.getTables() y DatabaseMetaData.getColumns().
Si la propiedad está inhabilitada, no se aplica ningún filtro. También debe definirse la propiedad de conexión DefaultDataset
para habilitar el filtrado.
- Valor predeterminado:
FALSE - Tipo de datos: booleano
- Obligatorio: no
HighThroughputActivationRatio
Esta propiedad de conexión define un umbral para el número de páginas de una respuesta de consulta. Cuando se supera este número y se cumplen las condiciones EnableHighThroughputAPI y HighThroughputMinTableSize, el controlador empieza a usar la API de lectura de almacenamiento.
- Valor predeterminado:
2 - Tipo de datos: número entero
- Obligatorio: no
HighThroughputMinTableSize
Esta propiedad de conexión define un umbral para el número de filas de una respuesta de consulta. Cuando se supera este número y se cumplen las condiciones EnableHighThroughputAPI y HighThroughputActivationRatio, el controlador empieza a usar la API de lectura de almacenamiento.
- 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 tareas. Un valor 1 significa que se crean trabajos para cada consulta, mientras que un valor 2 significa que las consultas se pueden ejecutar sin trabajos.
- Valor predeterminado:
2 - Tipo de datos: número entero
- Obligatorio: no
JobTimeout
Esta propiedad de conexión define el tiempo de espera de la tarea (en segundos) tras el cual se cancela la tarea en el servidor.
- Valor predeterminado:
0 - Tipo de datos: Long
- Obligatorio: no
KMSKeyName
Esta propiedad de conexión define el nombre de la clave de KMS para cifrar los datos.
- Valor predeterminado: N/A
- Tipo de datos: cadena
- Obligatorio: no
Labels
Esta propiedad de conexión define las etiquetas asociadas a 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 define el conjunto de datos de destino de los resultados de las consultas. Para obtener más información, consulta Conjunto de resultados grande.
- Valor predeterminado:
_google_jdbc, solo cuandoQueryDialect=BIG_QUERYo cuandoQueryDialect=SQLy la propiedad de conexiónLargeResultTableestán definidas. - Tipo de datos: cadena
- Obligatorio: no
LargeResultsDatasetExpirationTime
Esta propiedad de conexión especifica la duración de todas las tablas de un conjunto de datos en milisegundos. Esta propiedad se ignora si el conjunto de datos ya tiene un tiempo de vencimiento predeterminado.
- Valor predeterminado:
3600000 - Tipo de datos: Long
- Obligatorio: no
LargeResultTable
Esta propiedad de conexión define la tabla de destino de los resultados de las consultas. 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 definidas. - Tipo de datos: cadena
- Obligatorio: no
ListenerPoolSize
Esta propiedad de conexión define el tamaño del grupo de listeners si el grupo de conexiones está habilitado.
- 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 se consultan los conjuntos de datos. BigQuery determina automáticamente la ubicación si no se define este valor.
- Valor predeterminado: N/A
- Tipo de datos: cadena
- 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 ver las descripciones de los niveles, consulta Logging.
- Valor predeterminado:
0 - Tipo de datos: número entero
- Obligatorio: no
LogPath
Esta propiedad de conexión define el directorio en el que se escriben los archivos de registro. Para obtener más información, consulta Logging.
- Valor predeterminado: N/A
- Tipo de datos: cadena
- Obligatorio: no
MaximumBytesBilled
Esta propiedad de conexión limita el número de bytes facturados. Las consultas con bytes facturados superiores a este límite fallarán sin suponer ningún cargo.
- Valor predeterminado:
0 - Tipo de datos: Long
- Obligatorio: no
MaxResults
Esta propiedad de conexión define el número máximo de resultados por página.
- Valor predeterminado:
10000 - Tipo de datos: Long
- Obligatorio: no
MetaDataFetchThreadCount
Esta propiedad de conexión configura el número de hilos 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 pregenerados.
- Valor predeterminado: N/A
- Tipo de datos: cadena
- Obligatorio: cuando
AUTH_TYPE=2
OAuthClientId
Esta propiedad de conexión define el ID de cliente para la autenticación con tokens de actualización pregenerados y la autenticación de cuentas de usuario.
- Valor predeterminado: N/A
- Tipo de datos: cadena
- Obligatorio: cuando
AUTH_TYPE=1oAUTH_TYPE=2
OAuthClientSecret
Esta propiedad de conexión define el secreto de cliente para la autenticación con tokens de actualización pregenerados y la autenticación de cuentas de usuario.
- Valor predeterminado: N/A
- Tipo de datos: cadena
- Obligatorio: cuando
AUTH_TYPE=1oAUTH_TYPE=2
OAuthP12Password
Esta propiedad de conexión define la contraseña del archivo de clave PKCS12.
- Valor predeterminado:
notasecret - Tipo de datos: cadena
- Obligatorio: no
OAuthPvtKey
Esta propiedad de conexión define 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 formato o una ruta al archivo de claves JSON.
- Valor predeterminado: N/A
- Tipo de datos: cadena
- Obligatorio: cuando
AUTH_TYPE=0y el valor deOAuthPvtKeyPathno están definidos
OAuthPvtKeyPath
Esta propiedad de conexión define la ruta a la clave de la cuenta de servicio cuando se usa la autenticación con cuenta de servicio.
- Valor predeterminado: N/A
- Tipo de datos: cadena
- Obligatorio: cuando no se han definido
AUTH_TYPE=0,OAuthPvtKeyniOAuthServiceAcctEmail
OAuthRefreshToken
Esta propiedad de conexión define 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 a una aplicación obtener un nuevo token de acceso cuando caduca el actual, sin que el usuario tenga que volver a autenticarse.
- Valor predeterminado: N/A
- Tipo de datos: cadena
- Obligatorio: cuando
AUTH_TYPE=2
OAuthServiceAcctEmail
Esta propiedad de conexión define el correo de la cuenta de servicio cuando se usa la autenticación de cuenta de servicio.
- Valor predeterminado: N/A
- Tipo de datos: cadena
- Obligatorio: cuando
AUTH_TYPE=0y el valor deOAuthPvtKeyPathno están definidos
OAuthType
Esta propiedad de conexión especifica el tipo de autenticación. El valor debe ser uno de los siguientes:
0: autenticación de 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 de credenciales de aplicación predeterminadas4: métodos de autenticación externos, como la federación de identidades para los trabajadores o la federación de identidades de carga de trabajo- Valor predeterminado:
-1 - Tipo de datos: número entero
- Obligatorio: sí
PartnerToken
Los partners usan esta propiedad de conexión para hacer un seguimiento del uso del controlador. Google Cloud
- Valor predeterminado: N/A
- Tipo de datos: cadena
- Obligatorio: no
PrivateServiceConnectUris
Esta propiedad de conexión es idéntica a la propiedad EndpointOverrides. Usa la propiedad EndpointOverrides en su lugar.
ProjectId
Esta propiedad de conexión define el ID de proyecto predeterminado del controlador. Este proyecto se usa para ejecutar consultas y se factura por el uso de recursos. Si no se define, el controlador infiere un ID de proyecto.
- Valor predeterminado: N/A
- Tipo de datos: cadena
- Obligatorio: no, pero muy recomendable
ProxyHost
Esta propiedad de conexión define 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: cadena
- Obligatorio: no
ProxyPort
Esta propiedad de conexión define el número de puerto en el que el servidor proxy está esperando conexiones.
- Valor predeterminado: N/A
- Tipo de datos: cadena
- Obligatorio: no
ProxyPwd
Esta propiedad de conexión define la contraseña necesaria para la autenticación al conectarse a través de un servidor proxy que la requiera.
- Valor predeterminado: N/A
- Tipo de datos: cadena
- Obligatorio: no
ProxyUid
Esta propiedad de conexión define el nombre de usuario necesario para la autenticación al conectarse a través de un servidor proxy que lo requiera.
- Valor predeterminado: N/A
- Tipo de datos: cadena
- Obligatorio: no
QueryDialect
Esta propiedad de conexión define el dialecto SQL para la ejecución de consultas. Usa SQL
para GoogleSQL (muy recomendable) y BIG_QUERY para SQL antiguo.
- Valor predeterminado:
SQL - Tipo de datos: cadena
- 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 define 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 definido 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 información, 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. Si está habilitada, se añade el ámbito de solo lectura de Drive a la conexión. Para habilitar esta propiedad, asigna el valor 1.
- Valor predeterminado:
0 - Tipo de datos: número entero
- Obligatorio: no
RetryInitialDelay
Esta propiedad de conexión define el tiempo de espera (en segundos) antes del primer reintento.
- Valor predeterminado:
0 - Tipo de datos: Long
- Obligatorio: no
RetryMaxDelay
Esta propiedad de conexión define el límite máximo (en segundos) del retraso de reintento.
- Valor predeterminado:
0 - Tipo de datos: Long
- Obligatorio: no
ServiceAccountImpersonationChain
Esta propiedad de conexión especifica una lista separada por comas de correos de cuentas de servicio en la cadena de suplantación de identidad.
- Valor predeterminado: N/A
- Tipo de datos: cadena
- Obligatorio: no
ServiceAccountImpersonationEmail
Esta propiedad de conexión define la cuenta de servicio cuya identidad se va a suplantar.
- Valor predeterminado: N/A
- Tipo de datos: cadena
- Obligatorio: no
ServiceAccountImpersonationScopes
Esta propiedad de conexión especifica una lista de permisos de OAuth2 separados por comas que se van a usar con la cuenta suplantada.
- Valor predeterminado:
https://www.googleapis.com/auth/bigquery - Tipo de datos: cadena
- Obligatorio: no
ServiceAccountImpersonationTokenLifetime
Esta propiedad de conexión define el tiempo de vida 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 completa al almacén de confianza de Java que contiene certificados de autoridad de certificación (CA) de confianza. El controlador utiliza este almacén de confianza para validar la identidad del servidor durante el handshake SSL/TLS.
- Valor predeterminado: N/A
- Tipo de datos: cadena
- Obligatorio: no
SSLTrustStorePwd
Esta propiedad de conexión especifica la contraseña de Java TrustStore indicada en la propiedad SSLTrustStore.
- Valor predeterminado: N/A
- Tipo de datos: cadena
- Obligatorio: solo si se usa un almacén de confianza de Java protegido con contraseña
SWA_ActivationRowCount
Esta propiedad de conexión define un umbral de executeBatch insert filas que, cuando se supera, hace que el conector cambie a la API Storage Write.
- Valor predeterminado:
3 - Tipo de datos: número entero
- Obligatorio: no
SWA_AppendRowCount
Esta propiedad de conexión define el tamaño del flujo de escritura.
- Valor predeterminado:
1000 - Tipo de datos: número entero
- Obligatorio: no
Timeout
Esta propiedad de conexión define el tiempo, en segundos, que el conector intenta volver a realizar 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 define el dominio del universo, el dominio de nivel superior asociado a los recursos de tu organización. Google Cloud
- Valor predeterminado:
googleapis.com - Tipo de datos: cadena
- Obligatorio: no
UnsupportedHTAPIFallback
Esta propiedad de conexión determina si el conector vuelve a la API REST (cuando se le asigna el valor TRUE) o devuelve un error (cuando se le asigna el valor 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