- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想删除所有重复条目的记录,但已经说过时间戳的差异可以是任何时间量作为偏移量,但为了简单起见,将使用 2 分钟。
+-------------------+-----+----+
|Date |ColA |ColB|
+-------------------+-----+----+
|2017-07-04 18:50:21|ABC |DEF |
|2017-07-04 18:50:26|ABC |DEF |
|2017-07-04 18:50:21|ABC |KLM |
+-------------------+-----+----+
我希望我的数据框只有行
+-------------------+-----+----+
|Date |ColA |ColB|
+-------------------+-----+----+
|2017-07-04 18:50:26|ABC |DEF |
|2017-07-04 18:50:21|ABC |KLM |
+-------------------+-----+----+
我尝试了类似的方法,但这并没有删除重复项。
val joinedDfNoDuplicates = joinedDFTransformed.as("df1").join(joinedDFTransformed.as("df2"), col("df1.ColA") === col("df2.ColA") &&
col("df1.ColB") === col("df2.ColB") &&
&& abs(unix_timestamp(col("Date")) - unix_timestamp(col("Date"))) > offset
)
现在,我只是在这里选择不同的或按分钟分组 Find minimum for a timestamp through Spark groupBy dataframe基于某些列的数据,但我想要一个更强大的解决方案,原因是该间隔之外的数据可能是有效数据。此外,偏移量可以更改,因此可能会根据要求在 5 秒或 5 分钟内更改。
有人向我提到创建一个 UDF 来比较日期以及所有其他列是否相同,但我不确定具体如何执行此操作,这样我要么过滤掉行,要么添加一个标志,然后删除这些行以获取任何帮助将不胜感激。
类似的sql问题在这里Duplicate entries with different timestamp
谢谢!
最佳答案
我会这样做:
代码可以如下所示:
import org.apache.spark.sql.functions._
import org.apache.spark.sql.expressions._
val w = Window.partitionBy("dummy").orderBy("Date") // step 1
df.withColumn("dummy", lit(1)) // this is step 1
.withColumn("previousDate", lag($"Date", 1) over w) // step 2
.withColumn("difference", unix_timestamp($"Date") - unix_timestamp("previousDate")) // step 3
如果您有时间可能接近的记录对,则上述解决方案有效。如果您有两条以上的记录,则可以将每条记录与窗口中的第一条记录(而不是前一条记录)进行比较,因此您可以使用第一个($"日期")
。在本例中,“差异”列包含当前记录与窗口中第一条记录之间的时间差。
关于scala - 删除接近时间戳的条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46936626/
给定一个带有多个 date_time 戳的字符串,我想 提取第一个戳及其前面的文本 候选字符串可以有一个或多个时间戳 后续的 date_time 戳记将被 sep="-" 隔开 后续date_time
是否可以合并从相机拍摄的文本和照片?我想在照片上标记日期和时间,但我在 Google 上找不到任何内容。 最佳答案 使用下面的代码来实现你所需要的。 Bitmap src = Bitm
有没有办法通过 Graph API 戳另一个用户?基于this post ,并使用 Graph Explorer ,我发布到“/USERID/pokes”,我已经授予它(Graph API 应用程序和
我有两个向左浮动的元素。一个是 body 的第一个 child ,另一个是容器的第一个 child ,容器是 body 的第二个 child 。 ...
我是一名优秀的程序员,十分优秀!