Kueri gabungan AlloyDB
Sebagai analis data, Anda dapat membuat kueri data dalam AlloyDB untuk PostgreSQL dari BigQuery menggunakan kueri gabungan.
Federasi AlloyDB BigQuery memungkinkan BigQuery kueri data yang ada di AlloyDB secara real time tanpa menyalin atau memindahkan data.
Sebelum memulai
- Pastikan administrator BigQuery Anda telah membuat koneksi AlloyDB dan dibagikan dengan Anda.
-
Untuk mendapatkan izin yang Anda perlukan untuk 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 perintah peran atau setelan standar lainnya peran tertentu.
Data kueri
Untuk mengirim kueri gabungan ke AlloyDB dari
kueri GoogleSQL, gunakan
Fungsi EXTERNAL_QUERY
.
Misalkan Anda menyimpan tabel pelanggan di BigQuery, sementara
menyimpan tabel penjualan di AlloyDB, dan ingin menggabungkan dua tabel di
terhadap 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 setiap pelanggan melalui fungsiEXTERNAL_QUERY
.Gabungkan tabel hasil kueri eksternal dengan tabel pelanggan di BigQuery oleh
customer_id
.Pilih informasi pelanggan dan tanggal pesanan pertama di kumpulan 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 membuat daftar semua tabel dalam
{i>database <i}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 federasi terhadap AlloyDB, BigQuery memberikan anotasi pada kueri dengan komentar yang mirip dengan yang berikut ini:
/* 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 temui saat mengirim Kueri gabungan ke AlloyDB dan memberikan kemungkinan pemecahan masalah resolusi.
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.
Resolusi: Pastikan Anda menggunakan kredensial yang valid dan mengikuti semua prasyarat
sambil membuat koneksi ke AlloyDB.
Periksa apakah akun layanan yang otomatis dibuat saat koneksi ke AlloyDB dibuat memiliki peran AlloyDB Client (roles/alloydb.client
).
Untuk informasi selengkapnya, lihat
Berikan akses ke akun layanan.
Langkah selanjutnya
- Pelajari kueri gabungan.
- Pelajari pemetaan jenis data PostgreSQL ke BigQuery.
- Pelajari jenis data yang tidak didukung.