Topik ini menjelaskan sintaksis dan parameter fungsi sumber daya serta memberikan contoh penggunaannya.
Fungsi
Saat memanggil fungsi sumber daya berikut, Anda harus mengonfigurasi Mode Pratinjau Lanjutan untuk menarik data yang diperlukan. Untuk informasi lebih lanjut tentang konfigurasi Mode Pratinjau Lanjutan, lihat Pratinjau Lanjutan.
Fungsi | Deskripsi |
Menarik nilai parameter lanjutan dari pekerjaan transformasi data saat ini. Fungsi ini dapat digunakan bersama dengan fungsi lainnya. Untuk informasi lebih lanjut, lihat Gunakan Layanan Log Sederhana untuk terhubung ke instance ApsaraDB RDS for MySQL untuk pengayaan data. | |
Menarik data dari tabel tertentu dalam database yang dibuat pada instance ApsaraDB RDS for MySQL atau mendapatkan hasil eksekusi pernyataan SQL. Data dan hasil dapat diperbarui secara berkala. Fungsi ini dapat digunakan bersama dengan fungsi lainnya. Untuk informasi lebih lanjut, lihat Gunakan Layanan Log Sederhana untuk terhubung ke instance ApsaraDB RDS for MySQL untuk pengayaan data. | |
Menarik data dari penyimpanan log lain saat Anda mentransformasi data di penyimpanan log. Anda dapat menarik data secara terus-menerus. Fungsi ini dapat digunakan bersama dengan fungsi lainnya. Untuk informasi lebih lanjut, lihat Tarik data dari satu penyimpanan log untuk memperkaya data log di penyimpanan log lain. | |
Menarik data dari objek dalam Bucket Object Storage Service (OSS) yang ditentukan. Data dapat diperbarui secara berkala. Fungsi ini dapat digunakan bersama dengan fungsi lainnya. Untuk informasi lebih lanjut, lihat Tarik file CSV dari OSS untuk memperkaya data. |
res_local
Fungsi res_local menarik nilai parameter lanjutan dari pekerjaan transformasi data saat ini.
Sintaksis
res_local(param, default=None, type="auto")Parameter
Parameter
Tipe
Diperlukan
Deskripsi
param
String
Ya
Kunci yang ditentukan dalam Advanced Parameter Settings untuk pekerjaan transformasi data saat ini.
default
String
Tidak
Nilai yang dikembalikan jika kunci yang ditentukan untuk parameter param tidak ada. Nilai default: None.
type
String
Tidak
Format data keluaran. Nilai valid:
auto: Data mentah dikonversi menjadi string JSON. Jika konversi gagal, data mentah dikembalikan. Ini adalah nilai default.
JSON: Data mentah dikonversi menjadi string JSON. Jika konversi gagal, nilai parameter default dikembalikan.
raw: Data mentah dikembalikan.
Respon
String JSON atau data mentah dikembalikan sesuai dengan pengaturan parameter.
Konversi berhasil
Data mentah
Nilai kembali
Tipe data nilai kembali
1
1
Integer
1.2
1.2
Float
true
True
Boolean
false
False
Boolean
"123"
123
String
null
None
None
["v1", "v2", "v3"]
["v1", "v2", "v3"]
List
["v1", 3, 4.0]
["v1", 3, 4.0]
List
{"v1": 100, "v2": "good"}
{"v1": 100, "v2": "good"}
List
{"v1": {"v11": 100, "v2": 200}, "v3": "good"}
{"v1": {"v11": 100, "v2": 200}, "v3": "good"}
List
Konversi gagal
Tabel berikut menunjukkan beberapa contoh konversi yang gagal. Data mentah berikut tidak dapat dikonversi menjadi string JSON, sehingga data mentah dikembalikan sebagai string.
Data mentah
Nilai kembali
Deskripsi
(1,2,3)
"(1,2,3)"
Tuple tidak didukung. Daftar harus digunakan.
True
"True"
Nilai tipe data Boolean hanya bisa true atau false. Nilai-nilai tersebut harus dalam huruf kecil.
{1: 2, 3: 4}
"{1: 2, 3: 4}"
Kunci kamus hanya bisa berupa string.
Contoh
Mendapatkan kunci yang ditentukan dalam Pengaturan Parameter Lanjutan dan menetapkan nilai kunci tersebut ke parameter local.
Dalam Pengaturan Parameter Lanjutan, kuncinya adalah endpoint, dan nilainya adalah hangzhou.

Log mentah
content: 1Aturan transformasi
e_set("local", res_local('endpoint'))Hasil
content: 1 local: hangzhou
Referensi
Fungsi ini dapat digunakan bersama dengan fungsi lainnya. Untuk informasi lebih lanjut, lihat Gunakan Layanan Log Sederhana untuk terhubung ke instance ApsaraDB RDS for MySQL untuk pengayaan data.
res_rds_mysql
Fungsi res_rds_mysql menarik data dari tabel tertentu dalam database yang dibuat pada instance ApsaraDB RDS for MySQL atau mendapatkan hasil eksekusi pernyataan SQL. Layanan Log memungkinkan Anda menarik data menggunakan metode berikut:
Jika menggunakan fungsi res_rds_mysql untuk menarik data dari database yang dibuat pada instance ApsaraDB RDS for MySQL, Anda harus membuat daftar putih pada instance dan menambahkan
0.0.0.0ke daftar putih. Ini memungkinkan akses ke database dari semua alamat IP, tetapi mungkin menciptakan risiko bagi database. Jika ingin menambahkan alamat IP Layanan Log ke daftar putih, Anda harus mengajukan ticket.Layanan Log dapat mengakses database yang dibuat pada instance ApsaraDB RDS for MySQL baik melalui endpoint publik maupun internal. Jika menggunakan endpoint internal, Anda harus mengonfigurasi parameter lanjutan. Untuk informasi lebih lanjut, lihat Gunakan Layanan Log Sederhana untuk terhubung ke instance ApsaraDB RDS for MySQL untuk pengayaan data.
Tarik semua data hanya sekali
Saat menjalankan pekerjaan transformasi data untuk pertama kalinya, Layanan Log menarik semua data dari tabel tertentu dan tidak menarik data lagi. Metode ini direkomendasikan jika database Anda tidak diperbarui.
Tarik semua data secara berkala
Saat menjalankan pekerjaan transformasi data, Layanan Log menarik semua data dari tabel tertentu secara berkala. Dengan cara ini, Layanan Log dapat menyinkronkan data dengan database Anda secara tepat waktu. Namun, metode ini memerlukan waktu yang lama. Jika volume data database Anda kurang dari atau sama dengan 2 GB dan nilai parameter refresh_interval lebih besar dari atau sama dengan 300 detik, metode ini direkomendasikan.

Tarik data tambahan secara berkala
Saat menjalankan pekerjaan transformasi data, Layanan Log hanya menarik data tambahan berdasarkan bidang timestamp dari database tertentu. Metode ini efisien karena hanya menarik data baru yang ditambahkan. Anda dapat mengatur parameter refresh_interval ke 1 detik untuk menyinkronkan data dalam hitungan detik. Jika volume data database Anda besar, data sering diperbarui, atau Anda memerlukan penarikan data secara tepat waktu, metode ini direkomendasikan.

Sintaksis
res_rds_mysql(address="Alamat database dari mana data ditarik", username="Nama pengguna yang digunakan untuk terhubung ke database", password="Kata sandi yang digunakan untuk terhubung ke database", database="Nama database", table=None, sql=None, fields=None, fetch_include_data=None, fetch_exclude_data=None, refresh_interval=0, base_retry_back_off=1, max_retry_back_off=60, primary_keys=None, use_ssl=false, update_time_key=None, deleted_flag_key=None)CatatanAnda juga dapat menggunakan fungsi res_rds_mysql untuk menarik data dari database yang dibuat dalam cluster AnalyticDB for MySQL atau PolarDB for MySQL. Dalam skenario ini, cukup ganti alamat, nama pengguna, kata sandi, dan nama database dalam aturan transformasi dengan nilai sebenarnya.
Parameter
Parameter
Tipe
Diperlukan
Deskripsi
address
String
Ya
Endpoint atau alamat IP dari database yang ingin Anda hubungkan. Jika nomor port bukan 3306, tentukan nilai dalam format
Alamat IP:Port. Untuk informasi lebih lanjut, lihat Lihat dan ubah endpoint serta nomor port.username
String
Ya
Nama pengguna yang digunakan untuk terhubung ke database.
password
String
Ya
Kata sandi yang digunakan untuk terhubung ke database.
database
String
Ya
Nama database yang ingin Anda hubungkan.
table
String
Ya
Nama tabel dari mana Anda ingin menarik data. Jika parameter sql dikonfigurasi, parameter ini tidak diperlukan.
sql
String
Ya
Gunakan pernyataan SQL SELECT untuk mengambil semua data relevan dari database dan memuatnya ke dalam memori pemrosesan. SQL dapat mengoptimalkan penggunaan memori dengan memfilter bidang dan baris, mengurangi ruang yang ditempati oleh tabel memori pemrosesan. Jika parameter table dikonfigurasi, parameter ini tidak diperlukan.
fields
Daftar string
Tidak
Daftar string atau daftar alias string. Jika Anda tidak mengonfigurasi parameter ini, semua kolom yang dikembalikan untuk parameter sql atau table digunakan. Sebagai contoh, jika Anda ingin mengubah nama kolom name dalam daftar ["user_id", "province", "city", "name", "age"] menjadi user_name, Anda harus mengatur parameter fields ke ["user_id", "province", "city", ("name", "user_name"), ("nickname", "nick_name"), "age"].
CatatanJika Anda mengonfigurasi parameter sql, table, dan fields bersama-sama, pernyataan SQL dalam parameter sql dieksekusi. Parameter table dan fields tidak berlaku.
fetch_include_data
String
Tidak
Daftar putih bidang. Log yang bidangnya cocok dengan parameter fetch_include_data dipertahankan. Log yang bidangnya tidak cocok dengan parameter ini dibuang.
Jika Anda tidak mengonfigurasi parameter ini atau menetapkan parameter ini ke None, fitur daftar putih bidang dinonaktifkan.
Jika Anda menetapkan parameter ini ke bidang dan nilai tertentu, log yang berisi bidang dan nilai tersebut dipertahankan.
fetch_exclude_data
String
Tidak
Daftar hitam bidang. Log yang bidangnya cocok dengan parameter fetch_exclude_data dibuang. Log yang bidangnya tidak cocok dengan parameter ini dipertahankan.
Jika Anda tidak mengonfigurasi parameter ini atau menetapkan parameter ini ke None, fitur daftar hitam bidang dinonaktifkan.
Jika Anda menetapkan parameter ini ke bidang dan nilai tertentu, log yang berisi bidang dan nilai tersebut dibuang.
CatatanJika Anda mengonfigurasi parameter fetch_include_data dan fetch_exclude_data, data ditarik pertama kali berdasarkan pengaturan parameter fetch_include_data dan kemudian berdasarkan pengaturan parameter fetch_exclude_data.
refresh_interval
String numerik atau angka
Tidak
Interval penarikan data dari ApsaraDB RDS for MySQL. Satuan: detik. Nilai default: 0. Nilai ini menunjukkan bahwa semua data hanya ditarik sekali.
base_retry_back_off
Angka
Tidak
Interval sistem mencoba menarik data lagi setelah kegagalan penarikan. Nilai default: 1. Satuan: detik.
max_retry_back_off
Int
Tidak
Interval maksimum antara dua percobaan ulang berturut-turut setelah kegagalan penarikan. Nilai default: 60. Satuan: detik. Kami sarankan Anda menggunakan nilai default.
primary_keys
String/Daftar
Tidak
Kunci utama dalam penyimpanan kunci-nilai tabel dimensi di memori. Jika Anda mengonfigurasi parameter ini, data dalam tabel disimpan ke memori sebagai kamus dalam format Key:Value. Kunci dalam kamus adalah nilai parameter primary_keys. Nilai dalam kamus adalah seluruh baris data dalam tabel.
CatatanParameter primary_keys harus ditetapkan. Jika tidak, kinerja akan terpengaruh secara signifikan dan penundaan tugas mungkin terjadi.
Nilai parameter primary_keys harus ada dalam bidang yang ditarik dari tabel.
Nilai parameter primary_keys bersifat peka huruf besar-kecil.
use_ssl
Boolean
Tidak
Menentukan apakah menggunakan protokol SSL untuk terhubung ke instance ApsaraDB RDS for MySQL. Nilai default: false.
CatatanJika enkripsi SSL diaktifkan pada instance ApsaraDB RDS for MySQL, Layanan Log terhubung ke instance melalui SSL. Namun, sertifikat server tidak diverifikasi. Sertifikat server tidak dapat digunakan untuk membangun koneksi.
update_time_key
String
Tidak
Bidang waktu yang digunakan untuk menarik data tambahan. Jika Anda tidak mengonfigurasi parameter ini, semua data ditarik. Sebagai contoh, update_time dalam update_time_key="update_time" menunjukkan bidang waktu pembaruan data dalam database. Bidang waktu mendukung tipe data berikut: datetime, timestamp, integer, float, dan decimal. Pastikan nilai bidang waktu meningkat sesuai urutan kronologis.
CatatanLayanan Log menarik data tambahan berdasarkan bidang waktu. Pastikan indeks dikonfigurasi untuk bidang ini dalam tabel. Jika indeks tidak dikonfigurasi, pemindaian tabel penuh dilakukan. Selain itu, kesalahan dilaporkan, yang menunjukkan kegagalan menarik data tambahan.
deleted_flag_key
String
Tidak
Data yang tidak perlu ditransformasi dan dibuang saat menarik data tambahan. Sebagai contoh, jika nilai key dalam update_time_key="key" memenuhi kondisi berikut, nilainya diuraikan sebagai data yang dihapus:
Boolean: true
Datetime dan timestamp: tidak kosong
Char dan varchar: 1, true, t, yes, dan y
Integer: bukan nol
CatatanAnda harus mengonfigurasi parameter deleted_flag_key bersama dengan parameter update_time_key.
Jika Anda mengonfigurasi parameter update_time_key tetapi tidak mengonfigurasi parameter deleted_flag_key, tidak ada data yang dibuang saat menarik data tambahan.
connector
String
Tidak
Konektor yang digunakan untuk terhubung secara remote ke database. Nilai valid: mysql dan pgsql. Nilai default: mysql.
Respon
Tabel yang berisi beberapa kolom dikembalikan. Kolom-kolom tersebut didefinisikan oleh parameter fields.
Penanganan kesalahan
Jika terjadi kesalahan saat menarik data, kesalahan dilaporkan, tetapi pekerjaan transformasi data terus berjalan. Percobaan ulang dilakukan berdasarkan nilai parameter base_retry_back_off. Interval percobaan ulang pertama adalah 1 detik. Jika percobaan ulang pertama gagal, interval percobaan ulang kedua adalah dua kali panjang interval pertama. Proses ini berlanjut hingga interval mencapai nilai parameter max_retry_back_off. Jika kesalahan terus berlanjut, percobaan ulang dilakukan berdasarkan nilai parameter max_retry_back_off. Jika percobaan ulang berhasil, interval percobaan ulang diatur ulang ke nilai awal, yaitu 1 detik.
Contoh
Tarik semua data
Contoh 1: Tarik data dari tabel test_table dalam database test_db pada interval 300 detik.
res_rds_mysql( address="rm-uf6wjk5****mo.mysql.rds.aliyuncs.com", username="test_username", password="****", database="test_db", table="test_table", refresh_interval=300, )Contoh 2: Tarik data dari tabel test_table, tidak termasuk catatan data yang nilai status-nya adalah delete.
res_rds_mysql( address="rm-uf6wjk5****mo.mysql.rds.aliyuncs.com", username="test_username", password="****", database="test_db", table="test_table", refresh_interval=300, fetch_exclude_data="'status':'delete'", )Contoh 3: Tarik catatan data yang nilai status-nya adalah exit dari tabel test_table.
res_rds_mysql( address="rm-uf6wjk5***mo.mysql.rds.aliyuncs.com", username="test_username", password="****", database="test_db", table="test_table", refresh_interval=300, fetch_include_data="'status':'exit'", )Contoh 4: Tarik catatan data yang nilai status-nya adalah exit dari tabel test_table, tidak termasuk catatan data yang nilai name-nya adalah aliyun.
res_rds_mysql( address="rm-uf6wjk5***mo.mysql.rds.aliyuncs.com", username="test_username", password="****", database="test_db", table="test_table", refresh_interval=300, fetch_include_data="'status':'exit'", fetch_exclude_data="'name':'aliyun'", )Contoh 5: Gunakan konektor pgsql untuk terhubung ke database Hologres dan tarik data dari tabel test_table.
res_rds_mysql( address="hgpostcn-cn-****-cn-hangzhou.hologres.aliyuncs.com:80", username="test_username", password="****", database="aliyun", table="test_table", connector="pgsql", )Contoh 6: Tarik data menggunakan parameter primary_keys.
Jika Anda mengonfigurasi parameter primary_keys, nilainya diekstraksi sebagai kunci. Data yang ditarik dari tabel disimpan ke memori dalam format {"10001":{"userid":"10001","city_name":"beijing","city_number":"12345"}}. Dalam hal ini, data ditarik dengan kecepatan tinggi. Jika Anda ingin menarik volume data yang besar, metode ini direkomendasikan. Jika Anda tidak mengonfigurasi parameter primary_keys, fungsi menjelajahi tabel per baris. Kemudian, fungsi menarik data dan menyimpan data ke memori dalam format [{"userid":"10001","city_name":"beijing","city_number":"12345"}]. Dalam hal ini, data ditarik dengan kecepatan rendah, tetapi hanya sebagian kecil memori yang digunakan. Jika Anda ingin menarik volume data yang kecil, metode ini direkomendasikan.
Tabel
userid
city_name
city_number
10001
beijing
12345
Log mentah
# Catatan Data 1 userid:10001 gdp:1000 # Catatan Data 2 userid:10002 gdp:800Aturan transformasi
e_table_map( res_rds_mysql( address="rm-uf6wjk5***mo.mysql.rds.aliyuncs.com", username="test_username", password="****", database="test_db", table="test_table", primary_keys="userid", ), "userid", ["city_name", "city_number"], )Hasil
# Catatan Data 1 userid:10001 gdp:1000 city_name: beijing city_number:12345 # Catatan Data 2 userid:10002 gdp:800
Tarik data tambahan
Contoh 1: Tarik data tambahan.
CatatanAnda hanya dapat menarik data tambahan dari tabel jika kondisi berikut terpenuhi:
Tabel memiliki kunci utama unik dan bidang waktu, seperti bidang item_id dan update_time.
Parameter primary_keys, refresh_interval, dan update_time_key dikonfigurasi.
Tabel
item_id
item_name
price
1001
Orange
10
1002
Apple
12
1003
Mango
16
Log mentah
# Catatan Data 1 item_id: 1001 total: 100 # Catatan Data 2 item_id: 1002 total: 200 # Catatan Data 3 item_id: 1003 total: 300Aturan transformasi
e_table_map( res_rds_mysql( address="rm-uf6wjk5***mo.mysql.rds.aliyuncs.com", username="test_username", password="****", database="test_db", table="test_table", primary_key="item_id", refresh_interval=1, update_time_key="update_time", ), "item_id", ["item_name", "price"], )Hasil
# Catatan Data 1 item_id: 1001 total: 100 item_name: Orange price:10 # Catatan Data 2 item_id: 1002 total: 200 item_name: Apple price:12 # Catatan Data 3 item_id: 1003 total: 300 item_name: Mango price:16
Contoh 2: Konfigurasikan parameter deleted_flag_key untuk membuang data tertentu saat menarik data tambahan.
Tabel
item_id
item_name
price
update_time
Is_deleted
1001
Orange
10
1603856138
False
1002
Apple
12
1603856140
False
1003
Mango
16
1603856150
False
Log mentah
# Catatan Data 1 item_id: 1001 total: 100 # Catatan Data 2 item_id: 1002 total: 200 # Catatan Data 3 item_id: 1003 total: 300Aturan transformasi
e_table_map( res_rds_mysql( address="rm-uf6wjk5***mo.mysql.rds.aliyuncs.com", username="test_username", password="****", database="test_db", table="test_table", primary_key="item_id", refresh_interval=1, update_time_key="update_time", deleted_flag_key="is_deleted", ), "item_id", ["item_name", "price"], )Hasil
Fungsi res_rds_mysql menarik tiga catatan data dari tabel ke memori server tempat Layanan Log berjalan. Catatan data ini dibandingkan dengan catatan data yang ada di Logstore sumber untuk memeriksa apakah catatan tersebut cocok. Jika Anda ingin membuang catatan data dengan item_id 1001, temukan catatan data dengan item_id 1001 dalam tabel dan ubah nilai bidang Is_deleted menjadi true. Dengan cara ini, catatan data 1001 dibuang pada pembaruan berikutnya dari tabel dimensi di memori.
# Catatan Data 2 item_id: 1002 total: 200 item_name: Apple price:12 # Catatan Data 3 item_id: 1003 total: 300 item_name: Mango price:1
Referensi
Fungsi ini dapat digunakan bersama dengan fungsi lainnya. Untuk informasi lebih lanjut, lihat Gunakan Layanan Log Sederhana untuk terhubung ke instance ApsaraDB RDS for MySQL untuk pengayaan data.
res_log_logstore_pull
Fungsi res_log_logstore_pull menarik data dari Logstore lain saat Anda mentransformasi data di Logstore.
Sintaksis
res_log_logstore_pull(endpoint, ak_id, ak_secret, project, logstore, fields, from_time="begin", to_time=None, fetch_include_data=None, fetch_exclude_data=None, primary_keys=None, fetch_interval=2, delete_data=None, base_retry_back_off=1, max_retry_back_off=60, ttl=None, role_arn=None)Parameter
Parameter
Tipe
Diperlukan
Deskripsi
endpoint
String
Ya
Endpoint. Untuk informasi lebih lanjut, lihat Endpoints. Secara default, endpoint HTTPS digunakan. Anda juga dapat menggunakan endpoint HTTP. Dalam kasus khusus, Anda mungkin perlu menggunakan port selain port 80 atau 443.
ak_id
String
Ya
ID AccessKey akun Alibaba Cloud Anda. Untuk memastikan keamanan data, kami sarankan Anda mengonfigurasi parameter ini dalam Advanced Parameter Settings. Untuk informasi lebih lanjut tentang cara mengonfigurasi parameter lanjutan, lihat Buat pekerjaan transformasi data.
ak_secret
String
Ya
Rahasia AccessKey akun Alibaba Cloud Anda. Untuk memastikan keamanan data, kami sarankan Anda mengonfigurasi parameter ini dalam Advanced Parameter Settings. Untuk informasi lebih lanjut tentang cara mengonfigurasi parameter lanjutan, lihat Buat pekerjaan transformasi data.
project
String
Ya
Nama proyek dari mana Anda ingin menarik data.
logstore
String
Ya
Nama Logstore dari mana Anda ingin menarik data.
fields
Daftar string
Ya
Daftar string atau daftar alias string. Jika log tidak berisi bidang tertentu, nilai bidang tersebut adalah string kosong. Sebagai contoh, jika Anda ingin mengubah nama kolom name dalam daftar ["user_id", "province", "city", "name", "age"] menjadi user_name, Anda harus mengatur parameter ini ke ["user_id", "province", "city", ("name", "user_name"), ("nickname", "nick_name"), "age"].
from_time
String
Tidak
Waktu server saat penarikan data pertama kali dari Logstore dimulai. Nilai default: begin. Nilai ini menunjukkan bahwa Layanan Log mulai menarik data dari log pertama. Format waktu berikut didukung:
Timestamp UNIX.
String waktu.
String kustom, seperti begin atau end.
Ekspresi: waktu yang dikembalikan oleh fungsi dt_. Sebagai contoh, fungsi dt_totimestamp(dt_truncate(dt_today(tz="Asia/Shanghai"), day=op_neg(-1))) mengembalikan waktu mulai penarikan data, yaitu satu hari sebelum waktu saat ini. Jika waktu saat ini adalah 2019-5-5 10:10:10 (UTC+8), waktu yang dikembalikan adalah 2019-5-4 10:10:10 (UTC+8).
to_time
String
Tidak
Waktu server saat penarikan data pertama kali dari Logstore berakhir. Nilai default: None. Nilai ini menunjukkan bahwa Layanan Log berhenti menarik data pada log terakhir. Format waktu berikut didukung:
Timestamp UNIX.
String waktu.
String kustom, seperti begin atau end.
Ekspresi: waktu yang dikembalikan oleh fungsi dt_.
Jika Anda tidak mengonfigurasi parameter ini atau menetapkan parameter ini ke None, data ditarik dari log terbaru secara terus-menerus.
CatatanJika Anda menetapkan parameter ini ke titik waktu yang lebih lambat dari waktu saat ini, hanya data yang ada di Logstore yang ditarik. Data baru tidak ditarik.
fetch_include_data
String
Tidak
Daftar putih bidang. Log yang bidangnya cocok dengan parameter fetch_include_data dipertahankan. Log yang bidangnya tidak cocok dengan parameter ini dibuang.
Jika Anda tidak mengonfigurasi parameter ini atau menetapkan parameter ini ke None, fitur daftar putih bidang dinonaktifkan.
Jika Anda menetapkan parameter ini ke bidang dan nilai tertentu, log yang berisi bidang dan nilai tersebut dipertahankan.
fetch_exclude_data
String
Tidak
Daftar hitam bidang. Log yang bidangnya cocok dengan parameter fetch_exclude_data dibuang. Log yang bidangnya tidak cocok dengan parameter ini dipertahankan.
Jika Anda tidak mengonfigurasi parameter ini atau menetapkan parameter ini ke None, fitur daftar hitam bidang dinonaktifkan.
Jika Anda menetapkan parameter ini ke bidang dan nilai tertentu, log yang berisi bidang dan nilai tersebut dibuang.
CatatanJika Anda mengonfigurasi parameter daftar hitam dan daftar putih, log yang bidangnya cocok dengan parameter daftar hitam dibuang terlebih dahulu, kemudian log yang tersisa yang bidangnya cocok dengan parameter daftar putih dipertahankan.
primary_keys
Daftar string
Tidak
Daftar bidang kunci utama yang digunakan untuk memelihara tabel. Jika Anda mengubah nama bidang kunci utama menggunakan parameter fields, Anda harus menggunakan nama baru untuk menentukan bidang kunci utama untuk parameter ini.
CatatanNilai parameter primary_keys hanya dapat berisi string bernilai tunggal yang ditentukan dalam nilai parameter fields.
Parameter ini valid hanya jika ada satu shard dalam Logstore dari mana data ditarik.
Parameter primary_keys harus ditetapkan. Jika tidak, kinerja akan terpengaruh secara signifikan dan penundaan tugas mungkin terjadi.
Nilai parameter primary_keys bersifat peka huruf besar-kecil.
fetch_interval
Int
Tidak
Interval antara dua permintaan penarikan data berturut-turut saat data ditarik secara terus-menerus. Nilai default: 2. Satuan: detik. Nilai harus lebih besar dari atau sama dengan 1 detik.
delete_data
String
Tidak
Operasi untuk menghapus data dari tabel. Catatan data yang memenuhi kondisi tertentu dan berisi nilai
primary_keysdihapus. Untuk informasi lebih lanjut, lihat Sintaks string kueri.base_retry_back_off
Angka
Tidak
Interval sistem mencoba menarik data lagi setelah kegagalan penarikan. Nilai default: 1. Satuan: detik.
max_retry_back_off
Int
Tidak
Interval maksimum antara dua percobaan ulang berturut-turut setelah kegagalan penarikan. Nilai default: 60. Satuan: detik. Kami sarankan Anda menggunakan nilai default.
ttl
Int
Tidak
Jumlah detik yang digunakan untuk menentukan rentang penarikan data secara terus-menerus. Penarikan data dimulai saat data log dihasilkan dan berakhir ttl detik setelah waktu data log tersebut dihasilkan. Satuan: detik. Nilai default: None. Ini menunjukkan bahwa semua data log ditarik.
role_arn
String
Tidak
Nama ARN (Alibaba Cloud Resource Name) dari peran RAM yang digunakan. Peran RAM harus memiliki izin baca pada Logstore dari mana data ditarik. Di konsol RAM, Anda dapat melihat ARN peran RAM di bagian Basic Information pada halaman detail peran. Contoh:
acs:ram::1379******44:role/role-a. Untuk informasi lebih lanjut tentang cara mendapatkan ARN peran RAM, lihat Lihat informasi tentang peran RAM.Respon
Tabel yang berisi beberapa kolom dikembalikan.
Penanganan kesalahan
Jika terjadi kesalahan saat menarik data, kesalahan dilaporkan, tetapi pekerjaan transformasi data terus berjalan. Percobaan ulang dilakukan berdasarkan nilai parameter base_retry_back_off. Interval percobaan ulang pertama adalah 1 detik. Jika percobaan ulang pertama gagal, interval percobaan ulang kedua adalah dua kali panjang interval pertama. Proses ini berlanjut hingga interval mencapai nilai parameter max_retry_back_off. Jika kesalahan terus berlanjut, percobaan ulang dilakukan berdasarkan nilai parameter max_retry_back_off. Jika percobaan ulang berhasil, interval percobaan ulang diatur ulang ke nilai awal, yaitu 1 detik.
Contoh
Dalam contoh ini, data bidang key1 dan key2 ditarik dari Logstore test_logstore proyek test_project. Penarikan data dimulai saat data log ditulis ke Logstore dan berakhir saat operasi penulisan data selesai. Data hanya ditarik sekali.
res_log_logstore_pull( "cn-hangzhou.log.aliyuncs.com", "LT****Gw", "ab****uu", "test_project", "test_logstore", ["key1", "key2"], from_time="begin", to_time="end", )Dalam contoh ini, data bidang key1 dan key2 ditarik dari Logstore test_logstore proyek test_project. Penarikan data dimulai saat data log ditulis ke Logstore dan berakhir saat operasi penulisan data selesai. Data ditarik pada interval 30 detik secara terus-menerus.
res_log_logstore_pull( "cn-hangzhou.log.aliyuncs.com", "LT****Gw", "ab****uu", "test_project", "test_logstore", ["key1", "key2"], from_time="begin", to_time=None, fetch_interval=30, )Dalam contoh ini, daftar hitam dikonfigurasi untuk melewati catatan data yang berisi key1:value1 saat menarik data dari Logstore.
res_log_logstore_pull( "cn-hangzhou.log.aliyuncs.com", "LT****Gw", "ab****uu", "test_project", "test_logstore", ["key1", "key2"], from_time="begin", to_time=None, fetch_interval=30, fetch_exclude_data="key1:value1", )Dalam contoh ini, daftar putih dikonfigurasi untuk menarik catatan data yang berisi key1:value1 dari Logstore.
res_log_logstore_pull( "cn-hangzhou.log.aliyuncs.com", "LT****Gw", "ab****uu", "test_project", "test_logstore", ["key1", "key2"], from_time="begin", to_time=None, fetch_interval=30, fetch_include_data="key1:value1", )Dalam contoh ini, data bidang key1 dan key2 ditarik dari Logstore test_logstore proyek test_project. Penarikan data dimulai saat data log dihasilkan dan berakhir 40.000.000 detik setelah waktu data log tersebut dihasilkan.
res_log_logstore_pull( "cn-hangzhou.log.aliyuncs.com", "LTAI*****Cajvr", "qO0Tp*****jJ9", "test_project", "test_logstore", fields=["key1","key2"], ttl="40000000" )Dalam contoh ini, data bidang key1 dan key2 ditarik dari Logstore test-logstore proyek project-test1. Peran layanan terhubung dari Layanan Log digunakan untuk otorisasi. Penarikan data dimulai saat data log ditulis ke Logstore dan berakhir saat operasi penulisan data selesai. Data hanya ditarik sekali.
res_log_logstore_pull( "pub-cn-hangzhou-staging-intranet.log.aliyuncs.com", "", "", "project-test1", "test-logstore", ["key1", "key2"], from_time="2022-7-27 10:10:10 8:00", to_time="2022-7-27 14:30:10 8:00", role_arn="acs:ram::***:role/aliyunserviceroleforslsaudit", )Dalam contoh ini, data bidang key1 dan key2 ditarik dari Logstore test-logstore proyek project-test1. Peran default digunakan untuk otorisasi. Penarikan data dimulai saat data log ditulis ke Logstore dan berakhir saat operasi penulisan data selesai. Data hanya ditarik sekali.
res_log_logstore_pull( "cn-chengdu.log.aliyuncs.com", "", "", "project-test1", "test-logstore", ["key1", "key2"], from_time="2022-7-21 10:10:10 8:00", to_time="2022-7-21 10:30:10 8:00", role_arn="acs:ram::***:role/aliyunlogetlrole", )
Referensi
Fungsi ini dapat digunakan bersama dengan fungsi lainnya. Untuk informasi lebih lanjut, lihat Tarik data dari satu penyimpanan log untuk memperkaya data log di penyimpanan log lain.
res_oss_file
Fungsi res_oss_file menarik data dari objek dalam Bucket Object Storage Service (OSS) yang ditentukan. Data dapat diperbarui secara berkala.
Kami sarankan Anda menggunakan proyek Layanan Log yang berada di wilayah yang sama dengan Bucket OSS. Dengan cara ini, data objek dalam bucket dapat ditarik melalui jaringan internal Alibaba Cloud, yang stabil dan cepat.
Sintaksis
res_oss_file(endpoint, ak_id, ak_key, bucket, file, format='text', change_detect_interval=0, base_retry_back_off=1, max_retry_back_off=60, encoding='utf8', error='ignore')Parameter
Parameter
Tipe
Diperlukan
Deskripsi
endpoint
String
Ya
Endpoint dari Bucket OSS. Untuk informasi lebih lanjut, lihat Wilayah dan endpoint. Secara default, endpoint HTTPS digunakan. Anda juga dapat menggunakan endpoint HTTP. Dalam kasus khusus, Anda mungkin perlu menggunakan port selain port 80 atau 443.
ak_id
String
Ya
ID AccessKey akun Alibaba Cloud Anda. Untuk memastikan keamanan data, kami sarankan Anda mengonfigurasi parameter ini dalam Advanced Parameter Settings. Untuk informasi lebih lanjut tentang cara mengonfigurasi parameter lanjutan, lihat Buat pekerjaan transformasi data.
ak_key
String
Ya
Rahasia AccessKey akun Alibaba Cloud Anda. Untuk memastikan keamanan data, kami sarankan Anda mengonfigurasi parameter ini dalam Advanced Parameter Settings. Untuk informasi lebih lanjut tentang cara mengonfigurasi parameter lanjutan, lihat Buat pekerjaan transformasi data.
bucket
String
Ya
Nama Bucket OSS dari mana Anda ingin menarik data.
file
String
Ya
Jalur ke objek dari mana Anda ingin menarik data. Contoh: test/data.txt. Jangan masukkan garis miring (/) di awal jalur.
format
String
Ya
Format file keluaran. Nilai valid:
Teks: format teks
Biner: format aliran byte
change_detect_interval
String
Tidak
Interval Layanan Log menarik data objek dari OSS. Satuan: detik. Sistem memeriksa apakah objek diperbarui saat data ditarik. Jika objek diperbarui, data tambahan ditarik. Nilai default: 0. Ini menunjukkan bahwa tidak ada data tambahan yang ditarik. Semua data hanya ditarik sekali saat fungsi dipanggil.
base_retry_back_off
Angka
Tidak
Interval sistem mencoba menarik data lagi setelah kegagalan penarikan. Nilai default: 1. Satuan: detik.
max_retry_back_off
Int
Tidak
Interval maksimum antara dua percobaan ulang berturut-turut setelah kegagalan penarikan. Nilai default: 60. Satuan: detik. Kami sarankan Anda menggunakan nilai default.
encoding
String
Tidak
Format pengkodean. Jika Anda mengatur parameter format ke Teks, parameter ini secara otomatis diatur ke utf8.
error
String
Tidak
Metode yang digunakan untuk menangani kesalahan. Parameter ini valid hanya saat pesan UnicodeError dilaporkan. Nilai valid:
ignore: Sistem melewati data dengan format tidak valid dan melanjutkan pengkodean data.
xmlcharrefreplace: Sistem menggunakan referensi karakter XML yang sesuai untuk mengganti karakter yang tidak dapat dikodekan.
Untuk informasi lebih lanjut, lihat Penangan Kesalahan.
decompress
String
Tidak
Menentukan apakah objek harus didekompresi. Nilai valid:
None: Objek tidak didekompresi. Ini adalah nilai default.
gzip: Objek didekompresi menggunakan gzip.
Respon
Data objek dikembalikan dalam format aliran byte atau teks.
Penanganan kesalahan
Jika terjadi kesalahan saat menarik data, kesalahan dilaporkan, tetapi pekerjaan transformasi data terus berjalan. Percobaan ulang dilakukan berdasarkan nilai parameter base_retry_back_off. Interval percobaan ulang pertama adalah 1 detik. Jika percobaan ulang pertama gagal, interval percobaan ulang kedua adalah dua kali panjang interval pertama. Proses ini berlanjut hingga interval mencapai nilai parameter max_retry_back_off. Jika kesalahan terus berlanjut, percobaan ulang dilakukan berdasarkan nilai parameter max_retry_back_off. Jika percobaan ulang berhasil, interval percobaan ulang diatur ulang ke nilai awal, yaitu 1 detik.
Contoh
Contoh 1: Tarik data JSON dari OSS.
Data JSON
{ "users": [ { "name": "user1", "login_historys": [ { "date": "2019-10-10 0:0:0", "login_ip": "203.0.113.10" }, { "date": "2019-10-10 1:0:0", "login_ip": "203.0.113.10" } ] }, { "name": "user2", "login_historys": [ { "date": "2019-10-11 0:0:0", "login_ip": "203.0.113.20" }, { "date": "2019-10-11 1:0:0", "login_ip": "203.0.113.30" }, { "date": "2019-10-11 1:1:0", "login_ip": "203.0.113.50" } ] } ] }Log mentah
content: 123Aturan transformasi
e_set( "json_parse", json_parse( res_oss_file( endpoint="http://oss-cn-hangzhou.aliyuncs.com", ak_id="LT****Gw", ak_key="ab****uu", bucket="log-etl-staging", file="testjson.json", ) ), )Hasil
content: 123 prjson_parse: '{ "users": [ { "name": "user1", "login_historys": [ { "date": "2019-10-10 0:0:0", "login_ip": "203.0.113.10" }, { "date": "2019-10-10 1:0:0", "login_ip": "203.0.113.10" } ] }, { "name": "user2", "login_historys": [ { "date": "2019-10-11 0:0:0", "login_ip": "203.0.113.20" }, { "date": "2019-10-11 1:0:0", "login_ip": "203.0.113.30" }, { "date": "2019-10-11 1:1:0", "login_ip": "203.0.113.50" } ] } ] }'
Contoh 2: Tarik konten teks dari OSS.
Konten teks
Test bytesLog mentah
content:123Aturan transformasi
e_set( "test_txt", res_oss_file( endpoint="http://oss-cn-hangzhou.aliyuncs.com", ak_id="LT****Gw", ak_key="ab****uu", bucket="log-etl-staging", file="test.txt", ), )Hasil
content: 123 test_txt: Test bytes
Contoh 3: Tarik data dari objek OSS yang dikompresi dan dekompresi objek tersebut.
Konten objek terkompresi
Test bytes\nupdate\n123Log mentah
content:123Aturan transformasi
e_set( "text", res_oss_file( endpoint="http://oss-cn-hangzhou.aliyuncs.com", ak_id="LT****Gw", ak_key="ab****uu", bucket="log-etl-staging", file="test.txt.gz", format="binary", change_detect_interval=30, decompress="gzip", ), )Hasil
content:123 text: Test bytes\nupdate\n123
Contoh 4: Akses objek dalam Bucket OSS yang ACL-nya adalah public-read-write. Tidak ada pasangan AccessKey yang digunakan.
Konten objek terkompresi
Test bytesLog mentah
content:123Aturan transformasi
e_set( "test_txt", res_oss_file( endpoint="http://oss-cn-hangzhou.aliyuncs.com", bucket="log-etl-staging", file="test.txt", ), )Hasil
content: 123 test_txt: Test bytes
Referensi
Fungsi ini dapat digunakan bersama dengan fungsi lainnya. Untuk informasi lebih lanjut, lihat Tarik file CSV dari OSS untuk memperkaya data.