

 Amazon Redshift tidak akan lagi mendukung pembuatan Python UDFs baru mulai Patch 198. Python yang ada UDFs akan terus berfungsi hingga 30 Juni 2026. Untuk informasi lebih lanjut, lihat [posting blog](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/). 

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

# ST\$1Kumpulkan
<a name="ST_Collect-function"></a>

ST\$1Collect memiliki dua varian. Satu menerima dua geometri, dan satu menerima ekspresi agregat. 

Varian pertama ST\$1Collect menciptakan geometri dari geometri input. Urutan geometri input dipertahankan. Varian ini berfungsi sebagai berikut: 
+ Jika kedua geometri input adalah titik, maka a `MULTIPOINT` dengan dua titik dikembalikan. 
+ Jika kedua geometri input adalah linestring, maka a `MULTILINESTRING` dengan dua linestrings dikembalikan. 
+ Jika kedua geometri input adalah poligon, maka a `MULTIPOLYGON` dengan dua poligon dikembalikan. 
+ Jika tidak, a `GEOMETRYCOLLECTION` dengan dua geometri input dikembalikan. 

Varian kedua dari ST\$1Collect menciptakan geometri dari geometri dalam kolom geometri. Tidak ada urutan pengembalian geometri yang ditentukan. Tentukan klausa WITHIN GROUP (ORDER BY...) untuk menentukan urutan geometri yang dikembalikan. Varian ini berfungsi sebagai berikut: 
+ Jika semua baris non-Null dalam ekspresi agregat input adalah poin, maka multipoint yang berisi semua titik dalam ekspresi agregat dikembalikan. 
+ Jika semua baris non-Null dalam ekspresi agregat adalah linestring, maka multilinestring yang berisi semua linestring dalam ekspresi agregat dikembalikan. 
+ Jika semua baris non-Null dalam ekspresi agregat adalah poligon, hasilnya adalah multipoligon yang berisi semua poligon dalam ekspresi agregat dikembalikan. 
+ Jika tidak, a `GEOMETRYCOLLECTION` yang berisi semua geometri dalam ekspresi agregat dikembalikan. 

ST\$1Collect mengembalikan geometri dari dimensi yang sama dengan geometri masukan. Semua geometri input harus memiliki dimensi yang sama.

## Sintaksis
<a name="ST_Collect-function-syntax"></a>

```
ST_Collect(geom1, geom2)
```

```
ST_Collect(aggregate_expression)  [WITHIN GROUP (ORDER BY sort_expression1 [ASC | DESC] [, sort_expression2 [ASC | DESC] ...])]
```

## Argumen
<a name="ST_Collect-function-arguments"></a>

 *geom1*   
Nilai tipe data `GEOMETRY` atau ekspresi yang mengevaluasi `GEOMETRY` tipe. 

 *geom2*   
Nilai tipe data `GEOMETRY` atau ekspresi yang mengevaluasi `GEOMETRY` tipe. 

 *aggregate\$1expression*   
Kolom tipe data `GEOMETRY` atau ekspresi yang mengevaluasi `GEOMETRY` tipe. 

 [DALAM KELOMPOK (PESANAN OLEH *sort\$1expression1* [ASC \$1 DESC] [, *sort\$1expression2* [ASC \$1 DESC]...])]   
Sebuah klausa opsional yang menentukan urutan dari nilai agregat. Klausa ORDER BY berisi daftar ekspresi pengurutan. Ekspresi sortir adalah ekspresi yang mirip dengan ekspresi pengurutan yang valid dalam daftar pilih kueri, seperti nama kolom. Anda dapat menentukan urutan ascending (`ASC`) atau descending (`DESC`). Nilai default-nya `ASC`. 

## Jenis pengembalian
<a name="ST_Collect-function-return"></a>

`GEOMETRY`dari subtipe`MULTIPOINT`,, `MULTILINESTRING``MULTIPOLYGON`, atau`GEOMETRYCOLLECTION`. 

Nilai pengidentifikasi sistem referensi spasial (SRID) dari geometri yang dikembalikan adalah nilai SRID dari geometri input. 

Jika kedua *geom1* atau *geom2* adalah nol, maka null dikembalikan. 

Jika semua baris *aggregate\$1expression* adalah null, maka null dikembalikan. 

Jika *geom1* adalah nol, maka salinan *geom2* dikembalikan. Demikian juga, jika *geom2* adalah nol, maka salinan *geom1* dikembalikan.

Jika *geom1* dan *geom2* memiliki nilai SRID yang berbeda, maka kesalahan dikembalikan. 

Jika dua geometri dalam *aggregate\$1expression* memiliki nilai SRID yang berbeda, maka kesalahan dikembalikan. 

Jika geometri yang dikembalikan lebih besar dari ukuran maksimum a`GEOMETRY`, maka kesalahan dikembalikan. 

Jika *geom1* dan *geom2* memiliki dimensi yang berbeda, maka kesalahan dikembalikan. 

Jika dua geometri dalam *aggregate\$1expression* memiliki dimensi yang berbeda, maka kesalahan dikembalikan. 

## Contoh
<a name="ST_Collect-function-examples"></a>

SQL berikut mengembalikan koleksi geometri yang berisi dua geometri input. 

```
SELECT ST_AsText(ST_Collect(ST_GeomFromText('LINESTRING(0 0,1 1)'), ST_GeomFromText('POLYGON((10 10,20 10,10 20,10 10))')));
```

```
st_astext
-----------
 GEOMETRYCOLLECTION(LINESTRING(0 0,1 1),POLYGON((10 10,20 10,10 20,10 10)))
```

SQL berikut mengumpulkan semua geometri dari tabel ke dalam koleksi geometri. 

```
WITH tbl(g) AS (SELECT ST_GeomFromText('POINT(1 2)', 4326) UNION ALL
SELECT ST_GeomFromText('LINESTRING(0 0,10 0)', 4326) UNION ALL
SELECT ST_GeomFromText('MULTIPOINT(13 4,8 5,4 4)', 4326) UNION ALL
SELECT NULL::geometry UNION ALL
SELECT ST_GeomFromText('POLYGON((0 0,10 0,0 10,0 0))', 4326))
SELECT ST_AsEWKT(ST_Collect(g)) FROM tbl;
```

```
st_astext
-----------
 SRID=4326;GEOMETRYCOLLECTION(POINT(1 2),LINESTRING(0 0,10 0),MULTIPOINT((13 4),(8 5),(4 4)),POLYGON((0 0,10 0,0 10,0 0)))
```

SQL berikut mengumpulkan semua geometri dalam tabel dikelompokkan oleh kolom id dan diurutkan oleh ID ini. Dalam contoh ini, geometri yang dihasilkan dikelompokkan berdasarkan ID sebagai berikut: 
+ id 1 — poin dalam multipoint.
+ id 2 — linestrings dalam multilinestring.
+ id 3 — subtipe campuran dalam koleksi geometri.
+ id 4 — poligon dalam multipoligon.
+ id 5 — null dan hasilnya adalah null.

```
WITH tbl(id, g) AS (SELECT 1, ST_GeomFromText('POINT(1 2)', 4326) UNION ALL
SELECT 1, ST_GeomFromText('POINT(4 5)', 4326) UNION ALL
SELECT 2, ST_GeomFromText('LINESTRING(0 0,10 0)', 4326) UNION ALL
SELECT 2, ST_GeomFromText('LINESTRING(10 0,20 -5)', 4326) UNION ALL
SELECT 3, ST_GeomFromText('MULTIPOINT(13 4,8 5,4 4)', 4326) UNION ALL
SELECT 3, ST_GeomFromText('MULTILINESTRING((-1 -1,-2 -2),(-3 -3,-5 -5))', 4326) UNION ALL
SELECT 4, ST_GeomFromText('POLYGON((0 0,10 0,0 10,0 0))', 4326) UNION ALL
SELECT 4, ST_GeomFromText('POLYGON((20 20,20 30,30 20,20 20))', 4326) UNION ALL
SELECT 1, NULL::geometry UNION ALL SELECT 2, NULL::geometry UNION ALL
SELECT 5, NULL::geometry UNION ALL SELECT 5, NULL::geometry)
SELECT id, ST_AsEWKT(ST_Collect(g)) FROM tbl GROUP BY id ORDER BY id;
```

```
 id |                                                 st_asewkt                                                 
----+-----------------------------------------------------------------------------------------------------------
  1 | SRID=4326;MULTIPOINT((1 2),(4 5))
  2 | SRID=4326;MULTILINESTRING((0 0,10 0),(10 0,20 -5))
  3 | SRID=4326;GEOMETRYCOLLECTION(MULTIPOINT((13 4),(8 5),(4 4)),MULTILINESTRING((-1 -1,-2 -2),(-3 -3,-5 -5)))
  4 | SRID=4326;MULTIPOLYGON(((0 0,10 0,0 10,0 0)),((20 20,20 30,30 20,20 20)))
  5 |
```

SQL berikut mengumpulkan semua geometri dari tabel dalam koleksi geometri. Hasil diurutkan dalam urutan menurun menurut`id`, dan kemudian secara leksikografis berdasarkan koordinat x minimum dan maksimumnya. 

```
WITH tbl(id, g) AS (
SELECT 1, ST_GeomFromText('POINT(4 5)', 4326) UNION ALL
SELECT 1, ST_GeomFromText('POINT(1 2)', 4326) UNION ALL
SELECT 2, ST_GeomFromText('LINESTRING(10 0,20 -5)', 4326) UNION ALL
SELECT 2, ST_GeomFromText('LINESTRING(0 0,10 0)', 4326) UNION ALL
SELECT 3, ST_GeomFromText('MULTIPOINT(13 4,8 5,4 4)', 4326) UNION ALL
SELECT 3, ST_GeomFromText('MULTILINESTRING((-1 -1,-2 -2),(-3 -3,-5 -5))', 4326) UNION ALL
SELECT 4, ST_GeomFromText('POLYGON((20 20,20 30,30 20,20 20))', 4326) UNION ALL
SELECT 4, ST_GeomFromText('POLYGON((0 0,10 0,0 10,0 0))', 4326) UNION ALL
SELECT 1, NULL::geometry UNION ALL SELECT 2, NULL::geometry UNION ALL
SELECT 5, NULL::geometry UNION ALL SELECT 5, NULL::geometry)
SELECT ST_AsEWKT(ST_Collect(g) WITHIN GROUP (ORDER BY id DESC, ST_XMin(g), ST_XMax(g))) FROM tbl;
```

```
                                                                                                                  st_asewkt                                                                                                                  
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 SRID=4326;GEOMETRYCOLLECTION(POLYGON((0 0,10 0,0 10,0 0)),POLYGON((20 20,20 30,30 20,20 20)),MULTILINESTRING((-1 -1,-2 -2),(-3 -3,-5 -5)),MULTIPOINT((13 4),(8 5),(4 4)),LINESTRING(0 0,10 0),LINESTRING(10 0,20 -5),POINT(1 2),POINT(4 5)
```