Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Klausul SET
Gunakan klausa SET untuk menentukan variabel yang menyimpan hasil ekspresi. Anda dapat menggunakan kembali variabel-variabel ini dalam klausa SELECT dan WHERE, dan dalam template substitusi. Ini membantu Anda menghindari duplikasi ekspresi kompleks dan mengurangi jumlah panggilan fungsi dalam pernyataan SQL Anda.
Klausa SET mendukungJenis Data,Operator,,Fungsi, LiteralPernyataan kasus, Variabel Ekstensi JSON, danKueri objek bersarang.
SET sintaks klausa
Klausa SET harus muncul sebelum klausa SELECT dalam pernyataan SQL Anda. Gunakan sintaks berikut:
SET @variable_name = expression [, @variable_name2 = expression2]
Aturan sintaks:
Mulai nama variabel dengan
@Nama variabel dapat berisi huruf, angka, dan garis bawah
Nama variabel bisa mencapai 64 karakter
Beberapa variabel dapat diatur dalam satu klausa SET, dipisahkan dengan koma
Setiap variabel hanya dapat ditetapkan sekali (variabel tidak dapat diubah)
Kata kunci SET hanya dapat digunakan sekali per pernyataan SQL
Menggunakan variabel
Setelah Anda menentukan variabel, Anda dapat menggunakannya di:
Klausul SELECT
Klausul WHERE
Penugasan variabel SET lainnya
Templat substitusi tindakan
Templat substitusi tindakan kesalahan
Kueri SELECT bersarang
Parameter fungsi (parameter tertentu seperti parameter RoLearn dan parameter yang mengubah mode fungsi yang mirip dengan
transform("enrichArray", attributes, values)tidak mendukung variabel)
Variabel direferensikan menggunakan @variable_name sintaks yang sama yang digunakan dalam klausa SET. Anda juga dapat menggunakan sintaks ekstensi JSON untuk mengakses properti variabel yang berisi objek, seperti. @variable_name.property
Contoh klausa SET
Penggunaan variabel dasar
Contoh berikut menunjukkan payload yang dipublikasikan pada topikdevice/data: {"temp_fahrenheit": 75, "humidity": 60}
Pernyataan SQL:
SET @temp_celsius = (temp_fahrenheit - 32) * 5 / 9 SELECT @temp_celsius AS celsius, humidity FROM 'device/data'
Muatan keluar: {"celsius": 23.89, "humidity": 60}
Akses anggota dalam objek JSON yang disematkan
Contoh berikut menunjukkan payload yang dipublikasikan pada topikdevice/data: {"device1": {"deviceId":"weather_sensor", "deviceData": {"sensors": {"temp_fahrenheit": 75, "humidity": 60}, "location": [47.606,-122.332]}}}
Pernyataan SQL:
SET @device_sensor_data = device1.deviceData.sensors SELECT @device_sensor_data.temp_fahrenheit AS temp_fahrenheit, @device_sensor_data.humidity as humidity, device1.deviceId as deviceId FROM 'device/data'
Muatan keluar: {"temp_fahrenheit":75,"humidity":60,"deviceId":"weather_sensor"}
untuk informasi lebih lanjut tentang cara bekerja dengan ekstensi JSON, referensi Ekstensi JSON
Menghindari panggilan fungsi duplikat
Variabel SET membantu menghindari duplikasi operasi decode yang kompleks:
SET @decoded_data = decode(encode(*, 'base64'), 'proto', 'schema', 'schema.desc', 'message.proto', 'Message') SELECT @decoded_data.sensor_id, @decoded_data.reading FROM 'device/protobuf' WHERE @decoded_data.reading > 100
Tanpa variabel SET, Anda perlu mengulang fungsi decode tiga kali, yang melebihi batas panggilan fungsi.
Beberapa variabel
Anda dapat menentukan beberapa variabel dalam satu klausa SET dengan memisahkannya dengan koma:
SET @user_data = get_user_properties(device_id), @threshold = 50 SELECT @user_data.name, temp_fahrenheit FROM 'sensors/+' WHERE temp_fahrenheit > @threshold AND @user_data.active = true
Menggunakan variabel dalam template substitusi
Variabel juga dapat digunakan dalam template substitusi tindakan, memungkinkan Anda untuk menggunakan kembali nilai yang dihitung di kedua pernyataan SQL dan tindakan aturan.
Pernyataan SQL:
SET @temp_celsius = (temp_fahrenheit - 32) * 5 / 9 SELECT @temp_celsius AS celsius, humidity FROM 'device/data'
Konfigurasi tindakan:
{ "s3": { "roleArn": "arn:aws:iam::123456789012:role/testRuleRole", "bucketName": "bucket", "key": "temperature-data/${device_id}/temp-${@temp_celsius}C.json" } }
Dalam contoh ini, variabel SET @temp_celsius digunakan dalam template substitusi untuk membangun bidang kunci dari tindakan S3.
Penggunaan muatan non-JSON
Variabel SET tidak mendukung muatan non-JSON secara langsung, jadi payload harus dikodekan atau didekodekan terlebih dahulu:
SET @encoded_payload = encode(*, 'base64') SELECT @encoded_payload AS raw_data FROM 'device/binary'
untuk informasi lebih lanjut tentang cara bekerja dengan muatan non-JSON, referensi Bekerja dengan muatan biner
Batas klausa SET
Batasan berikut berlaku untuk variabel SET:
Maksimum 10 variabel unik per pernyataan SQL
Ukuran nilai variabel maksimum 128 KiB (diperkecil UTF-8 JSON string)
Ukuran nilai total maksimum 128 KiB untuk semua variabel
Nama variabel terbatas pada 64 karakter
Variabel dapat menerima muatan JSON secara langsung apa adanya (muatan non-JSON harus terlebih dahulu dikodekan/diterjemahkan)