Skip to main content

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.
Untuk memenuhi kebutuhan tersebut, pelajari terlebih dahulu formula yang disediakan YiDA untuk laporan. Formula tersebut terbagi dalam kategori berikut:
  • 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”. 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 string STRINGTONUMBER() 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”):
Fungsi agregat laporan saat ini tidak mendukung operasi logika.
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
Fungsi agregat laporan saat ini tidak mendukung operasi logika.
Perhitungan hanya berlaku pada catatan dengan tipe anggaran “Team building”. Pilih bidang Pengeluaran sebagai <bidang ukuran> dan atur Tipe anggaran=“Team building” sebagai [kondisi]. Karena setiap BU memiliki beberapa departemen dan perhitungan harus mengabaikan departemen, tambahkan bidang Departemen sebagai [bidang yang dikecualikan]. Formula: Rata-rata pengeluaran team building BU = AVG(Pengeluaran, Tipe anggaran=“Team building”, Departemen): Hasil Spreadsheet:
  • Hitung rata-rata pengeluaran team building keseluruhan
Terapkan perhitungan hanya pada catatan dengan tipe anggaran “Team building”. Pilih bidang Pengeluaran sebagai <bidang ukuran> dan atur Tipe anggaran=“Team building” sebagai [kondisi]. Karena perhitungan mencakup semua departemen tanpa memandang BU atau departemen, tambahkan bidang Departemen dan bidang BU sebagai [bidang yang dikecualikan]. Formula: Rata-rata pengeluaran team building keseluruhan = AVG(Pengeluaran, Tipe anggaran=‘Team building’, Departemen, BU): Hasil Spreadsheet:

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’):
Fungsi agregat laporan saat ini tidak mendukung operasi logika.
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”):
Fungsi agregat laporan saat ini tidak mendukung operasi logika.
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)
Fungsi agregat laporan saat ini tidak mendukung operasi logika.
Hasil Spreadsheet

COUNT

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)
Fungsi agregat laporan saat ini tidak mendukung operasi logika.
Hasil Spreadsheet

7. 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: Detik

DATEADD

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.
Contoh 1: Jika nilai komponen tanggal di formulir adalah “20200901”, maka 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
Contoh: DATEDIFF(Komponen tanggal 1, Komponen tanggal 2, “DAY”). Mengembalikan jumlah hari antara kedua komponen tanggal tersebut. Catatan: Parameter hanya mendukung komponen tanggal. Nilai tanggal tetap tidak dapat dimasukkan langsung ke dalam formula. Jika nilai tanggal pada komponen tanggal di formulir adalah “2020-02-14” dan hari ini adalah “2020-02-16”, maka: DATEDIFF(NOW(), Tanggal pengiriman, “DAY”) = 2 DATEDIFF(Tanggal pengiriman, NOW(), “DAY”) = -2

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
Contoh 1: DATEFORMAT(<Bidang tanggal>,“yyyy-MM-dd”). Jika nilai bidang tanggal adalah 4 Agustus 1989, nilai kembaliannya adalah 1989-08-04. Pemisah ”-” juga dapat diganti dengan ”/” atau karakter lain. Contoh 2: DATEFORMAT(<Bidang tanggal>,“yyyy-MM-dd HH:mm:ss”). Jika nilai bidang tanggal adalah 1 September 2020 pukul 13.30, nilai kembaliannya adalah 2020-09-01 13:30:00. Pemisah ”-” dan ”:” juga dapat diganti dengan ”/”, “年”, “月”, “日”, atau karakter lain.

FROMUNIXTIME

Penggunaan: Mengonversi nilai waktu Unix numerik menjadi nilai tanggal. Deklarasi fungsi:
Deskripsi parameter:
  • 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.
Contoh:

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 sintaks Data IS NULL yang didukung. Sintaks Data="" tidak didukung.