web-dev-qa-db-ja.com

spark sqlウィンドウ関数遅延

Spark DataFrame in Spark SQL、Scala。

列Col1、Col1、Col1、dateを持つデータフレームがあります。

Col1    Col2    Col3    date     volume new_col
                        201601  100.5   
                        201602  120.6   100.5
                        201603  450.2   120.6
                        201604  200.7   450.2
                        201605  121.4   200.7`

次に、上に示すように、1行下にスライドさせた名前(new_col)の新しい列を追加します。

私は、ウィンドウ機能を使用するオプションの下で試してみました。

val windSldBrdrxNrx_df = df.withColumn("Prev_brand_rx", lag("Prev_brand_rx",1))

誰でもこれを行う方法を手伝ってくれますか?.

13
Ramesh

over(window expression) on lagだけが見逃している

val df = sc.parallelize(Seq((201601, 100.5),
  (201602, 120.6),
  (201603, 450.2),
  (201604, 200.7),
  (201605, 121.4))).toDF("date", "volume")

val w = org.Apache.spark.sql.expressions.Window.orderBy("date")  

import org.Apache.spark.sql.functions.lag

val leadDf = df.withColumn("new_col", lag("volume", 1, 0).over(w))

leadDf.show()

+------+------+-------+
|  date|volume|new_col|
+------+------+-------+
|201601| 100.5|    0.0|
|201602| 120.6|  100.5|
|201603| 450.2|  120.6|
|201604| 200.7|  450.2|
|201605| 121.4|  200.7|
+------+------+-------+

このコードはSpark Shell 2.0.2で実行されました

26
mrsrinivas

以下の2つのパッケージをインポートして、遅延依存関係の問題を解決できます。

import org.Apache.spark.sql.functions.{lead, lag}
import org.Apache.spark.sql.expressions.Window
2
Sampat Kumar