> ## Documentation Index
> Fetch the complete documentation index at: https://help.dingtalk.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Formula laporan

> Pelajari cara menggunakan formula kustom di laporan YiDA — fungsi logika, string, agregat, dan array beserta contoh untuk mengolah data formulir.

## 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".

### 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 string `STRINGTONUMBER()` mengonversi angka bertipe teks menjadi tipe Numerik.

Formula ini saat ini hanya didukung di halaman laporan. Gunakan sebagai berikut:

```javascript theme={"theme":{"light":"github-light","dark":"github-dark"}}
// Bidang harus berupa angka bertipe teks.
STRINGTONUMBER(<Field>)
```

## 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

| BU     | Departemen | Tipe anggaran | Pengeluaran |
| ------ | ---------- | ------------- | ----------- |
| xxpt   | Kolaborasi | Team building | 500         |
| xxpt   | Kolaborasi | Pelatihan     | 200         |
| xxpt   | IT         | Team building | 700         |
| xxpt   | IT         | Pelatihan     | 150         |
| aliyun | Feitian 1  | Team building | 200         |
| aliyun | Feitian 1  | Pelatihan     | 100         |

Spreadsheet

| BU     | Departemen | Total pengeluaran departemen |
| ------ | ---------- | ---------------------------- |
| xxpt   | Kolaborasi | 700                          |
| xxpt   | IT         | 850                          |
| aliyun | Feitian 1  | 300                          |

**Dataset contoh 2**

Dataset

| BU     | Departemen | Tipe anggaran | Pengeluaran |
| ------ | ---------- | ------------- | ----------- |
| xxpt   | Kolaborasi | Team building | 500         |
| xxpt   | Kolaborasi | Pelatihan     | 200         |
| xxpt   | Kolaborasi | Team building | 500         |
| xxpt   | Kolaborasi | Pelatihan     | 200         |
| xxpt   | IT         | Team building | 700         |
| xxpt   | IT         | Pelatihan     | 150         |
| xxpt   | eHR        | Pelatihan     | 0           |
| xxpt   | eHR        | Team building | 0           |
| aliyun | Feitian 1  | Team building | 200         |
| aliyun | Feitian 1  | Pelatihan     | 100         |

Spreadsheet

| BU     | Departemen | Tipe anggaran |
| ------ | ---------- | ------------- |
| xxpt   | Kolaborasi | Team building |
| xxpt   | Kolaborasi | Pelatihan     |
| xxpt   | IT         | Team building |
| xxpt   | IT         | Pelatihan     |
| xxpt   | eHR        | Pelatihan     |
| xxpt   | eHR        | Team building |
| aliyun | Feitian 1  | Team building |
| aliyun | Feitian 1  | Pelatihan     |

### 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"):

<Warning>
  Fungsi agregat laporan saat ini tidak mendukung operasi logika.
</Warning>

Hasil Spreadsheet

| BU     | Departemen | Total pengeluaran departemen | Pengeluaran team building departemen |
| ------ | ---------- | ---------------------------- | ------------------------------------ |
| xxpt   | Kolaborasi | 700                          | 500                                  |
| xxpt   | IT         | 850                          | 700                                  |
| aliyun | Feitian 1  | 300                          | 200                                  |

Pengeluaran team building BU = SUM(Pengeluaran, Tipe anggaran="Team building", Departemen):

Hasil Spreadsheet

| BU     | Departemen | Total pengeluaran departemen | Pengeluaran team building departemen | Pengeluaran team building BU |
| ------ | ---------- | ---------------------------- | ------------------------------------ | ---------------------------- |
| xxpt   | Kolaborasi | 700                          | 500                                  | 1200                         |
| xxpt   | IT         | 850                          | 700                                  | 1200                         |
| aliyun | Feitian 1  | 300                          | 200                                  | 200                          |

### 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

<Warning>
  Fungsi agregat laporan saat ini tidak mendukung operasi logika.
</Warning>

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:**

| BU     | Departemen | Total pengeluaran departemen | Rata-rata pengeluaran team building departemen |
| ------ | ---------- | ---------------------------- | ---------------------------------------------- |
| xxpt   | Kolaborasi | 700                          | 600                                            |
| xxpt   | IT         | 850                          | 600                                            |
| aliyun | Feitian 1  | 300                          | 200                                            |

* 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:**

| BU     | Departemen | Total pengeluaran departemen | Rata-rata pengeluaran team building departemen | Rata-rata pengeluaran team building keseluruhan |
| ------ | ---------- | ---------------------------- | ---------------------------------------------- | ----------------------------------------------- |
| xxpt   | Kolaborasi | 700                          | 600                                            | 466,67                                          |
| xxpt   | IT         | 850                          | 600                                            | 466,67                                          |
| aliyun | Feitian 1  | 300                          | 200                                            | 466,67                                          |

### 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'):

<Warning>
  Fungsi agregat laporan saat ini tidak mendukung operasi logika.
</Warning>

Hasil Spreadsheet

| BU     | Departemen | Total pengeluaran departemen | Pengeluaran team building maksimum departemen |
| ------ | ---------- | ---------------------------- | --------------------------------------------- |
| xxpt   | Kolaborasi | 700                          | 500                                           |
| xxpt   | IT         | 850                          | 700                                           |
| aliyun | Feitian 1  | 300                          | 200                                           |

Pengeluaran team building maksimum BU = MAX(Pengeluaran, Tipe anggaran="Team building", Departemen):

Hasil Spreadsheet

| BU     | Departemen | Total pengeluaran departemen | Rata-rata pengeluaran team building departemen | Pengeluaran team building maksimum BU |
| ------ | ---------- | ---------------------------- | ---------------------------------------------- | ------------------------------------- |
| xxpt   | Kolaborasi | 700                          | 600                                            | 700                                   |
| xxpt   | IT         | 850                          | 600                                            | 700                                   |
| aliyun | Feitian 1  | 300                          | 200                                            | 200                                   |

### 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"):

<Warning>
  Fungsi agregat laporan saat ini tidak mendukung operasi logika.
</Warning>

Hasil Spreadsheet

| BU     | Departemen | Total pengeluaran departemen | Pengeluaran team building minimum departemen |
| ------ | ---------- | ---------------------------- | -------------------------------------------- |
| xxpt   | Kolaborasi | 700                          | 500                                          |
| xxpt   | IT         | 850                          | 700                                          |
| aliyun | Feitian 1  | 300                          | 200                                          |

Pengeluaran team building minimum BU = MIN(Pengeluaran, Tipe anggaran="Team building", Departemen):

Hasil Spreadsheet

| BU     | Departemen | Total pengeluaran departemen | Rata-rata pengeluaran team building departemen | Pengeluaran team building minimum BU |
| ------ | ---------- | ---------------------------- | ---------------------------------------------- | ------------------------------------ |
| xxpt   | Kolaborasi | 700                          | 600                                            | 500                                  |
| xxpt   | IT         | 850                          | 600                                            | 500                                  |
| aliyun | Feitian 1  | 300                          | 200                                            | 200                                  |

### 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)

<Warning>
  Fungsi agregat laporan saat ini tidak mendukung operasi logika.
</Warning>

Hasil Spreadsheet

| BU     | Departemen | Tipe anggaran | Jumlah departemen BU |
| ------ | ---------- | ------------- | -------------------- |
| xxpt   | Kolaborasi | Team building | 1                    |
| xxpt   | Kolaborasi | Pelatihan     | 1                    |
| xxpt   | IT         | Team building | 1                    |
| xxpt   | IT         | Pelatihan     | 1                    |
| aliyun | Feitian 1  | Team building | 1                    |
| aliyun | Feitian 1  | Pelatihan     | 1                    |

### 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)

<Warning>
  Fungsi agregat laporan saat ini tidak mendukung operasi logika.
</Warning>

Hasil Spreadsheet

| BU     | Departemen | Tipe anggaran | Jumlah departemen BU |
| ------ | ---------- | ------------- | -------------------- |
| xxpt   | Kolaborasi | Team building | 4                    |
| xxpt   | Kolaborasi | Pelatihan     | 4                    |
| xxpt   | IT         | Team building | 2                    |
| xxpt   | IT         | Pelatihan     | 2                    |
| aliyun | Feitian 1  | Team building | 2                    |
| aliyun | Feitian 1  | Pelatihan     | 2                    |

## 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`.

<Note>
  Format tampilan tanggal default adalah `yyyyMMdd`. Untuk mengubah format tampilan tanggal, lihat contoh pada [**Fungsi DATEFORMAT**](/id/yida/form/yrofmw).
</Note>

### 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:

```sql theme={"theme":{"light":"github-light","dark":"github-dark"}}
datetime fromunixtime(bigint unixtime)
```

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:

```sql theme={"theme":{"light":"github-light","dark":"github-dark"}}
fromunixtime(123456789) = 1973-11-30 05:33:09
```

### 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.
