【问题标题】:conditioned explode in presto\spark在 presto\spark 条件下爆炸
【发布时间】:2021-02-16 23:46:29
【问题描述】:

我有这种结构的表:

input
    id, email_MD5, email_SHA1, idType
    d1, md1,       sh1,        type1
    d2, null,      sh2,        type2

我需要根据以下逻辑将表格转换为sourcedestination关系:

  1. 如果email_MD5email_SHA1 字段中只有一个为空,则将其转换为id-> email 与原始类型的关系。
  2. 如果两封电子邮件都不是空值,则它转换为 3 个关系:id-> email_MD5id-> email_SHA1 以及电子邮件之间的关系 email_MD5 -> email_SHA1 硬编码类型 @ 987654334@
output
    src,  dst, idType
    d1,   md1, type1
    d1,   sh1, type1
    md1,  sh1, email
    d2,   sh2, type2

如何在 presto 和 spark sql 中做到这一点?

【问题讨论】:

    标签: sql apache-spark-sql presto


    【解决方案1】:

    我想这完全可以通过UNION所有可能的组合来实现:

    SELECT id AS src
    ,email_SHA1 AS dst
    ,idType
    FROM input
    WHERE email_SHA1 is not null
    UNION
    SELECT id AS src
    ,email_MD5 AS dst
    ,idType
    FROM input
    WHERE email_MD5 is not null
    UNION
    SELECT email_MD5 AS src
    ,email_SHA1 AS dst
    ,'email' AS idType
    FROM input
    WHERE email_SHA1 is not null and email_MD5 is not null
    

    【讨论】:

    • 谢谢,但它要求我扫描所有数据 3 次。
    猜你喜欢
    • 1970-01-01
    • 2022-01-16
    • 2023-04-06
    • 2018-04-27
    • 1970-01-01
    • 2019-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多