制作另一个具有ID和包含相同ID的两行之间有明显错误的表-SQL

Dataholic

我有一个火花数据框,具有两列(“ time_stamp”和“ message”)。

示例数据框:

Time_stamp                   Message
2020-12-01 05:28:34:215      some text1 ID: 1
2020-12-01 05:28:40:210      some text2 error: A
2020-12-01 05:28:40:220      some text3 error: B
2020-12-01 05:28:41:203      some text4 error: A
2020-12-01 05:30:43:201      some text5 ID: 1
2020-12-01 05:32:50:215      some text6 ID: 2
2020-12-01 05:32:50:220      some text7 error: A
2020-12-01 05:48:51:220      some text8 error: C
2020-12-01 05:48:52:203      some text9 error: B
2020-12-01 05:51:53:201      some text10 ID: 2

我想制作另一个具有ID和包含相同ID的两行之间有明显错误的数据框。

预期产量:

表格示例:

ID          Error
1           A
1           B
2           A
2           C
2           B

谢谢

麦克

试试下面的代码。代码按ID分组,收集错误消息并为每个不同的错误消息获取最早的错误消息。时间顺序保持不变。

import pyspark.sql.functions as F
from pyspark.sql.window import Window

df2 = df.withColumn(
    'Time_stamp',
    F.to_timestamp('Time_stamp', 'yyyy-MM-dd HH:mm:ss:SSS')
).withColumn(
    'ID',
    F.regexp_extract('Message', 'ID: ([a-zA-Z0-9]+)', 1)
).withColumn(
    'ID',
    F.last(F.when(F.col('ID') != '', F.col('ID')), True).over(Window.orderBy('Time_stamp'))
).filter(
    F.col('message').rlike('error')
).withColumn(
    'Message',
    F.regexp_extract('Message', 'error: (.*)', 1)
).groupBy('ID').agg(
    F.collect_set(F.array('Message', 'Time_stamp')).alias('Message')
).select(
    'ID',
    F.explode('Message').alias('Message')
).selectExpr(
    'ID',
    'Message[0] as error',
    'Message[1] as Time_stamp'
).withColumn(
    'rn',
    F.row_number().over(Window.partitionBy('ID', 'error').orderBy('Time_stamp'))
).filter('rn = 1').orderBy('Time_stamp').select('ID', 'error')

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

提取ID和包含相同ID的两行之间的明显错误-pyspark SQL

来自分类Dev

筛选在另一个值上具有非唯一ID的SQL行

来自分类Dev

SQL 获取另一个表中某一列中包含相同字符的行的 ID

来自分类Dev

如何从一个表(具有两列的唯一组合)中选择所有SQL行,而另一个表中没有相同的组合

来自分类Dev

SQL-具有两个表和一个JOIN的WHERE之间的区别

来自分类Dev

SQL:根据两个给定值选择具有匹配 ID 的两行

来自分类Dev

SQL:在具有非唯一特征ID的两个表之间查找差异?

来自分类Dev

当一个表具有大量数据而另一个表具有少量数据时,在SQL Server中联接两个表

来自分类Dev

如何制作 SQL 以创建一个报告,该报告选择具有特定行项目的所有报价,并在该报价中包含另一个项目?

来自分类Dev

SQL:在某些列中选择具有值的行,并且该值不包含在另一个表中

来自分类Dev

SQL查询以获取除ID来自另一个表的数组中的ID以外的所有内容

来自分类Dev

SQL-从另一个表中选择两次具有不同值的列

来自分类Dev

SQL查询在具有相同名称字段的两行之间找到负变化

来自分类Dev

SQL记录存在于另一个具有LEFT JOIN和GROUP BY的表中

来自分类Dev

SQL记录存在于另一个具有LEFT JOIN和GROUP BY的表中

来自分类Dev

SQL 查询从另一个表中选择 1 个表和 1 个列(与表 1 中的名称相同)中的所有内容

来自分类Dev

视图中具有静态值的另一个表中的SQL Server列

来自分类Dev

SQL:查找表中的所有行,其中引用原始行的另一个表中的所有行都具有特定属性

来自分类Dev

我可以创建一个视图来查询另一个服务器上但具有相同域的另一个sql服务器中的表吗

来自分类Dev

在我的SQL查询中,如何有一个包含从另一个表查询的值的列?

来自分类Dev

SQL-JOIN和比较来自不同表的两行之间有什么区别?

来自分类Dev

使用SQL选择一个ID,该ID与两行中的两个索引词相对应

来自分类Dev

SQL如何从另一个表的所有行中选择用户

来自分类Dev

SQL:选择与另一个表中的内容匹配的所有行

来自分类Dev

SQL查询将具有相同列名的两个表合并到一个表中

来自分类Dev

尽管另一个表可能没有值,但连接两个表的SQL查询

来自分类Dev

尽管另一个表可能没有值,但连接两个表的SQL查询

来自分类Dev

SQL选择-根据另一个表中的ID两次返回同一列

来自分类Dev

SQL选择-根据另一个表中的ID两次返回同一列

Related 相关文章

  1. 1

    提取ID和包含相同ID的两行之间的明显错误-pyspark SQL

  2. 2

    筛选在另一个值上具有非唯一ID的SQL行

  3. 3

    SQL 获取另一个表中某一列中包含相同字符的行的 ID

  4. 4

    如何从一个表(具有两列的唯一组合)中选择所有SQL行,而另一个表中没有相同的组合

  5. 5

    SQL-具有两个表和一个JOIN的WHERE之间的区别

  6. 6

    SQL:根据两个给定值选择具有匹配 ID 的两行

  7. 7

    SQL:在具有非唯一特征ID的两个表之间查找差异?

  8. 8

    当一个表具有大量数据而另一个表具有少量数据时,在SQL Server中联接两个表

  9. 9

    如何制作 SQL 以创建一个报告,该报告选择具有特定行项目的所有报价,并在该报价中包含另一个项目?

  10. 10

    SQL:在某些列中选择具有值的行,并且该值不包含在另一个表中

  11. 11

    SQL查询以获取除ID来自另一个表的数组中的ID以外的所有内容

  12. 12

    SQL-从另一个表中选择两次具有不同值的列

  13. 13

    SQL查询在具有相同名称字段的两行之间找到负变化

  14. 14

    SQL记录存在于另一个具有LEFT JOIN和GROUP BY的表中

  15. 15

    SQL记录存在于另一个具有LEFT JOIN和GROUP BY的表中

  16. 16

    SQL 查询从另一个表中选择 1 个表和 1 个列(与表 1 中的名称相同)中的所有内容

  17. 17

    视图中具有静态值的另一个表中的SQL Server列

  18. 18

    SQL:查找表中的所有行,其中引用原始行的另一个表中的所有行都具有特定属性

  19. 19

    我可以创建一个视图来查询另一个服务器上但具有相同域的另一个sql服务器中的表吗

  20. 20

    在我的SQL查询中,如何有一个包含从另一个表查询的值的列?

  21. 21

    SQL-JOIN和比较来自不同表的两行之间有什么区别?

  22. 22

    使用SQL选择一个ID,该ID与两行中的两个索引词相对应

  23. 23

    SQL如何从另一个表的所有行中选择用户

  24. 24

    SQL:选择与另一个表中的内容匹配的所有行

  25. 25

    SQL查询将具有相同列名的两个表合并到一个表中

  26. 26

    尽管另一个表可能没有值,但连接两个表的SQL查询

  27. 27

    尽管另一个表可能没有值,但连接两个表的SQL查询

  28. 28

    SQL选择-根据另一个表中的ID两次返回同一列

  29. 29

    SQL选择-根据另一个表中的ID两次返回同一列

热门标签

归档