

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Filter array
<a name="filtering-arrays"></a>

Membuat larik dari koleksi baris jika mereka cocok dengan kriteria filter.

```
WITH
dataset AS (
  SELECT ARRAY[1,2,3,4,5] AS items
)
SELECT array_agg(i) AS array_items
FROM dataset
CROSS JOIN UNNEST(items) AS t(i)
WHERE i > 3
```

Kueri ini kembali:

```
+-------------+
| array_items |
+-------------+
| [4, 5]      |
+-------------+
```

Filter larik berdasarkan apakah salah satu unsur-unsurnya mengandung nilai tertentu, seperti 2, seperti dalam contoh ini:

```
WITH
dataset AS (
  SELECT ARRAY
  [
    ARRAY[1,2,3,4],
    ARRAY[5,6,7,8],
    ARRAY[9,0]
  ] AS items
)
SELECT i AS array_items FROM dataset
CROSS JOIN UNNEST(items) AS t(i)
WHERE contains(i, 2)
```

Kueri ini menghasilkan:

```
+--------------+
| array_items  |
+--------------+
| [1, 2, 3, 4] |
+--------------+
```

## Gunakan `filter` fungsi
<a name="filtering-arrays-filter-function"></a>

```
 filter(ARRAY [{{list_of_values}}], {{boolean_function}})
```

Anda dapat menggunakan `filter` fungsi pada `ARRAY` ekspresi untuk membuat array baru yang merupakan bagian dari item dalam {{list\_of\_values}} yang {{boolean\_function}} benar. `filter`Fungsi ini dapat berguna dalam kasus di mana Anda tidak dapat menggunakan {{UNNEST}} fungsi tersebut.

Contoh berikut filter untuk nilai yang lebih besar dari nol dalam array`[1,0,5,-1]`.

```
SELECT filter(ARRAY [1,0,5,-1], x -> x>0)
```

**Hasil**  
`[1,5]`

Contoh berikut filter untuk nilai-nilai non-null dalam array. `[-1, NULL, 10, NULL]`

```
SELECT filter(ARRAY [-1, NULL, 10, NULL], q -> q IS NOT NULL)
```

**Hasil**  
`[-1,10]`