有一个函数可以从 Delta 表中删除数据:
deltaTable = DeltaTable.forPath(spark, "/data/events/")
deltaTable.delete(col("date") < "2017-01-01")
Run Code Online (Sandbox Code Playgroud)
但有没有办法以某种方式删除重复项?就像 deltaTable.dropDuplicates()...
我不想将整个表作为数据帧读取,删除重复项,然后再次将其重写到存储中
我想检查列值是否在某些边界内。如果不是,我将向数组列“F”附加一些值。这是我到目前为止的代码:
df = spark.createDataFrame(
[
(1, 56),
(2, 32),
(3, 99)
],
['id', 'some_nr']
)
df = df.withColumn( "F", F.lit( None ).cast( types.ArrayType( types.ShortType( ) ) ) )
def boundary_check( val ):
if (val > 60) | (val < 50):
return 1
udf = F.udf( lambda x: boundary_check( x ) )
df = df.withColumn("F", udf(F.col("some_nr")))
display(df)
Run Code Online (Sandbox Code Playgroud)
但是,我不知道如何附加到数组。目前,如果我对 df 执行另一次边界检查,它将简单地覆盖“F”中以前的值...