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

try_variant_get

pathに従ってvからサブバリアントを抽出し、そのサブバリアントをtargetTypeにキャストします。パスが存在しないかキャストが失敗した場合は null を返します。

構文

Python
from pyspark.sql import functions as sf

sf.try_variant_get(v, path, targetType)

パラメーター

パラメーター

Type

説明

v

pyspark.sql.Column または文字列

バリアント列または列名。

path

pyspark.sql.Column または文字列

抽出パスの文字列、または抽出パスを表す文字列を含む列。 有効なパスは$で始まり、その後に[123].name['name']["name"]などの 0 個以上のセグメントが続きます。

targetType

str

DDL 形式の文字列で、キャストするターゲット データ型。

戻り値

pyspark.sql.Column: 抽出された結果を表すtargetTypeの列

Python
from pyspark.sql import functions as sf
df = spark.createDataFrame([ {'json': '''{ "a" : 1 }''', 'path': '$.a'} ])
v = sf.parse_json(df.json)
df.select(sf.try_variant_get(v, "$.a", "int").alias("r")).collect()
Output
[Row(r=1)]
Python
df.select(sf.try_variant_get(v, "$.b", "int").alias("r")).collect()
Output
[Row(r=None)]
Python
df.select(sf.try_variant_get(v, "$.a", "binary").alias("r")).collect()
Output
[Row(r=None)]
Python
df.select(sf.try_variant_get(sf.parse_json(df.json), df.path, "int").alias("r")).collect()
Output
[Row(r=1)]