spark SQL関数がnull値から保護される方法はありますか?例えばビルトインSpark Sql関数の動作の変更
私はYear Published
列にスパークSQL文date_format
機能を適用したい、次のデータフレーム
df.show
+--------------------+--------------+------+------------+
| Title|Year Published|Rating|Length (Min)|
+--------------------+--------------+------+------------+
| 101 Dalmatians| 01/1996| G| 103|
|101 Dalmatians (A...| 1961| G| 79|
|101 Dalmations II...| 2003| G| 70|
を持っています。元の値が他の日付と異なる日付形式にあったよう
val sql = """date_format(`Year Published`, 'MM/yyyy')"""
val df2 = df.withColumn("Year Published", expr(sql))
df2.show
+--------------------+--------------+------+------------+
| Title|Year Published|Rating|Length (Min)|
+--------------------+--------------+------+------------+
| 101 Dalmatians| null| G| 103|
|101 Dalmatians (A...| 01/1961| G| 79|
|101 Dalmations II...| 01/2003| G| 70|
Year Published
カラムの最初の行はゼロにされています。
この動作は、date_format
では一意ではありません。たとえば、format_number
は、数値以外の型をnullにします。
私のデータセットでは、さまざまな日付形式と、データが破棄され、値が解析不能なものがあります。私はユースケースを持っています。ここでは、セルの値を書式設定できない場合、nullとは違って現在の値を返したいと考えています。
df2
の機能を正しく適用できない場合、ゼロの代わりにdf
に元の値を使用する方法がありますか?
私は
を試してみた私はorg.apache.spark.sql.catalyst.expressions
に巻き付け式を見てきましたが、既存の機能を交換する方法を見ることができませんでした。
私が見つけた唯一の解決策は、自分でdate_format
を作成してudfとして登録することですが、これはすべての機能にとって実用的ではありません。私は、関数への入力がnullでない場合、または既存のすべてのspark関数をラップする自動化された方法では、nullを返すことのないソリューションを探しています。