メインコンテンツまでスキップ

マップフィルター

コレクション関数: 指定された述語関数を満たすキーと値のペアを持つ新しいマップ列を返します。Spark Connect をサポートします。

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

構文

Python
from pyspark.databricks.sql import functions as dbf

dbf.map_filter(col=<col>, f=<f>)

パラメーター

パラメーター

Type

説明

col

pyspark.sql.Column または str

フィルタリングするマップを表す列の名前または列式。

f

function

述語を定義するバイナリ関数。この関数は、入力マップをフィルタリングするために使用されるブール列を返す必要があります。

戻り値

pyspark.sql.Column: 述語を満たすキーと値のペアのみを含む新しいマップ列。

例1 : 単純な条件でマップをフィルタリングする

Python
from pyspark.databricks.sql import functions as dbf
df = spark.createDataFrame([(1, {"foo": 42.0, "bar": 1.0, "baz": 32.0})], ("id", "data"))
row = df.select(
dbf.map_filter("data", lambda _, v: v > 30.0).alias("data_filtered")
).head()
sorted(row["data_filtered"].items())
Output
[('baz', 32.0), ('foo', 42.0)]

例2 : キーの条件でマップをフィルタリングする

Python
from pyspark.databricks.sql import functions as dbf
df = spark.createDataFrame([(1, {"foo": 42.0, "bar": 1.0, "baz": 32.0})], ("id", "data"))
row = df.select(
dbf.map_filter("data", lambda k, _: k.startswith("b")).alias("data_filtered")
).head()
sorted(row["data_filtered"].items())
Output
[('bar', 1.0), ('baz', 32.0)]