1. Skenario penggunaan
Data mentah formulir terkadang perlu diproses dengan logika kustom sebelum dapat ditampilkan. Contohnya:- Data formulir dikirim oleh masing-masing karyawan, tetapi laporan perlu menampilkan jumlah karyawan yang mengirim formulir setiap hari. Gunakan fungsi COUNT() untuk menghitung hasilnya sebelum ditampilkan.
- Tambahkan bidang kustom ke formulir dan tautkan ke hyperlink untuk navigasi halaman. Skenario ini juga didukung oleh bidang formula kustom.
- Logika
- Pemrosesan string
- Agregat
- Array
3. Tempat mengatur formula
Jalur: Buat laporan >> Halaman desain laporan >> Pilih dataset >> Pilih bidang kolom tampilan >> FX >> Konfigurasikan formula Tonton video berikut untuk melihat cara mengonfigurasikannya:4. Logika
CASEWHEN
Penggunaan 1: CASEWHEN(<kondisi>,<nilai>,<kondisi>,<nilai>…), setara dengan sintaks CASE WHEN di SQL. Contoh: CASEWHEN(<Bidang jenis kelamin>=“Pria”,“laki-laki”,<Bidang jenis kelamin>=“Wanita”,“perempuan”). Nilai “Pria” diganti dengan “laki-laki”, dan nilai “Wanita” diganti dengan “perempuan”. Penggunaan 2: CASEWHEN(<kondisi>,<nilai>,<kondisi>,<nilai>…<nilai>), setara dengan sintaks CASE WHEN di SQL. Contoh: CASEWHEN(<Bidang jenis kelamin>=“Pria”,“laki-laki”,“perempuan”). Nilai “Pria” diganti dengan “laki-laki”, dan nilai lainnya diganti dengan “perempuan”.5. Pemrosesan string
LEN
Penggunaan: LEN([Bidang string]). Mengembalikan panjang string. Contoh: LEN(“test”) mengembalikan 4. LEN(“测试”) mengembalikan 2, karena setiap karakter Tionghoa dihitung sebagai satu karakter, sama seperti karakter Latin.LEFT
Penggunaan: LEFT(<Bidang ukuran>,< n >). Mengembalikan string sepanjang n karakter dihitung dari kiri nilai <bidang>. Contoh: LEFT(Bidang1,3). Jika Bidang1 adalah “ABCDEF”, nilai kembaliannya adalah “ABC”.RIGHT
Penggunaan: RIGHT(<Bidang ukuran>,< n >). Mengembalikan string sepanjang n karakter dihitung dari kanan nilai <bidang>. Contoh: RIGHT(Bidang1,3) mengembalikan “DEF” jika Bidang1 adalah “ABCDEF”.MID
Penggunaan: MID(<Bidang ukuran>, < awal >, < n >). Mengembalikan string sepanjang n karakter yang dimulai dari posisi ke-awal di nilai <bidang>. Contoh: MID(Bidang1, 3, 3) mengembalikan “CDE” jika Bidang1 adalah “ABCDEF”.POS
Penggunaan: POS(<Bidang ukuran>,<Substring>). Mengembalikan posisi <substring> dalam <teks>. Jika tidak ditemukan, mengembalikan 0. Contoh: POS(Bidang1,“DE”) mengembalikan 4 jika Bidang1 adalah “ABCDEF”.UPPER
Penggunaan: UPPER(<Bidang ukuran>). Mengonversi nilai <bidang> menjadi huruf besar. Contoh: UPPER(Bidang1) mengembalikan “ABCDEF” jika Bidang1 adalah “AbcdeF”.LOWER
Penggunaan: LOWER(<Bidang ukuran>). Mengonversi nilai <bidang> menjadi huruf kecil. Contoh: LOWER(Bidang1) mengembalikan “abcdef” jika Bidang1 adalah “AbcdeF”.VAL
Penggunaan: VAL(<Bidang ukuran>). Mengonversi nilai <bidang> dari teks menjadi tipe Numerik. Contoh: VAL(Bidang1) mengembalikan 123 jika Bidang1 adalah “123”.LEFTTRIM
Penggunaan: LEFTTRIM(<Bidang ukuran>). Menghapus spasi di awal nilai <bidang>. Contoh: LEFTTRIM(Bidang1) mengembalikan “ABC” jika Bidang1 adalah ” ABC”.RIGHTTRIM
Penggunaan: RIGHTTRIM(<Bidang ukuran>). Menghapus spasi di akhir nilai <bidang>. Contoh: RIGTTRIM(Bidang1) mengembalikan “ABC” jika Bidang1 adalah “ABC ”.NUMBERTOSTRING
Penggunaan: NUMBERTOSTRING(<Numerik>). Mengonversi data Numerik menjadi string. Contoh: NUMBERTOSTRING(Bidang1) mengembalikan “12345” jika Bidang1 adalah “12345 ”.SPLITPART
Penggunaan: SPLITPART(<Bidang string>, pembatas, posisi substring). Memisahkan string berdasarkan “pembatas” menjadi N substring (N sama dengan jumlah pembatas ditambah 1). Posisi substring dihitung mulai dari 1 (kiri ke kanan) atau dari -1 (kanan ke kiri). Contoh: SPLITPART(<Bidang1>,A,2) mengembalikan “BCD” jika Bidang1 adalah “ABCDABHABC”. Mengatur posisi substring ke -5 juga mengembalikan “BCD”.CONCAT
Penggunaan: CONCAT(<bidang>,<bidang>,…). Menggabungkan beberapa bidang menjadi satu string. Parameter input harus berupa bidang bertipe string. Contoh: CONCAT(<Bidang1>,<Bidang2>) mengembalikan “ABCD” jika Bidang1 adalah “A” dan Bidang2 adalah “BCD”.REPLACE
Penggunaan: REPLACE([string], [string pencarian], [string pengganti]). Mengembalikan string yang telah diganti. Contoh: REPLACE([Bidang1], [Bidang2], [Bidang3]) mengembalikan “a12345efg” jika Bidang1 adalah “abcdefg”, Bidang2 adalah “bcd”, dan Bidang3 adalah “12345”.STRINGTONUMBER
Formula pemrosesan stringSTRINGTONUMBER() mengonversi angka bertipe teks menjadi tipe Numerik.
Formula ini saat ini hanya didukung di halaman laporan. Gunakan sebagai berikut:
6. Agregat
Untuk menunjukkan cara kerja bidang agregat, bagian berikut menggunakan dua dataset contoh. Asumsikan dua dataset berikut, “Dataset contoh 1” dan “Dataset contoh 2”, dikumpulkan melalui beberapa formulir. Dataset contoh 1 Dataset
Spreadsheet
Dataset contoh 2
Dataset
Spreadsheet
SUM
Penggunaan: SUM(<Bidang ukuran>,[kondisi],[bidang yang dikecualikan]). Mengembalikan jumlah nilai <bidang> yang cocok dengan [kondisi]. [Bidang yang dikecualikan] tidak ikut serta dalam perhitungan silang penjumlahan. Contoh: Menggunakan Dataset contoh 1 Pengeluaran team building departemen = SUM(Pengeluaran, Tipe anggaran=“Team building”): Hasil Spreadsheet
Pengeluaran team building BU = SUM(Pengeluaran, Tipe anggaran=“Team building”, Departemen):
Hasil Spreadsheet
AVG
Penggunaan: AVG(<Bidang ukuran>,[kondisi],[bidang yang dikecualikan]) Deskripsi: Mengembalikan rata-rata nilai <bidang> yang cocok dengan [kondisi]. [Bidang yang dikecualikan] tidak ikut serta dalam perhitungan silang penjumlahan. Contoh: Menggunakan Dataset contoh 1- Hitung rata-rata pengeluaran team building per BU
- Hitung rata-rata pengeluaran team building keseluruhan
MAX
Penggunaan: MAX(<Bidang ukuran>,[kondisi],[bidang yang dikecualikan]). Mengembalikan nilai maksimum <bidang> berdasarkan [kondisi]. [Bidang yang dikecualikan] tidak ikut serta dalam perhitungan silang penjumlahan. Contoh: Menggunakan Dataset contoh 1 Pengeluaran team building maksimum departemen = MAX(Pengeluaran, Tipe anggaran=‘Team building’): Hasil Spreadsheet
Pengeluaran team building maksimum BU = MAX(Pengeluaran, Tipe anggaran=“Team building”, Departemen):
Hasil Spreadsheet
MIN
Penggunaan: MIN(<Bidang ukuran>,[kondisi],[bidang yang dikecualikan]). Mengembalikan nilai minimum <bidang> berdasarkan [kondisi]. [Bidang yang dikecualikan] tidak ikut serta dalam perhitungan silang penjumlahan. Contoh: Menggunakan Dataset contoh 1 Pengeluaran team building minimum departemen = MIN(Pengeluaran, Tipe anggaran=“Team building”): Hasil Spreadsheet
Pengeluaran team building minimum BU = MIN(Pengeluaran, Tipe anggaran=“Team building”, Departemen):
Hasil Spreadsheet
COUNTDISTINCT
Penggunaan: COUNTDISTINCT(<Bidang ukuran>,[kondisi],[bidang yang dikecualikan]). Mengembalikan jumlah nilai unik <bidang> berdasarkan [kondisi]. [Bidang yang dikecualikan] tidak ikut serta dalam perhitungan silang penjumlahan. Contoh: Menggunakan Dataset contoh 2 Jumlah departemen BU = COUNTDISTINCT(Departemen, Pengeluaran>0, Tipe anggaran) Hasil SpreadsheetCOUNT
Penggunaan: COUNT(<Bidang ukuran>,[kondisi],[bidang yang dikecualikan]). Mengembalikan jumlah nilai <bidang> berdasarkan [kondisi]. [Bidang yang dikecualikan] tidak ikut serta dalam perhitungan silang penjumlahan. Contoh: Menggunakan Dataset contoh 2 Catatan anggaran departemen = COUNT(Departemen, Pengeluaran>0, Tipe anggaran) Hasil Spreadsheet7. Tanggal dan waktu
NOW
Penggunaan: NOW(). Mengembalikan waktu saat ini, akurat hingga detik. Contoh: Dihilangkan.STRINGTODATE
Penggunaan: STRINGTODATE(<bidang>,<format>). Mengonversi string menjadi nilai tanggal/waktu. Contoh: STRINGTODATE(“1989-09-27”,“yyyy-MM”) mengembalikan “198909”. Format untuk kedua fungsi di atas mengikuti konvensi format Java. Tipe format yang didukung: yyyy: Tahun MM: Bulan dd: Hari hh: Format 12 jam (1–12) HH: Format 24 jam (0–23) mm: Menit ss: DetikDATEADD
Penggunaan:DATEADD(<Bidang tanggal>,<offset>,<granularitas waktu>). Menambahkan <offset> dengan <granularitas waktu> yang ditentukan ke <bidang tanggal>.
- Nilai granularitas waktu:
- Offset adalah angka yang akan ditambahkan atau dikurangkan. Nilai positif menambah; nilai negatif mengurangi.
DATEADD(Komponen tanggal,10,"DAY") = 20200911.
Contoh 2:
Jika nilai komponen tanggal di formulir adalah “20200901”, maka DATEADD(Komponen tanggal,-1,"DAY") = 20200831.
Format tampilan tanggal default adalah
yyyyMMdd. Untuk mengubah format tampilan tanggal, lihat contoh pada Fungsi DATEFORMAT.DATEDIFF
Penggunaan: DATEDIFF(<Bidang waktu 1>,<Bidang waktu 2>,<granularitas waktu>). Mengembalikan selisih antara bidang waktu 1 dan bidang waktu 2 pada granularitas waktu yang ditentukan. Opsi granularitas waktu:- YEAR Tahun
- MONTH Bulan
- DAY Hari
- HOUR Jam
- MINUTE Menit
- SECOND Detik
DATEFORMAT
Penggunaan: DATEFORMAT(<Bidang tanggal>,<format waktu>). Memformat tanggal menjadi string. Format untuk kedua fungsi di atas mengikuti konvensi format Java. Tipe format yang didukung:- yyyy: Tahun
- MM: Bulan
- dd: Hari
- hh: Format 12 jam (1–12)
- HH: Format 24 jam (0–23)
- mm: Menit
- ss: Detik
FROMUNIXTIME
Penggunaan: Mengonversi nilai waktu Unix numerik menjadi nilai tanggal. Deklarasi fungsi:- unixtime: Tipe bigint, dalam detik, berupa nilai tanggal/waktu berformat Unix. Jika input bertipe string, double, atau decimal, input dikonversi secara implisit menjadi bigint sebelum perhitungan.
- Nilai kembalian: Nilai tanggal bertipe Datetime. Mengembalikan NULL jika unixtime bernilai NULL.
WEEK
Penggunaan: WEEK([tanggal], [hari awal (opsional)]). Menghitung minggu ke berapa dalam setahun tanggal tersebut berada. Jika hari awal tidak ditentukan, default-nya adalah Senin. Nilai 1–7 masing-masing menunjukkan Senin hingga Minggu sebagai hari pertama minggu. Contoh: WEEK([Tanggal],) mengembalikan “20202” jika nilai bidangnya adalah “2020-01-08”. Hari awal bersifat opsional dan default-nya kosong.QUARTER
Penggunaan: QUARTER([tanggal], [tahun fiskal (opsional)]). Menghitung kuartal ke berapa dalam setahun tanggal tersebut berada. Tahun fiskal: 1 menggunakan statistik tahun fiskal (dimulai bulan April); 0 menggunakan tahun kalender. Contoh: QUARTER([Bidang1], 0) mengembalikan “1” jika Bidang1 adalah “2020-02-02”.8. Array
ArrayToString
Penggunaan: ArrayToString(<Bidang array>,[pembatas (opsional)]). Mengonversi array menjadi string. Contoh: ArrayToString(<Bidang1>,<Bidang2>) mengembalikan “Produk-Teknik-Bisnis” jika Bidang1 adalah “[Produk, Teknik, Bisnis]” dan Bidang2 adalah ”-”. Jika Bidang2 kosong, hasilnya “Produk,Teknik,Bisnis”. Hasilnya ditampilkan di bawah:StringToArray
Penggunaan: StringToArray(<string>,[pembatas (opsional)]). Mengurai string menjadi array. Contoh: StringToArray(<Bidang1>,<Bidang2>) mengembalikan “[Produk, Teknik, Bisnis]” jika Bidang1 adalah “Produk-Teknik-Bisnis” dan Bidang2 adalah ”-”.ArrayLength
Penggunaan: ArrayLength(<Bidang array>). Mengembalikan panjang array. Contoh: ArrayLength(<Pilih Banyak atau bidang array lainnya>) mengembalikan “3” jika bidangnya adalah “Departemen” dengan opsi “Produk, Teknik, Bisnis”.ArrayCat
Penggunaan: ArrayCat(<Bidang array 1>,<Bidang array 2>,…). Mengembalikan hasil penggabungan beberapa array. Contoh: ArrayCat(<Pilih Banyak atau bidang array lainnya 1>,<Pilih Banyak atau bidang array lainnya 2>,…) mengembalikan “Produk, Teknik, Bisnis, Staf Produk, Staf Teknik, Staf Bisnis” jika Bidang1 adalah “Produk, Teknik, Bisnis” dan Bidang2 adalah “Staf Produk, Staf Teknik, Staf Bisnis”.9. Statistik
ROUND
Penggunaan: ROUND(<bidang>,<presisi>). Membulatkan bidang ke jumlah tempat desimal yang ditentukan. Contoh: ROUND(<Bidang1>,<presisi>). Jika Bidang1 adalah “12,33333” dan presisinya 2, nilai kembaliannya adalah “12,33”.MOD
Penggunaan: MOD(<bidang>,<bidang>). Operasi modulo (sisa bagi). Catatan: Untuk mendapatkan hasil bagi, gunakan operator aritmetika /. Contohnya, 6/4 menghasilkan hasil bagi 1 dengan sisa 2. Contoh: MOD(<Bidang1>,<Bidang2>). Jika Bidang1 adalah “6” dan Bidang2 adalah “4”, nilai kembaliannya adalah “2”.ParseDouble
Penggunaan: ParseDouble(<bidang>). Mengonversi string atau integer menjadi bilangan floating-point. Contoh: ParseDouble(<bidang>). Jika nilai bidangnya 3 atau “3”, hasilnya adalah 3,0.ParseInt
Penggunaan: ParseInt(<bidang>). Mengonversi string atau bilangan floating-point menjadi integer. Contoh: ParseInt(<bidang>). Jika nilai bidangnya 3,2 atau “3,2”, hasilnya adalah 3.10. FAQ
Bagaimana cara menggunakan COUNT() di laporan?
COUNT adalah fungsi untuk penghitungan. Tonton video di bawah untuk penjelasan lengkap.Mengapa laporan menampilkan error “Formula parsing error. Details: AST syntax error: Unsupported database type encountered during SQL translation: 11”?
Bidang formula laporan hanya dapat menggunakan sejumlah fungsi yang didukung. Menggunakan fungsi yang tidak didukung akan memicu error. Lihat tangkapan layar error berikut:Fungsi CASEWHEN tidak berfungsi saat memeriksa apakah komponen kosong.
Saat memeriksa data kosong di formula, hanya sintaksData IS NULL yang didukung. Sintaks Data="" tidak didukung.