Menggunakan driver JDBC untuk BigQuery

Driver Java Database Connectivity (JDBC) untuk BigQuery menghubungkan aplikasi Java Anda ke BigQuery, sehingga Anda dapat menggunakan fitur BigQuery dengan alat dan infrastruktur pilihan Anda. Driver ini dirancang khusus untuk BigQuery dan tidak dapat digunakan dengan produk atau layanan lainnya. Anda tidak memerlukan lisensi tambahan untuk menggunakan driver ini.

Sebelum memulai

  1. Pastikan Anda sudah memahami driver JDBC dan paket java.sql.
  2. Pastikan sistem Anda dikonfigurasi dengan Java Runtime Environment (JRE) 8.0 atau yang lebih baru.

Mengonfigurasi driver

Untuk mengonfigurasi driver JDBC untuk BigQuery, Anda harus menginstal driver, melakukan autentikasi ke BigQuery, dan membuat koneksi.

Menginstal driver

  1. Download salah satu paket JDBC berikut:
  2. Tambahkan file JAR yang didownload ke classpath Anda agar compiler dan runtime Java dapat menemukan class JDBC yang diperlukan.

Mengautentikasi ke BigQuery

Driver JDBC untuk BigQuery menyediakan beberapa opsi autentikasi:

  • Menggunakan akun layanan
  • Menggunakan akun pengguna Google
  • Menggunakan token akses dan refresh yang dibuat sebelumnya
  • Menggunakan Kredensial Default Aplikasi
  • Menggunakan metode eksternal

Melakukan autentikasi dengan akun layanan

Saat Anda membuat koneksi dengan driver JDBC untuk BigQuery, lakukan hal berikut:

  1. Tetapkan properti koneksi OAuthType ke 0.
  2. Tetapkan properti koneksi ProjectId ke nama project BigQuery Anda.
  3. Lakukan salah satu hal berikut:
    • Jika Anda menggunakan email dan kunci akun layanan, tetapkan properti koneksi OAuthServiceAcctEmail ke alamat email akun layanan Google Anda, dan tetapkan properti koneksi OAuthPvtKey ke objek JSON kunci akun layanan. Untuk OAuthPvtKey, Anda dapat menggunakan objek JSON kunci atau jalur lengkap file kunci.
    • Jika Anda menggunakan file kunci akun layanan, tetapkan properti koneksi OAuthPvtKeyPath ke jalur lengkap file kunci akun layanan.

Dua contoh berikut menggunakan autentikasi akun layanan:

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;

Melakukan autentikasi dengan akun pengguna Google

Saat Anda membuat koneksi dengan driver JDBC untuk BigQuery, lakukan hal berikut:

  1. Tetapkan properti koneksi OAuthType ke 1.
  2. Tetapkan properti koneksi ProjectId ke nama project BigQuery Anda.
  3. Tetapkan properti koneksi OAuthClientId ke client ID Anda, dan tetapkan properti koneksi OAuthClientSecret ke rahasia klien Anda.

Untuk mengetahui informasi selengkapnya, lihat Menggunakan OAuth 2.0 untuk Mengakses Google API dan Mengelola Klien OAuth.

Contoh berikut menggunakan autentikasi akun pengguna Google:

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

Mengautentikasi dengan token akses atau refresh yang dibuat sebelumnya

Saat Anda membuat koneksi dengan driver JDBC untuk BigQuery, lakukan hal berikut:

  1. Tetapkan properti koneksi OAuthType ke 2.
  2. Tetapkan properti koneksi ProjectId ke nama project BigQuery Anda.
  3. Lakukan salah satu hal berikut:
    • Jika Anda menggunakan token akses yang telah dibuat sebelumnya, tetapkan properti koneksi OAuthAccessToken ke token akses Anda.
    • Jika Anda menggunakan token refresh yang telah dibuat sebelumnya, tetapkan properti koneksi OAuthRefreshToken ke token refresh Anda, tetapkan properti koneksi OAuthClientId ke client ID Anda, dan tetapkan properti koneksi OAuthClientSecret ke rahasia klien Anda.

Untuk mengetahui informasi selengkapnya, lihat Menggunakan OAuth 2.0 untuk Mengakses Google API.

Contoh berikut menggunakan autentikasi token akses yang dibuat sebelumnya:

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

Contoh berikut menggunakan autentikasi token refresh yang dibuat sebelumnya:

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;

Melakukan autentikasi dengan Kredensial Default Aplikasi

Kredensial Default Aplikasi (ADC) adalah strategi yang digunakan oleh library autentikasi untuk menemukan kredensial secara otomatis berdasarkan lingkungan aplikasi.

Saat Anda membuat koneksi dengan driver JDBC untuk BigQuery, lakukan hal berikut:

  1. Tetapkan properti koneksi OAuthType ke 3.
  2. Tetapkan properti koneksi ProjectId ke nama project BigQuery Anda.

Untuk mengetahui informasi selengkapnya, lihat Menyiapkan Kredensial Default Aplikasi.

Contoh berikut menggunakan autentikasi ADC:

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

Melakukan autentikasi dengan metode eksternal

Anda dapat melakukan autentikasi dengan metode eksternal seperti Workforce Identity Federation atau Workload Identity Federation.

Saat Anda membuat koneksi dengan driver JDBC untuk BigQuery, lakukan hal berikut:

  1. Tetapkan properti koneksi OAuthType ke 4.
  2. Tetapkan properti koneksi ProjectId ke nama project BigQuery Anda.
  3. Lakukan salah satu hal berikut:
    • Tetapkan properti koneksi OAuthPvtKey atau properti koneksi OAuthPvtKeyPath ke jalur lengkap file konfigurasi. Untuk OAuthPvtKey, Anda dapat menggunakan objek JSON kunci atau jalur lengkap file kunci.
    • Tetapkan properti koneksi OAuthPvtKey ke objek konfigurasi akun eksternal mentah.
    • Tetapkan properti koneksi BYOID berikut, yang dijelaskan di bagian properti koneksi:
      • BYOID_AudienceUri
      • BYOID_CredentialSource
      • BYOID_PoolUserProject
      • BYOID_SA_Impersonation_Uri
      • BYOID_SubjectTokenType
      • BYOID_TokenUri

Contoh berikut menggunakan metode autentikasi eksternal:

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

Berikut adalah contoh file konfigurasi:

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

Membuat koneksi

Untuk membuat koneksi dengan driver JDBC untuk BigQuery, lakukan hal berikut:

  1. Tambahkan dependensi google-cloud-bigquery-jdbc ke file build Maven POM/Gradle Anda:

    <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. Jika Anda menggunakan project Gradle, tambahkan kode berikut ke file build juga:

    dependencies {
    // ... other dependencies
    implementation files('path/to/file/google-jdbc-jar-with-dependencies.jar')
    }
  3. Identifikasi string koneksi Anda untuk driver JDBC. String ini mencakup semua informasi penting yang diperlukan untuk membuat koneksi antara aplikasi Java Anda dan database tertentu. String koneksi driver JDBC untuk BigQuery memiliki format berikut:

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

    Ganti kode berikut:

    • HOST: alamat IP atau DNS server.
    • PORT: nomor port TCP.
    • PROJECT_ID: ID project BigQuery Anda.
    • AUTH_TYPE: angka yang menentukan jenis autentikasi yang Anda gunakan. Salah satu dari berikut ini:
      • 0: Autentikasi akun layanan Google
      • 1: Autentikasi akun pengguna Google
      • 2: Autentikasi token akses atau token refresh yang dibuat sebelumnya
      • 3: Autentikasi Kredensial Default Aplikasi
      • 4: Metode autentikasi eksternal, seperti Workforce Identity Federation atau Workload Identity Federation
    • PROPERTIES: properti koneksi tambahan untuk driver JDBC. Properti harus dicantumkan dalam format property_1=value_1; property_2=value_2;.... Nama properti tidak peka huruf besar/kecil. Untuk mengetahui daftar lengkap properti koneksi, lihat Properti koneksi.
  4. Hubungkan ke driver dengan class DriverManager atau DataSource.

    • Hubungkan ke class DriverManager:

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

      Ganti CONNECTION_STRING dengan string koneksi dari langkah sebelumnya.

    • Hubungkan ke class 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;
      }

      Ganti CONNECTION_STRING dengan string koneksi dari langkah sebelumnya.

      Class DataSource juga memiliki metode penyetel, yang dapat Anda gunakan untuk menyetel properti koneksi, bukan menyertakan setiap properti dalam string koneksi. Berikut adalah contohnya:

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

Menjelajahi fitur pengemudi

Setelah terhubung ke driver JDBC untuk BigQuery, Anda dapat mempelajari fiturnya.

Konektor SQL

Konektor SQL memungkinkan Anda menjalankan kueri SQL dengan BigQuery. Gunakan properti koneksi QueryDialect untuk menentukan dialek SQL yang ingin Anda gunakan.

Pemetaan jenis data

Driver JDBC untuk BigQuery mendukung pemetaan jenis data berikut:

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

Kumpulan data bertingkat dan berulang

Driver JDBC untuk BigQuery mendukung rekaman bertingkat dan berulang, dengan driver menampilkan jenis dasar sebagai objek struct atau representasi string dari objek JSON.

Berikut adalah contoh kueri data struct dari rekaman dasar:

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

Hasilnya adalah sebagai berikut:

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

Berikut adalah contoh kueri subkomponen objek 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());
    }

Berikut adalah contoh kueri array standar data berulang:

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

Berikut adalah contoh kueri array struct data berulang:

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

Kumpulan hasil besar

Untuk mengambil set hasil yang besar saat Anda menggunakan driver JDBC untuk BigQuery, lakukan hal berikut:

  • Jika properti koneksi QueryDialect Anda ditetapkan ke SQL, tentukan set data dan tabel untuk menyimpan hasil dengan properti koneksi LargeResultDataset dan LargeResultTable.
  • Jika properti koneksi QueryDialect Anda ditetapkan ke BIG_QUERY, tetapkan properti koneksi AllowLargeResults ke TRUE, dan tentukan set data dan tabel untuk menyimpan hasil dengan properti koneksi LargeResultDataset dan LargeResultTable.

Dalam kedua kasus tersebut, Anda dapat menggunakan properti koneksi LargeResultsDatasetExpirationTime untuk menentukan durasi masa aktif set data tujuan.

Jika Anda tidak menentukan nilai untuk properti koneksi LargeResultDataset dan LargeResultTable, driver JDBC untuk BigQuery akan membuat set data tersembunyi bernama _google_jdbc dan tabel sementara di dalamnya. Resource ini akan otomatis dihapus setelah 24 jam.

Semua kuota dan batas BigQuery tetap berlaku.

Parameter posisi

Parameter posisi adalah placeholder dalam pernyataan SQL yang merepresentasikan nilai yang akan diberikan selama eksekusi kueri. Driver JDBC untuk BigQuery mendukung parameter posisi dengan simbol tanda tanya (?). Berikut adalah contoh kueri yang menggunakan parameter posisi:

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

SELECT kueri

Anda dapat menggunakan driver JDBC untuk BigQuery guna menjalankan SELECT kueri melalui BigQuery API atau BigQuery Storage Read API.

Jika Anda menggunakan BigQuery API, tetapkan properti koneksi JobCreationMode untuk menentukan apakah kueri berjalan dengan atau tanpa membuat tugas.

Jika Anda menggunakan Storage Read API, gunakan properti koneksi EnableHighThroughputAPI untuk mengaktifkan API dan memverifikasi bahwa kondisi berikut terpenuhi:

  • Skema tidak menggunakan jenis INTERVAL.
  • Jumlah total baris kurang dari nilai properti koneksi HighThroughputMinTableSize.
  • Rasio baris-ke-ukuran-halaman kurang dari nilai properti koneksi HighThroughputActivationRatio.

Penyisipan massal

Untuk melakukan operasi penyisipan massal dengan driver JDBC untuk BigQuery, gunakan metode executeBatch.

Berikut adalah contoh operasi tulis:

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

Driver JDBC untuk BigQuery mendukung tindakan logging di driver melalui Java Util Logging. Pencatatan log dapat memengaruhi performa, jadi aktifkan hanya untuk merekam masalah, dan nonaktifkan setelah Anda selesai.

Untuk mengonfigurasi logging, lakukan hal berikut:

  1. Tetapkan properti LogLevel sesuai dengan tabel berikut:

    LogLevel nilai LogLevel Deskripsi
    0 OFF Tidak ada pesan yang dicatat.
    1 SEVERE Kegagalan atau error serius yang memengaruhi fungsi aplikasi.
    2 WARNING Potensi masalah atau situasi yang mungkin memerlukan perhatian.
    3 INFO Pesan informasi tentang peristiwa dan progres normal.
    4 CONFIG Pesan terkait informasi konfigurasi statis.
    5 FINE Pesan pelacakan umum.
    6 FINER Pesan pelacakan mendetail.
    7 FINEST Pesan pelacakan yang sangat mendetail, berguna untuk proses debug yang ekstensif.
    8 ALL Semua pesan dicatat.
  2. Tetapkan properti LogPath ke jalur lengkap folder tempat Anda ingin menyimpan file log.

Atau, Anda dapat mengonfigurasi logging dengan variabel lingkungan BIGQUERY_JDBC_LOG_LEVEL dan BIGQUERY_JDBC_LOG_PATH.

Properti koneksi

Di driver JDBC, properti koneksi adalah parameter konfigurasi yang dapat Anda sertakan dalam string koneksi atau diteruskan melalui metode setter saat Anda membuat koneksi ke database. Properti koneksi berikut didukung oleh driver JDBC untuk BigQuery.

AdditionalProjects

Properti koneksi ini memungkinkan kueri dan operasi metadata mengakses set data dalam project tertentu, selain project utama yang ditentukan dalam string koneksi.

  • Nilai default: T/A
  • Jenis data: String (string ID project yang dipisahkan koma)
  • Wajib: Tidak

AllowLargeResults

Properti koneksi ini menentukan apakah driver memproses hasil kueri yang lebih besar dari 128 MB saat properti koneksi QueryDialect disetel ke BIG_QUERY. Jika properti koneksi QueryDialect ditetapkan ke SQL, properti koneksi AllowLargeResults ditetapkan ke TRUE secara default. Untuk mengetahui informasi selengkapnya, lihat Kumpulan hasil besar.

  • Nilai default: TRUE
  • Jenis data: Boolean
  • Wajib: Tidak

BYOID_AudienceUri

Properti koneksi ini menentukan properti audiens dalam file konfigurasi akun eksternal. Properti audiens berisi nama resource untuk workload identity pool atau workforce pool dan ID penyedia di pool tersebut.

  • Nilai default: T/A
  • Jenis data: String
  • Wajib: Hanya jika OAuthType=4

BYOID_CredentialSource

Properti koneksi ini menetapkan informasi pengambilan token dan informasi lingkungan.

  • Nilai default: T/A
  • Jenis data: String
  • Wajib: Hanya jika OAuthType=4

BYOID_PoolUserProject

Properti koneksi ini menetapkan project pengguna saat kumpulan tenaga kerja sedang digunakan. Project harus memiliki izin IAM serviceusage.services.use.

  • Nilai default: T/A
  • Jenis data: String
  • Wajib: Hanya jika OAuthType=4 dan menggunakan kumpulan tenaga kerja

BYOID_SA_Impersonation_Uri

Properti koneksi ini menetapkan URL untuk peniruan akun layanan saat kumpulan identitas beban kerja sedang digunakan dan API belum diintegrasikan dengan UberMint.

  • Nilai default: T/A
  • Jenis data: String
  • Wajib: Hanya jika OAuthType=4 dan menggunakan workload identity pool dengan peniruan identitas akun layanan

BYOID_SubjectTokenType

Properti koneksi ini menetapkan token STS berdasarkan spesifikasi pertukaran token. Nilainya harus berupa salah satu dari berikut:

  • 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

  • Nilai default: urn:ietf:params:oauth:tokentype:id_token
  • Jenis data: String
  • Wajib: Hanya jika OAuthType=4

BYOID_TokenUri

Properti koneksi ini menetapkan endpoint pertukaran token STS.

  • Nilai default: https://sts.googleapis.com/v1/token
  • Jenis data: String
  • Wajib: Tidak

ConnectionPoolSize

Properti koneksi ini menetapkan ukuran kumpulan koneksi jika penggabungan koneksi diaktifkan.

  • Nilai default: 10
  • Jenis data: Panjang
  • Wajib: Tidak

DefaultDataset

Properti koneksi ini menentukan set data yang digunakan saat Anda menjalankan kueri tanpa menentukan set data secara eksplisit. Anda dapat menggunakan format DATASET_ID atau PROJECT_ID.DATASET_ID.

  • Nilai default: T/A
  • Jenis data: String
  • Wajib: Tidak

EnableHighThroughputAPI

Properti koneksi ini menentukan apakah Storage Read API dapat digunakan. Properti koneksi HighThroughputActivationRatio dan HighThroughputMinTableSize juga harus dipenuhi untuk menggunakan Storage Read API.

  • Nilai default: FALSE
  • Jenis data: Boolean
  • Wajib: Tidak

EnableSession

Properti koneksi ini menentukan apakah koneksi memulai sesi. Saat digunakan, ID sesi akan diteruskan ke semua kueri berikutnya.

  • Nilai default: FALSE
  • Jenis data: Boolean
  • Wajib: Tidak

EnableWriteAPI

Properti koneksi ini menentukan apakah Storage Write API dapat digunakan. Harus disetel ke TRUE untuk mengaktifkan penyisipan massal.

  • Nilai default: FALSE
  • Jenis data: Boolean
  • Wajib: Tidak

EndpointOverrides

Properti koneksi ini menetapkan endpoint kustom dalam string yang dipisahkan koma.

  • Nilai default:
    • BIGQUERY=https://bigquery.googleapis.com
    • READ_API=https://bigquerystorage.googleapis.com
    • OAUTH2=https://oauth2.googleapis.com
    • STS=https://sts.googleapis.com
  • Jenis data: String
  • Wajib: Tidak

FilterTablesOnDefaultDataset

Properti koneksi ini mengontrol cakupan metadata yang ditampilkan oleh metode DatabaseMetaData.getTables() dan DatabaseMetaData.getColumns(). Jika properti dinonaktifkan, pemfilteran tidak akan berfungsi. Properti koneksi DefaultDataset juga harus ditetapkan untuk mengaktifkan pemfilteran.

  • Nilai default: FALSE
  • Jenis data: Boolean
  • Wajib: Tidak

HighThroughputActivationRatio

Properti koneksi ini menetapkan nilai minimum untuk jumlah halaman dalam respons kueri. Jika jumlah ini terlampaui, dan kondisi EnableHighThroughputAPI dan HighThroughputMinTableSize terpenuhi, driver akan mulai menggunakan Storage Read API.

  • Nilai default: 2
  • Jenis data: Bilangan bulat
  • Wajib: Tidak

HighThroughputMinTableSize

Properti koneksi ini menetapkan nilai minimum untuk jumlah baris dalam respons kueri. Jika jumlah ini terlampaui, dan kondisi EnableHighThroughputAPI dan HighThroughputActivationRatio terpenuhi, driver akan mulai menggunakan Storage Read API.

  • Nilai default: 100
  • Jenis data: Bilangan bulat
  • Wajib: Tidak

JobCreationMode

Properti koneksi ini menentukan apakah kueri dijalankan tanpa membuat tugas. Nilai 1 berarti tugas dibuat untuk setiap kueri, dan nilai 2 berarti kueri dapat dijalankan tanpa tugas.

  • Nilai default: 2
  • Jenis data: Bilangan bulat
  • Wajib: Tidak

JobTimeout

Properti koneksi ini menetapkan waktu tunggu tugas (dalam detik) setelah tugas dibatalkan di server.

  • Nilai default: 0
  • Jenis data: Panjang
  • Wajib: Tidak

KMSKeyName

Properti koneksi ini menetapkan nama kunci KMS untuk mengenkripsi data.

  • Nilai default: T/A
  • Jenis data: String
  • Wajib: Tidak

Labels

Properti koneksi ini menetapkan label yang terkait dengan kueri untuk mengatur dan mengelompokkan tugas kueri.

  • Nilai default: T/A
  • Jenis data: Map<String, String>
  • Wajib: Tidak

LargeResultDataset

Properti koneksi ini menetapkan set data tujuan untuk hasil kueri. Untuk mengetahui informasi selengkapnya, lihat Kumpulan hasil besar.

  • Nilai default: _google_jdbc, hanya jika QueryDialect=BIG_QUERY atau jika QueryDialect=SQL dan properti koneksi LargeResultTable ditetapkan
  • Jenis data: String
  • Wajib: Tidak

LargeResultsDatasetExpirationTime

Properti koneksi ini menentukan masa aktif semua tabel dalam set data, dalam milidetik. Properti ini diabaikan jika set data sudah memiliki waktu habis masa berlaku default yang ditetapkan.

  • Nilai default: 3600000
  • Jenis data: Panjang
  • Wajib: Tidak

LargeResultTable

Properti koneksi ini menetapkan tabel tujuan untuk hasil kueri. Untuk mengetahui informasi selengkapnya, lihat Kumpulan hasil besar.

  • Nilai default: temp_table..., hanya jika QueryDialect=BIG_QUERY atau jika QueryDialect=SQL dan properti koneksi LargeResultTable ditetapkan
  • Jenis data: String
  • Wajib: Tidak

ListenerPoolSize

Properti koneksi ini menetapkan ukuran kumpulan pendengar jika penggabungan koneksi diaktifkan.

  • Nilai default: 10
  • Jenis data: Panjang
  • Wajib: Tidak

Location

Properti koneksi ini menentukan lokasi tempat set data dibuat atau dikueri. BigQuery akan otomatis menentukan lokasi jika nilai ini tidak ditetapkan.

  • Nilai default: T/A
  • Jenis data: String
  • Wajib: Tidak

LogLevel

Properti koneksi ini mengontrol tingkat detail yang dicatat selama interaksi database. Untuk deskripsi tingkat, lihat Logging.

  • Nilai default: 0
  • Jenis data: Bilangan bulat
  • Wajib: Tidak

LogPath

Properti koneksi ini menetapkan direktori tempat file log ditulis. Untuk mengetahui detail selengkapnya, lihat Logging.

  • Nilai default: T/A
  • Jenis data: String
  • Wajib: Tidak

MaximumBytesBilled

Properti koneksi ini membatasi jumlah byte yang ditagih. Kueri dengan byte yang ditagih lebih besar dari batas ini akan gagal tanpa menimbulkan biaya.

  • Nilai default: 0
  • Jenis data: Panjang
  • Wajib: Tidak

MaxResults

Properti koneksi ini menetapkan jumlah maksimum hasil per halaman.

  • Nilai default: 10000
  • Jenis data: Panjang
  • Wajib: Tidak

MetaDataFetchThreadCount

Properti koneksi ini mengonfigurasi jumlah thread yang digunakan untuk metode metadata database.

  • Nilai default: 32
  • Jenis data: Bilangan bulat
  • Wajib: Tidak

OAuthAccessToken

Properti koneksi ini menentukan token akses yang digunakan untuk autentikasi token akses yang dibuat sebelumnya.

  • Nilai default: T/A
  • Jenis data: String
  • Wajib: Jika AUTH_TYPE=2

OAuthClientId

Properti koneksi ini menetapkan ID klien untuk autentikasi token refresh yang telah dibuat sebelumnya dan autentikasi akun pengguna.

  • Nilai default: T/A
  • Jenis data: String
  • Wajib: Jika AUTH_TYPE=1 atau AUTH_TYPE=2

OAuthClientSecret

Properti koneksi ini menetapkan rahasia klien untuk autentikasi token refresh yang telah dibuat sebelumnya dan autentikasi akun pengguna.

  • Nilai default: T/A
  • Jenis data: String
  • Wajib: Jika AUTH_TYPE=1 atau AUTH_TYPE=2

OAuthP12Password

Properti koneksi ini menetapkan sandi untuk file kunci PKCS12.

  • Nilai default: notasecret
  • Jenis data: String
  • Wajib: Tidak

OAuthPvtKey

Properti koneksi ini menetapkan kunci akun layanan saat menggunakan autentikasi akun layanan. Nilai ini dapat berupa objek file kunci JSON mentah atau jalur ke file kunci JSON.

  • Nilai default: T/A
  • Jenis data: String
  • Wajib: Jika AUTH_TYPE=0 dan nilai OAuthPvtKeyPath tidak ditetapkan

OAuthPvtKeyPath

Properti koneksi ini menetapkan jalur ke kunci akun layanan saat menggunakan autentikasi akun layanan.

  • Nilai default: T/A
  • Jenis data: String
  • Wajib: Jika AUTH_TYPE=0 dan nilai OAuthPvtKey serta OAuthServiceAcctEmail tidak ditetapkan

OAuthRefreshToken

Properti koneksi ini menetapkan token refresh untuk autentikasi token refresh yang dibuat sebelumnya. Token refresh OAuth 2.0 adalah jenis token khusus yang memungkinkan aplikasi mendapatkan token akses baru saat token saat ini berakhir, tanpa mengharuskan pengguna untuk melakukan autentikasi ulang.

  • Nilai default: T/A
  • Jenis data: String
  • Wajib: Jika AUTH_TYPE=2

OAuthServiceAcctEmail

Properti koneksi ini menetapkan email akun layanan saat menggunakan autentikasi akun layanan.

  • Nilai default: T/A
  • Jenis data: String
  • Wajib: Jika AUTH_TYPE=0 dan nilai OAuthPvtKeyPath tidak ditetapkan

OAuthType

Properti koneksi ini menentukan jenis autentikasi. Nilainya harus berupa salah satu dari berikut:

  • 0: Autentikasi akun layanan Google
  • 1: Autentikasi akun pengguna Google
  • 2: Autentikasi token akses atau token refresh yang dibuat sebelumnya
  • 3: Autentikasi Kredensial Default Aplikasi
  • 4: Metode autentikasi eksternal, seperti Workforce Identity Federation atau Workload Identity Federation

  • Nilai default: -1
  • Jenis data: Bilangan bulat
  • Wajib: Ya

PartnerToken

Properti koneksi ini digunakan oleh partner Google Cloud untuk melacak penggunaan driver.

  • Nilai default: T/A
  • Jenis data: String
  • Wajib: Tidak

PrivateServiceConnectUris

Properti koneksi ini identik dengan properti EndpointOverrides. Sebagai gantinya, gunakan properti EndpointOverrides.

ProjectId

Properti koneksi ini menetapkan project ID default untuk driver. Project ini digunakan untuk menjalankan kueri dan ditagih untuk penggunaan resource. Jika tidak ditetapkan, driver menyimpulkan project ID.

  • Nilai default: T/A
  • Jenis data: String
  • Wajib: Tidak, tetapi sangat direkomendasikan

ProxyHost

Properti koneksi ini menetapkan nama host atau alamat IP server proxy yang digunakan untuk merutekan koneksi JDBC.

  • Nilai default: T/A
  • Jenis data: String
  • Wajib: Tidak

ProxyPort

Properti koneksi ini menetapkan nomor port tempat server proxy memproses koneksi.

  • Nilai default: T/A
  • Jenis data: String
  • Wajib: Tidak

ProxyPwd

Properti koneksi ini menetapkan sandi yang diperlukan untuk autentikasi saat terhubung melalui server proxy yang memerlukannya.

  • Nilai default: T/A
  • Jenis data: String
  • Wajib: Tidak

ProxyUid

Properti koneksi ini menetapkan nama pengguna yang diperlukan untuk autentikasi saat terhubung melalui server proxy yang memerlukannya.

  • Nilai default: T/A
  • Jenis data: String
  • Wajib: Tidak

QueryDialect

Properti koneksi ini menetapkan dialek SQL untuk eksekusi kueri. Gunakan SQL untuk GoogleSQL (sangat direkomendasikan) dan BIG_QUERY untuk legacy SQL.

  • Nilai default: SQL
  • Jenis data: String
  • Wajib: Tidak

QueryProperties

Properti koneksi ini mengonfigurasi modifikasi perilaku kueri.

Berikut adalah contoh yang ditetapkan dalam string koneksi:

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

Berikut adalah contoh yang ditetapkan di class 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);

Untuk mengetahui detail selengkapnya, lihat ConnectionProperty.

  • Nilai default: T/A
  • Jenis data: Map<String, String>
  • Wajib: Tidak

RequestGoogleDriveScope

Properti koneksi ini digunakan untuk meminta akses ke Google Drive. Jika diaktifkan, cakupan Drive hanya baca akan ditambahkan ke koneksi. Untuk mengaktifkan properti ini, tetapkan nilai ke 1.

  • Nilai default: 0
  • Jenis data: Bilangan bulat
  • Wajib: Tidak

RetryInitialDelay

Properti koneksi ini menetapkan penundaan (dalam detik) sebelum percobaan ulang pertama.

  • Nilai default: 0
  • Jenis data: Panjang
  • Wajib: Tidak

RetryMaxDelay

Properti koneksi ini menetapkan batas maksimum (dalam detik) untuk penundaan percobaan ulang.

  • Nilai default: 0
  • Jenis data: Panjang
  • Wajib: Tidak

ServiceAccountImpersonationChain

Properti koneksi ini menentukan daftar email akun layanan yang dipisahkan koma dalam rantai peniruan identitas.

  • Nilai default: T/A
  • Jenis data: String
  • Wajib: Tidak

ServiceAccountImpersonationEmail

Properti koneksi ini menetapkan email akun layanan yang akan di-impersonate.

  • Nilai default: T/A
  • Jenis data: String
  • Wajib: Tidak

ServiceAccountImpersonationScopes

Properti koneksi ini menentukan daftar cakupan OAuth2 yang dipisahkan koma untuk digunakan dengan akun yang di-impersonate.

  • Nilai default: https://www.googleapis.com/auth/bigquery
  • Jenis data: String
  • Wajib: Tidak

ServiceAccountImpersonationTokenLifetime

Properti koneksi ini menetapkan masa aktif token akun yang di-impersonate (dalam detik).

  • Nilai default: 3600
  • Jenis data: Bilangan bulat
  • Wajib: Tidak

SSLTrustStore

Properti koneksi ini menentukan jalur lengkap ke Java TrustStore yang berisi sertifikat Certificate Authority (CA) tepercaya. Driver menggunakan truststore ini untuk memvalidasi identitas server selama handshake SSL/TLS.

  • Nilai default: T/A
  • Jenis data: String
  • Wajib: Tidak

SSLTrustStorePwd

Properti koneksi ini menentukan sandi ke Java TrustStore yang ditentukan dalam properti SSLTrustStore.

  • Nilai default: T/A
  • Jenis data: String
  • Wajib: Hanya jika menggunakan Java TrustStore yang dilindungi sandi

SWA_ActivationRowCount

Properti koneksi ini menetapkan jumlah minimum baris executeBatch insert yang, jika terlampaui, akan menyebabkan konektor beralih ke Storage Write API.

  • Nilai default: 3
  • Jenis data: Bilangan bulat
  • Wajib: Tidak

SWA_AppendRowCount

Properti koneksi ini menetapkan ukuran aliran penulisan.

  • Nilai default: 1000
  • Jenis data: Bilangan bulat
  • Wajib: Tidak

Timeout

Properti koneksi ini menetapkan durasi, dalam detik, saat konektor mencoba ulang panggilan API yang gagal sebelum waktu tunggu habis.

  • Nilai default: 0
  • Jenis data: Panjang
  • Wajib: Tidak

UniverseDomain

Properti koneksi ini menetapkan domain semesta, domain tingkat teratas yang terkait dengan resource Google Cloud organisasi Anda.

  • Nilai default: googleapis.com
  • Jenis data: String
  • Wajib: Tidak

UnsupportedHTAPIFallback

Properti koneksi ini menentukan apakah konektor melakukan penggantian ke REST API (jika disetel ke TRUE) atau menampilkan error (jika disetel ke FALSE).

  • Nilai default: TRUE
  • Jenis data: Boolean
  • Wajib: Tidak

UseQueryCache

Properti koneksi ini mengaktifkan penyiapan cache kueri.

  • Nilai default: TRUE
  • Jenis data: Boolean
  • Wajib: Tidak