全部产品
Search
文档中心

IoT Platform:Fungsi

更新时间:Jul 02, 2025

Mesin aturan menyediakan berbagai fungsi yang dapat dipanggil dalam pernyataan SQL untuk memproses data.

Fungsi yang didukung oleh fitur penerusan data

Fungsi

Deskripsi

abs(number)

Mengembalikan nilai absolut dari angka tersebut.

asin(number)

Mengembalikan arcsinus dari angka tersebut.

attribute(key)

Mengembalikan nilai tag perangkat dari kunci tag. Jika tag dengan kunci yang ditentukan tidak dilampirkan pada perangkat, tidak ada nilai tag yang dikembalikan. Saat Anda men-debug pernyataan SQL Anda, string kosong dikembalikan karena tidak ada perangkat atau tag aktual yang ada.

concat(string1, string2)

Menggabungkan string. String gabungan dikembalikan.

Contoh: concat(field,'a').

cos(number)

Mengembalikan kosinus dari angka tersebut.

cosh(number)

Mengembalikan kosinus hiperbolik dari angka tersebut.

crypto(field,String)

Mengenkripsi nilai dari field.

Parameter String menentukan algoritma enkripsi. Algoritma berikut didukung: MD2, MD5, SHA1, SHA-256, SHA-384, dan SHA-512.

deviceName()

Mengembalikan nama perangkat saat ini. Saat Anda men-debug pernyataan SQL Anda, string kosong dikembalikan karena tidak ada perangkat aktual yang ada.

endswith(input, suffix)

Memeriksa apakah string input diakhiri dengan string yang ditentukan oleh parameter akhiran.

exp(number)

Mengembalikan nilai konstanta matematika e dipangkatkan ke angka tertentu.

floor(number)

Mengembalikan bilangan bulat terbesar yang kurang dari atau sama dengan angka tersebut.

log(n, m)

Mengembalikan logaritma dari angka n ke basis m.

Jika Anda tidak menentukan m, basis default 10 digunakan. Dalam hal ini, log(n) dikembalikan.

lower(string)

Mengubah semua huruf dalam string yang ditentukan menjadi huruf kecil dan mengembalikan string huruf kecil.

mod(n, m)

Mengembalikan sisa setelah angka n dibagi dengan pembagi m.

nanvl(value, default)

Mengembalikan nilai properti.

Parameter value menentukan nama properti. Jika nilai properti adalah null, fungsi mengembalikan nilai parameter default.

newuuid()

Mengembalikan pengenal unik universal (UUID) acak.

payload(textEncoding)

Mengembalikan muatan pesan yang dikirim oleh perangkat. Muatan dikodekan menggunakan skema pengkodean yang ditentukan oleh parameter textEncoding.

Skema pengkodean default adalah UTF-8. Ini menunjukkan bahwa fungsi payload() dan payload('utf-8') mengembalikan hasil yang sama.

power(n,m)

Mengembalikan angka n dipangkatkan ke m.

rand()

Mengembalikan angka acak yang lebih besar dari atau sama dengan 0 dan kurang dari 1.

replace(source, substring, replacement)

Mengganti substring di kolom sumber dengan string pengganti.

Contoh: replace(field,'a','1').

sin(n)

Mengembalikan sinus dari angka n.

sinh(n)

Mengembalikan sinus hiperbolik dari angka n.

tan(n)

Mengembalikan tangen dari angka n.

tanh(n)

Mengembalikan tangen hiperbolik dari angka n.

thingPropertyFlatMap(property)

Mengembalikan nilai properti dalam model Thing Specification Language (TSL). Jika properti memiliki beberapa nilai, pisahkan nilai-nilai tersebut dengan garis bawah (_). Jika model TSL berisi lebih dari 50 properti, fitur penerusan data tidak dapat meneruskan seluruh model TSL. Anda dapat memanggil fungsi ini untuk mengekstrak data properti dari model TSL. Dengan cara ini, semua properti dari model TSL dapat diteruskan ke layanan Alibaba Cloud lainnya.

Anda dapat menentukan beberapa properti untuk parameter properti fungsi. Jika Anda tidak menentukan properti, semua nilai properti diekstraksi.

Sebagai contoh, fungsi thingPropertyFlatMap('Power', 'Position') menambahkan "Power": "On", "Position_latitude": 39.9, "Position_longitude": 116.38 ke badan pesan.

timestamp(format)

Mengembalikan cap waktu sistem saat ini dalam GMT+8.

Parameter format bersifat opsional. Jika Anda tidak mengonfigurasi parameter format, cap waktu sistem saat ini dikembalikan. Sebagai contoh, fungsi timestamp() mengembalikan 1543373798943 dan fungsi timestamp('yyyy-MM-dd\'T\'HH:mm:ss\'Z\'') mengembalikan 2018-11-28T10:56:38Z.

timestamp_utc(format)

Mengembalikan cap waktu UTC sistem saat ini dalam format yang ditentukan.

Parameter format bersifat opsional. Jika Anda tidak mengonfigurasi parameter format, cap waktu sistem saat ini dengan 13 digit dikembalikan. Sebagai contoh, fungsi timestamp_utc() mengembalikan 1543373798943 dan fungsi timestamp_utc('yyyy-MM-dd\'T\'HH:mm:ss\'Z\'') mengembalikan 2018-11-28T02:56:38Z.

topic(number)

Mengembalikan informasi topik pada level tertentu.

Sebagai contoh, sebuah topik bernama /alDbcLe****/TestDevice/user/set. Fungsi topic() mengembalikan nama topik lengkap /alDbcLe****/TestDevice/user/set. Fungsi topic(1) mengembalikan level pertama alDbcLe****. Fungsi topic(2) mengembalikan level kedua TestDevice.

upper(string)

Mengubah semua huruf dalam string yang ditentukan menjadi huruf besar dan mengembalikan string huruf besar.

Sebagai contoh, fungsi upper(alibaba) mengembalikan ALIBABA.

to_base64(*)

Mengonversi muatan pesan dari data biner ke string yang dikodekan Base64, dan mengembalikan muatan pesan setelah konversi. Jika muatan pesan asli adalah tipe data biner, Anda dapat memanggil fungsi ini.

messageId()

Mengembalikan ID pesan yang dihasilkan oleh IoT Platform.

substring(target, start, end)

Mengembalikan sebagian dari string yang ditentukan.

Deskripsi parameter

  • target: string asli. Parameter ini wajib.

  • start: posisi dari mana karakter yang dikembalikan dimulai. Karakter pada posisi tersebut juga dikembalikan. Parameter ini wajib.

  • end: posisi di mana karakter yang dikembalikan berakhir. Karakter pada posisi tersebut tidak dikembalikan. Parameter ini opsional.

Catatan
  • Hanya data bertipe string dan integer yang didukung. Integer dikonversi ke string sebelum diproses.

  • Kurunglah string konstan dalam sepasang tanda kutip tunggal (''). Data yang diapit dalam tanda kutip ganda (") diuraikan sebagai integer.

  • Jika parameter input tidak valid, misalnya, tipe data tidak didukung, penguraian SQL gagal dan aturan tidak dipicu.

Contoh:

  • substring('012345', 0) = "012345"

  • substring('012345', 2) = "2345"

  • substring('012345', 2.745) = "2345"

  • substring(123, 2) = "3"

  • substring('012345', -1) = "012345"

  • substring(true, 1.2) error

  • substring('012345', 1, 3) = "12"

  • substring('012345', -50, 50) = "012345"

  • substring('012345', 3, 1) = ""

to_hex(*)

Mengonversi muatan pesan dari data biner ke string heksadesimal dan mengembalikan muatan pesan setelah konversi. Jika muatan pesan asli adalah tipe data biner, Anda dapat memanggil fungsi ini.

user_property()

Mendapatkan nilai parameter UserProperty ketika MQTT 5.0 digunakan oleh perangkat.

  • Fungsi user_property() dipanggil untuk mendapatkan semua data properti.

  • Fungsi user_property('${Key}') dipanggil untuk mendapatkan data kunci tertentu.

Sebagai contoh, nilai parameter UserProperty yang dilaporkan oleh perangkat adalah {"a": "1", "b": "2"}.

  • Fungsi user_property() mengembalikan "{\"a\": \"1\", \"b\": \"2\"}".

  • Fungsi user_property('a') mengembalikan "{\"a\": \"1\"}".

things_function_type()

Meminta tipe data TSL yang dilaporkan. Fungsi ini hanya berlaku untuk peristiwa TSL dan layanan TSL. Nilai pengembalian fungsi ini bervariasi berdasarkan tipe fitur TSL yang diminta.

  • Jika Anda meminta peristiwa, pengenal peristiwa dikembalikan.

  • Jika Anda meminta layanan, pengenal layanan dikembalikan.

Sebagai contoh, topik /SdfgeW***/device1/thing/event/BrokenInfo/post digunakan untuk meneruskan peristiwa BrokenInfo. Jika Anda memanggil fungsi things_function_type() untuk meminta peristiwa, pengenal peristiwa yang dilaporkan BrokenInfo dikembalikan.

things_property('${Nama Parameter}')

Meminta nilai properti, layanan, atau peristiwa TSL. Fungsi ini hanya berlaku untuk data TSL.

Sebagai contoh, topik /${productKey}/${deviceName}/thing/event/property/post digunakan untuk meneruskan properti CurrentTemperature. Fungsi things_property('CurrentTemperature') mengembalikan nilai yang dilaporkan dari properti CurrentTemperature.

Contoh

Anda dapat memanggil fungsi untuk mendapatkan atau memproses data di dalam klausa SELECT dan WHERE dari pernyataan SQL.

Sebagai contoh, produk sensor suhu memiliki properti bernama Temperature. Skrip berikut menunjukkan data properti TSL yang dikirimkan oleh perangkat.

{
    "deviceType": "Custom",
    "iotId": "H5KURkKdibnZvSls****000100",
    "productKey": "a1HHrkm****",
    "gmtCreate": 1564569974224,
    "deviceName": "TestDevice1",
    "items": {
        "Temperature": {
            "value": 23.5,
            "time": 1564569974229
        }
    }
}

Produk sensor suhu tersebut mencakup beberapa perangkat bernama TestDevice1, TestDevice2, dan TestDevice3. Properti suhu hanya diteruskan ke Function Compute untuk diproses jika nilai properti yang dikirimkan lebih besar dari 38. Gambar berikut menunjukkan pernyataan SQL dari aturan yang digunakan untuk memfilter data perangkat yang dikirimkan.

Write an SQL Statement

Pernyataan SQL:

SELECT deviceName() as deviceName,things_property('Temperature') as Temperature 
FROM "/g5or0***/+thing/event/property/post" 
WHERE things_property('Temperature')>38 and deviceName() in ('TestDevice1', 'TestDevice2', 'TestDevice3')

Dalam contoh ini, fungsi deviceName() dan things_property('Temperature') dipanggil.

  • Fungsi-fungsi tersebut dikonfigurasikan dalam klausa SELECT untuk memfilter data yang dikirimkan guna mendapatkan nama perangkat dan nilai parameter Temperature.

  • Fungsi-fungsi ini juga dikonfigurasikan dalam klausa WHERE untuk menentukan kondisi. Ekspresi >38 dan in ('TestDevice1', 'TestDevice2', 'TestDevice3') menunjukkan bahwa data properti hanya diteruskan jika suhu melebihi 38 derajat Celsius dan nama perangkat adalah TestDevice1, TestDevice2, atau TestDevice3.

Untuk informasi lebih lanjut tentang cara menulis klausa SELECT dan WHERE dalam pernyataan SQL serta ekspresi kondisional yang didukung oleh mesin aturan, lihat Pernyataan SQL.