Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Window işlevi: Geçerli satırdan önceki satırlar offset olan ve default geçerli satırdan önce satırdan offset az satır varsa değeri döndürür. Örneğin, offset bunlardan biri pencere bölümünün herhangi bir noktasında önceki satırı döndürür.
Bu, SQL'deki LAG işlevine eşdeğerdir.
Sözdizimi
from pyspark.sql import functions as sf
sf.lag(col, offset=1, default=None)
Parametreler
| Parametre | Türü | Description |
|---|---|---|
col |
pyspark.sql.Column veya sütun adı |
Sütun veya ifadenin adı. |
offset |
int, isteğe bağlı | Genişletecek satır sayısı. Varsayılan değer 1'dir. |
default |
optional | Varsayılan değer. |
İade
pyspark.sql.Column: değerini temel offsetalan geçerli satırdan önceki değerdir.
Örnekler
Örnek 1: Önceki değeri almak için gecikme kullanma
from pyspark.sql import functions as sf
from pyspark.sql import Window
df = spark.createDataFrame(
[("a", 1), ("a", 2), ("a", 3), ("b", 8), ("b", 2)], ["c1", "c2"])
df.show()
+---+---+
| c1| c2|
+---+---+
| a| 1|
| a| 2|
| a| 3|
| b| 8|
| b| 2|
+---+---+
w = Window.partitionBy("c1").orderBy("c2")
df.withColumn("previous_value", sf.lag("c2").over(w)).show()
+---+---+--------------+
| c1| c2|previous_value|
+---+---+--------------+
| a| 1| NULL|
| a| 2| 1|
| a| 3| 2|
| b| 2| NULL|
| b| 8| 2|
+---+---+--------------+
Örnek 2: Varsayılan değerle gecikme kullanma
from pyspark.sql import functions as sf
from pyspark.sql import Window
df = spark.createDataFrame(
[("a", 1), ("a", 2), ("a", 3), ("b", 8), ("b", 2)], ["c1", "c2"])
w = Window.partitionBy("c1").orderBy("c2")
df.withColumn("previous_value", sf.lag("c2", 1, 0).over(w)).show()
+---+---+--------------+
| c1| c2|previous_value|
+---+---+--------------+
| a| 1| 0|
| a| 2| 1|
| a| 3| 2|
| b| 2| 0|
| b| 8| 2|
+---+---+--------------+
Örnek 3: 2 uzaklığı ile gecikme kullanma
from pyspark.sql import functions as sf
from pyspark.sql import Window
df = spark.createDataFrame(
[("a", 1), ("a", 2), ("a", 3), ("b", 8), ("b", 2)], ["c1", "c2"])
w = Window.partitionBy("c1").orderBy("c2")
df.withColumn("previous_value", sf.lag("c2", 2, -1).over(w)).show()
+---+---+--------------+
| c1| c2|previous_value|
+---+---+--------------+
| a| 1| -1|
| a| 2| -1|
| a| 3| 1|
| b| 2| -1|
| b| 8| -1|
+---+---+--------------+