Kueri gabungan AlloyDB
Sebagai analis data, Anda dapat membuat kueri data di AlloyDB untuk PostgreSQL dari BigQuery menggunakan kueri gabungan.
Gabungan BigQuery AlloyDB memungkinkan BigQuery membuat kueri data yang ada di AlloyDB secara real time tanpa menyalin atau memindahkan data.
Sebelum memulai
- Pastikan administrator BigQuery telah membuat koneksi AlloyDB dan membagikannya kepada Anda.
-
Untuk mendapatkan izin yang diperlukan guna membuat kueri instance AlloyDB, minta administrator untuk memberi Anda peran IAM BigQuery Connection User (
roles/bigquery.connectionUser
) di project Anda. Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses ke project, folder, dan organisasi.Anda mungkin juga bisa mendapatkan izin yang diperlukan melalui peran khusus atau peran bawaan lainnya.
Data kueri
Untuk mengirim kueri gabungan ke AlloyDB dari kueri GoogleSQL, gunakan fungsi EXTERNAL_QUERY
.
Misalkan Anda menyimpan tabel pelanggan di BigQuery, sambil
menyimpan tabel penjualan di AlloyDB, dan ingin menggabungkan kedua tabel tersebut dalam
satu kueri. Contoh berikut membuat kueri gabungan ke tabel AlloyDB bernama orders
dan menggabungkan hasilnya dengan tabel BigQuery bernama mydataset.customers
.
Contoh kueri ini mencakup 3 bagian:
Jalankan kueri eksternal
SELECT customer_id, MIN(order_date) AS first_order_date FROM orders GROUP BY customer_id
di database AlloyDB untuk mendapatkan tanggal pesanan pertama bagi setiap pelanggan melalui fungsiEXTERNAL_QUERY
.Gabungkan tabel hasil kueri eksternal dengan tabel pelanggan di BigQuery berdasarkan
customer_id
.Pilih informasi pelanggan dan tanggal pesanan pertama dalam set hasil akhir.
SELECT c.customer_id, c.name, rq.first_order_date
FROM mydataset.customers AS c
LEFT OUTER JOIN EXTERNAL_QUERY(
'us.connection_id',
'''SELECT customer_id, MIN(order_date) AS first_order_date
FROM orders
GROUP BY customer_id''') AS rq ON rq.customer_id = c.customer_id
GROUP BY c.customer_id, c.name, rq.first_order_date;
Melihat skema tabel AlloyDB
Anda dapat menggunakan fungsi EXTERNAL_QUERY
untuk membuat kueri tabel information_schema
guna mengakses metadata database. Misalnya, Anda dapat mencantumkan semua tabel dalam database atau melihat skema tabel. Untuk informasi selengkapnya, lihat tabel information_schema PostgreSQL.
-- List all tables in a database.
SELECT * FROM EXTERNAL_QUERY("region.connection_id",
"select * from information_schema.tables;");
-- List all columns in a table.
SELECT * FROM EXTERNAL_QUERY("region.connection_id",
"select * from information_schema.columns where table_name='x';");
Melacak kueri gabungan BigQuery
Saat Anda menjalankan kueri gabungan terhadap AlloyDB, BigQuery akan menganotasi kueri dengan komentar yang mirip dengan berikut:
/* Federated query from BigQuery. Project ID: PROJECT_ID, BigQuery Job ID: JOB_ID. */
Jika Anda memantau log untuk penggunaan kueri, anotasi berikut dapat membantu Anda mengidentifikasi kueri yang berasal dari BigQuery.
Buka halaman Logs Explorer.
Di tab Query, masukkan kueri berikut:
resource.type="alloydb.googleapis.com/Instance" textPayload=~"Federated query from BigQuery"
Klik Run query.
Jika ada data yang tersedia untuk kueri gabungan BigQuery, daftar data yang mirip dengan berikut akan muncul di Hasil kueri.
YYYY-MM-DD hh:mm:ss.millis UTC [3210064]: [4-1] db=DATABASE, user=USER_ACCOUNT STATEMENT: SELECT 1 FROM (SELECT FROM company_name_table) t; /* Federated query from BigQuery. Project ID: PROJECT_ID, BigQuery Job ID: JOB_ID */ YYYY-MM-DD hh:mm:ss.millis UTC [3210532]: [2-1] db=DATABASE, user=USER_ACCOUNT STATEMENT: SELECT "company_id", "company type_id" FROM (SELECT FROM company_name_table) t; /* Federated query from BigQuery. Project ID: PROJECT_ID, BigQuery Job ID: JOB_ID */
Untuk mengetahui informasi selengkapnya tentang Cloud Logging, lihat Cloud Logging.
Pemecahan masalah
Bagian ini menjelaskan potensi error yang mungkin Anda alami saat mengirim kueri gabungan ke AlloyDB dan memberikan kemungkinan solusi pemecahan masalah.
Masalah: Gagal terhubung ke server database dengan error ini:
Invalid table-valued function EXTERNAL_QUERY Connect to PostgreSQL server failed: server closed the connection unexpectedly. This probably means the server terminated abnormally before or while processing the request.
Penyelesaian: Pastikan Anda menggunakan kredensial yang valid dan mengikuti semua prasyarat saat membuat koneksi ke AlloyDB.
Periksa apakah akun layanan yang otomatis dibuat saat koneksi ke AlloyDB dibuat memiliki peran AlloyDB Client (roles/alloydb.client
).
Untuk mengetahui informasi selengkapnya, lihat
Memberikan akses ke akun layanan.
Langkah selanjutnya
- Pelajari kueri gabungan.
- Pelajari pemetaan jenis data PostgreSQL ke BigQuery.
- Pelajari jenis data yang tidak didukung.