2017-02-02 14 views
0

私はScalaでウィンドウ関数を使いたいと思います。ウィンドウ関数/ scala/spark 1.6

私は、次のいずれかのCSVファイルを持っている:私は、このデータフレームの上に窓関数を適用しようとすると

id;date;value1 
1;63111600000;100 
1;63111700000;200 
1;63154800000;300 

を、 時にはそれが動作し、時にはそれが失敗します。

val df = loadCSVFile() 
val tw = Window.orderBy(date).partitionBy(id).rangeBetween(-5356800000,0) 
df.withColumn(value1___min_2_month, min(df.col("value1")).over(tw)) 
+---+-----------+--------------------+ 
| id|  date|value1___min_2_month| 
+---+-----------+--------------------+ 
| 1|63111600000|     100| 
| 1|63111700000|     100| 
| 1|63154800000|     100| 
+---+-----------+--------------------+ 

だからそれは動作します!しかし、私は(以前exempleの行を含む)より大きな数をしようとすると、私は次のような結果に

val tw = 

Window.orderBy(date).partitionBy(id).rangeBetween(-8035200000,0) \n 
df.withColumn(value1___min_3_month, min(df.col("value1")).over(tw)) 
+---+-----------+--------------------+ 
| id|  date|value1___min_3_month| 
+---+-----------+--------------------+ 
| 1|63111600000|    null| 
| 1|63111700000|    null| 
| 1|63154800000|    null| 
+---+-----------+--------------------+ 

答えて

2

サフィックスを持っているあなたの数はLと:

scala> -10000000000 
<console>:1: error: integer number too large 
-10000000000 
^ 

scala> -10000000000L 
res0: Long = -10000000000 
+0

私の問題は、この数は実際にあるということです変数(ロングタイプ)と変数で動作しません –

+0

その後、変数を渡すだけです。 – pedrofurla

+0

それは正確ではありません、前に私の編集を参照してください:) –

関連する問題