Saat melakukan kueri dan analisis data log, Anda sering perlu menggabungkannya dengan data dari tabel eksternal untuk memperkaya analisis. Topik ini menjelaskan cara menjalankan kueri JOIN pada data dari logstore Simple Log Service dan tabel eksternal di Object Storage Service (OSS).
Prasyarat
-
Data log dikumpulkan secara terus-menerus. Untuk informasi selengkapnya, lihat Pengumpulan data.
-
Indeks telah dibuat untuk data log. Untuk informasi selengkapnya, lihat Buat indeks.
-
Bucket OSS telah dibuat. Untuk informasi selengkapnya, lihat Buat bucket.
Latar Belakang
Sebagai contoh, sebuah perusahaan pembayaran ingin menganalisis bagaimana faktor-faktor seperti usia pengguna, wilayah, dan jenis kelamin memengaruhi kebiasaan pembayaran. Perusahaan tersebut menggunakan Simple Log Service untuk mengumpulkan log perilaku pembayaran secara real-time, yang mencakup metode pembayaran dan jumlahnya. Data atribut pengguna, seperti wilayah, usia, dan jenis kelamin, disimpan di OSS. Untuk mengatasi skenario ini, mesin kueri dan analisis Simple Log Service memungkinkan Anda menjalankan kueri JOIN pada data dari logstore dan sumber data eksternal, seperti database MySQL atau OSS. Anda dapat menggunakan sintaks SQL JOIN untuk menggabungkan data atribut pengguna dengan data perilaku guna menganalisis metrik yang terkait dengan atribut pengguna.
Menggabungkan data log dengan data di OSS memberikan manfaat berikut:
-
Mengurangi biaya: Anda dapat menyimpan data yang jarang diperbarui di OSS untuk mengurangi biaya penyimpanan. Anda juga dapat membaca data melalui jaringan internal untuk menghindari biaya lalu lintas outbound.
-
Mengurangi beban operasional: Anda tidak perlu memigrasikan data ke dalam satu sistem penyimpanan.
-
Menghemat waktu: Gunakan SQL untuk menganalisis data dan mendapatkan hasil dalam hitungan detik. Anda juga dapat menyimpan kueri yang sering digunakan sebagai grafik untuk akses cepat ke hasilnya.
Prosedur
-
Buat file CSV dan unggah ke OSS.
PentingAnda dapat mengaitkan beberapa file OSS. Ukuran maksimum satu file adalah 50 MB. File terkompresi tidak didukung. Ekspresi reguler tidak didukung dalam parameter.
-
Buat file bernama
user.csvdan tempel konten berikut ke dalamnya.userid,nick,gender,province,age 1,User A,male,Shanghai,18 2,User B,female,Zhejiang,19 3,User C,male,Guangdong,18 -
Unggah file
user.csvke OSS. Untuk informasi selengkapnya, lihat Unggah objek.
-
Masuk ke Konsol Simple Log Service.
Pada bagian Projects, klik proyek yang diinginkan.

Pada tab , klik logstore yang diinginkan.

-
Masukkan pernyataan kueri dan analisis, lalu pilih rentang waktu.
Gunakan pernyataan SQL untuk mendefinisikan tabel eksternal virtual yang dipetakan ke objek OSS. Dalam contoh ini, tabel eksternal diberi nama
user_meta1.* | create table user_meta1 ( userid bigint, nick varchar, gender varchar, province varchar, age bigint) with ( endpoint='oss-cn-hangzhou-internal.aliyuncs.com',accessid='<your AccessKey ID>',accesskey='<your AccessKey secret>',bucket='testoss',objects=ARRAY['user.csv'],type='oss')Jika kueri mengembalikan result berupa true, pernyataan berhasil dieksekusi.
Dalam pernyataan kueri, definisikan nama tabel eksternal, skema tabel, dan parameter lainnya. Gunakan klausa
WITHuntuk menentukan detail koneksi ke OSS dan informasi file target. Tabel berikut menjelaskan parameter-parameter tersebut.Parameter
Deskripsi
Contoh
Foreign table name
Nama tabel eksternal. Ini adalah nama tabel virtual.
user_meta1
Schema
Menentukan properti tabel, termasuk nama kolom dan tipe data. Tipe kolom yang didukung adalah bigint, boolean, double, dan varchar.
(userid bigint, nick varchar, gender varchar, province varchar, age bigint)
Endpoint
Titik akhir untuk mengakses OSS. Untuk informasi selengkapnya, lihat Wilayah dan titik akhir.
PentingAnda harus menggunakan titik akhir internal. Titik akhir publik tidak didukung.
oss-cn-hangzhou-internal.aliyuncs.com
Accessid
ID AccessKey dan Rahasia AccessKey Akun Alibaba Cloud Anda. Disarankan menggunakan pasangan AccessKey dari Pengguna RAM yang memiliki izin untuk mengakses data OSS. Untuk mempelajari cara memberikan izin kepada Pengguna RAM, lihat Berikan izin kepada Pengguna RAM. Untuk mempelajari cara mendapatkan pasangan AccessKey, lihat Pasangan AccessKey.
LTAI****************
Accesskey
yourAccessKeySecret
Bucket
Nama bucket OSS tempat file CSV disimpan.
examplebucket
Objects
File atau direktori target di dalam bucket. Parameter objects bertipe
ARRAYdan dapat berisi beberapa file atau direktori. Perhatikan hal berikut:-
Saat Anda menentukan direktori, akhiri dengan
/. Jika Anda menentukan direktori sepertitest_dir/, tabel eksternal akan dikaitkan dengan semua file CSV di direktori OSS tersebut dalam bucket yang sesuai. -
Batasan: Jumlah total file tidak boleh melebihi 100.
-
'user.csv'
-
'test_dir/'
-
'user.csv','test_dir/','my_dir/'
Type
Diatur ke oss, yang menunjukkan bahwa tipe tabel eksternal adalah Object Storage Service (OSS).
oss
-
-
Verifikasi bahwa penyimpanan eksternal telah didefinisikan.
Jalankan pernyataan berikut. Jika hasil yang dikembalikan berupa konten tabel yang sebelumnya Anda definisikan, penyimpanan eksternal berhasil didefinisikan. Dalam pernyataan ini, user_meta1 adalah penyimpanan eksternal yang Anda definisikan. Gantilah sesuai dengan kondisi aktual Anda.
* | select * from user_meta1Sebagai contoh, jika hasilnya berisi bidang seperti
userid,nick,gender,province, danagebeserta data yang sesuai, penyimpanan eksternal berhasil didefinisikan. -
Jalankan kueri JOIN pada logstore dan tabel eksternal OSS.
Jalankan pernyataan kueri dan analisis berikut untuk mengaitkan ID log di Simple Log Service dengan userid di file OSS guna memperkaya informasi log. Dalam pernyataan ini, test_accesslog adalah nama Logstore, l adalah alias Logstore, dan user_meta1 adalah tabel penyimpanan eksternal yang Anda definisikan. Gantilah dengan nilai aktual Anda.
* | select * from test_accesslog l join user_meta1 u on l.userid = u.useridContoh kueri JOIN:
-
Hitung jumlah permintaan akses berdasarkan jenis kelamin.
* | select u.gender, count(1) from test_accesslog l join user_meta1 u on l.userid = u.userid group by u.gender
-
Hitung jumlah permintaan akses berdasarkan kelompok usia.
* | select u.age, count(1) from test_accesslog l join user_meta1 u on l.userid = u.userid group by u.age
-
Analisis tren akses dari waktu ke waktu berdasarkan kelompok usia.
* | select date_trunc('minute',__time__) as minute, count(1) ,u.age from test_accesslog l join user_meta1 u on l.userid = u.userid group by u.age,minute
-