st_collect

適用対象:はい Databricks Runtime 18 LTS 以上とマークされているチェック

Note

Databricks Runtime 18 は、Databricks Runtime 18.0、18.1、および 18.2 より新しいです。 以前に後の番号付きバージョンとして出荷されていた機能は、代わりに Databricks Runtime 18 の日付の更新プログラムとして出荷されるようになりました。 詳細については、「 統合リリース ノートについて」を参照してください。

Important

この機能は パブリック プレビュー段階です

Geography または Geometry 値の配列を 1 つのマルチポイント、マルチライン文字列、マルチポリゴン、または geometry コレクションに収集します。

対応する Databricks SQL 関数については、 st_collect 関数を参照してください。

Syntax

from pyspark.databricks.sql import functions as dbf

dbf.st_collect(col=<col>)

Parameters

パラメーター タイプ Description
col pyspark.sql.Column または str Geography 値の配列、または Geometry 値の配列。

返品

pyspark.sql.Column: Geography または Geometry 値。マルチポイント、マルチライン文字列、マルチポリゴン、または geometry コレクションを表します。

入力配列内のすべての None 値は無視されます。 出力の種類は、None 以外の入力ジオメトリの種類によって異なります。

  • None以外のすべての要素がポイントの場合は、マルチポイントを返します。
  • None以外のすべての要素が行文字列の場合は、複数行文字列を返します。
  • すべての非None 要素が多角形の場合は、マルチポリゴンを返します。
  • それ以外の場合は、geometry コレクションを返します。

各出力には、None 以外の配列要素ごとに 1 つの要素が含まれます。

マルチ型入力 (multipoint、multilinestring、multipolygon) と geometry コレクションの入力は、結果の geometry コレクションの要素として保持されます。フラット化されません。

出力の SRID 値は、None 以外の入力ジオメトリの共通の SRID 値です。

出力の寸法は、None 以外の入力ジオメトリの最大共通寸法です。

入力配列が空であるか、 None 値のみが含まれている場合は、2D 空の geometry コレクションが返されます。 この場合、出力の SRID は次のように決定されます。

  • 入力配列の要素型が GEOGRAPHY(ANY)場合、出力の SRID は 4326
  • 入力配列の要素型が GEOMETRY(ANY)場合、出力の SRID は 0
  • それ以外の場合、出力の SRID は入力配列の要素型の SRID になります。

None以外の 2 つの入力ジオメトリに異なる SRID 値がある場合、この関数はST_DIFFERENT_SRID_VALUES エラーを発生させます。

入力がNone場合、この関数はNoneを返します。

Examples

ポイントの配列をマルチポイントに収集します。

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)))')]

混合ジオメトリの種類の配列を geometry コレクションに収集します。

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