st_collect

Şunun için geçerlidir:evet olarak işaretlendi Databricks Runtime 18 LTS ve üzerini denetleyin

Note

Databricks Runtime 18, Databricks Runtime 18.0, 18.1 ve 18.2'den daha yenidir. Daha önce daha sonra numaralandırılmış sürüm olarak gönderilecek özellikler artık databricks Runtime 18'e tarihli güncelleştirmeler olarak gönderilir. Ayrıntılar için bkz. Birleşik sürüm notları hakkında.

Important

Bu özellik Genel Önizleme aşamasındadır.

Coğrafya veya Geometri değerleri dizisini tek bir çok noktalı, çok satırlı, çok köşeli veya geometri koleksiyonunda toplar.

İlgili Databricks SQL fonksiyonu için bakınız st_collect fonksiyonu.

Syntax

from pyspark.databricks.sql import functions as dbf

dbf.st_collect(col=<col>)

Parameters

Parametre Türü Description
col pyspark.sql.Column veya str Coğrafya değerleri dizisi veya Geometri değerleri dizisi.

İadeler

pyspark.sql.Column: Çok noktalı, çok satırlı, çok kutuplu veya geometri koleksiyonunu temsil eden Coğrafya veya Geometri değeri.

Giriş dizisindeki None değerlerinden herhangi biri es geçilir. Çıkışın türü, giriş olmayanNone geometrilerin türlerine bağlıdır:

  • Öğe olmayanNone tüm öğeler nokta ise, çok noktalı bir değer döndürür.
  • Olmayan tümNone öğeler linestrings ise, çok satırlı dize döndürür.
  • Olmayan tümNone öğeler çokgense, çok kutuplu bir değer döndürür.
  • Aksi takdirde, bir geometri koleksiyonu döndürür.

Her çıkış, dizi olmayanNone öğe başına bir öğe içerir.

Çok tipli girişler (çok noktalı, çok satırlı, çok kutuplu) ve geometri koleksiyonu girişleri, sonuçta elde edilen geometri koleksiyonunun öğeleri olarak korunur; düz değildirler.

Çıkışın SRID değeri, giriş olmayanNone geometrilerin ortak SRID değeridir.

Çıkışın boyutu, giriş olmayanNone geometrilerin en büyük ortak boyutudur.

Giriş dizisi boşsa veya yalnızca None değerler içeriyorsa, 2B boş geometri koleksiyonu döndürülür. Bu durumda, çıkışın SRID'i aşağıdaki gibi belirlenir:

  • Giriş dizisinin öğe türü ise GEOGRAPHY(ANY), çıkışın SRID değeri olur 4326.
  • Giriş dizisinin öğe türü ise GEOMETRY(ANY), çıkışın SRID değeri olur 0.
  • Aksi takdirde, çıkışın SRID değeri giriş dizisinin öğe türüdür.

Giriş olmayanNone iki geometri farklı SRID değerlerine sahipse işlev bir ST_DIFFERENT_SRID_VALUES hatası oluşturur.

İşlev, birinci parametre None ise None döndürür.

Examples

Bir nokta dizisini birden çok noktaya toplar.

from pyspark.databricks.sql import functions as dbf
from pyspark.sql import functions as sf
df = spark.createDataFrame([('POINT(1 2)', 'POINT(3 4)')], ['wkt1', 'wkt2'])
df.select(dbf.st_astext(dbf.st_collect(sf.array(dbf.st_geomfromtext('wkt1'), dbf.st_geomfromtext('wkt2')))).alias('result')).collect()
[Row(result='MULTIPOINT((1 2),(3 4))')]

Bir çokgen dizisini çok kutuplu bir diziye toplar.

from pyspark.databricks.sql import functions as dbf
from pyspark.sql import functions as sf
df = spark.createDataFrame([('POLYGON((0 0,10 0,10 10,0 10,0 0))',)], ['wkt'])
df.select(dbf.st_astext(dbf.st_collect(sf.array(dbf.st_geomfromtext('wkt')))).alias('result')).collect()
[Row(result='MULTIPOLYGON(((0 0,10 0,10 10,0 10,0 0)))')]

Karma geometri türlerinden oluşan bir diziyi geometri koleksiyonuna toplar.

from pyspark.databricks.sql import functions as dbf
from pyspark.sql import functions as sf
df = spark.createDataFrame([('POLYGON((0 0,10 0,10 10,0 10,0 0))', 'LINESTRING(1 2,3 4)')], ['wkt1', 'wkt2'])
df.select(dbf.st_astext(dbf.st_collect(sf.array(dbf.st_geomfromtext('wkt1'), dbf.st_geomfromtext('wkt2')))).alias('result')).collect()
[Row(result='GEOMETRYCOLLECTION(POLYGON((0 0,10 0,10 10,0 10,0 0)),LINESTRING(1 2,3 4))')]

Boş bir giriş dizisi için 2B boş geometri koleksiyonunu döndürür.

from pyspark.databricks.sql import functions as dbf
from pyspark.sql import functions as sf
df = spark.range(1)
df.select(dbf.st_astext(dbf.st_collect(sf.array())).alias('result')).collect()
[Row(result='GEOMETRYCOLLECTION EMPTY')]

Giriş None için döndürürNone.

from pyspark.databricks.sql import functions as dbf
from pyspark.sql import functions as sf
df = spark.range(1)
df.select(dbf.st_collect(sf.lit(None)).alias('result')).collect()
[Row(result=None)]