2017-02-02 3 views
0

Ich würde gerne eine Fensterfunktion in Scala verwenden.Fensterfunktionen/scala/funken 1.6

ich eine CSV-Datei, die ist die folgende:

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

Wenn ich versuche, eine Fensterfunktion über diesen Datenrahmen anzuwenden, manchmal funktioniert es und manchmal scheitert es:

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| 
+---+-----------+--------------------+ 

So funktioniert es! Aber wenn ich mit einer größeren Zahl versuchen (die Reihe der vorherigen exemple enthält) Ich habe folgendes Ergebnis

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| 
+---+-----------+--------------------+ 

Antwort

2

Suffix Ihre Nummer mit L:

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

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

Mein Problem ist, dass diese Zahl in der Tat in einer Variablen (langer Typ) und mit einer Variablen funktioniert es nicht –

+0

Dann übergeben Sie einfach die Variable. – pedrofurla

+0

es ist nicht genau das, siehe meine Bearbeitung vorher :) –