ID「 」の「st_collect」
適用対象: Databricks Runtime 18 LTS 以降
プレビュー
この機能は パブリック プレビュー段階です。
Geography または Geometry の値の配列を、単一のマルチポイント、マルチラインストリング、マルチポリゴン、またはジオメトリコレクションに収集します。
対応するDatabricks SQL 関数については、st_collect function を参照してください。
構文
from pyspark.databricks.sql import functions as dbf
dbf.st_collect(col=<col>)
パラメーター
戻り値
pyspark.sql.Column:GeographyまたはGeometry値、マルチポイント、マルチラインストリング、マルチポリゴン、またはジオメトリコレクションを表します。
入力配列内の None の値は無視されます。出力タイプは、Noneではない入力ジオメトリのタイプに依存します。
- すべての非
None要素が点である場合、マルチポイントを返します。 - すべての非
None要素がラインストリングの場合、マルチラインストリングを返します。 None以外のすべての要素がポリゴンの場合、マルチポリゴンを返します。- それ以外の場合は、ジオメトリコレクションを返します。
各出力には、None以外の配列要素ごとに1つの要素が含まれています。
マルチタイプ入力(マルチポイント、マルチラインストリング、マルチポリゴン)およびジオメトリコレクション入力は、結果のジオメトリコレクションの要素として保持されます;平坦化されません。
出力のSRID値は、「None」以外の入力ジオメトリの共通のSRID値です。
出力のディメンションは、非None入力ジオメトリの最大共通ディメンションです。
入力配列が空であるか、またはNone値のみが含まれる場合、2D空のジオメトリコレクションが返されます。この場合、出力の SRID は次のように決定されます。
- 入力配列の要素型が
GEOGRAPHY(ANY)の場合、出力のSRIDは4326となります。 - 入力配列の要素型が
GEOMETRY(ANY)の場合、出力のSRIDは0となります。 - それ以外の場合、出力のSRIDは入力配列の要素型のものになります。
任意の2つの非None入力ジオメトリが異なるSRID値を持つ場合、関数はST_DIFFERENT_SRID_VALUESエラーを返します。
関数は入力がNoneの場合にNoneを返します。
例
点の配列を収集して、マルチポイントを構成します。
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))')]
ポリゴンの配列をマルチポリゴンにまとめます。
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)))')]
複数の種類のジオメトリをジオメトリコレクションに結合します。
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))')]
空の入力配列に対して2Dの空のジオメトリコレクションを返します。
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')]
None入力に対して、Noneを返します。
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)]