【问题标题】:Scala spark data frame phone number validationScala spark数据框电话号码验证
【发布时间】:2022-06-30 00:17:41
【问题描述】:

我想对下面提到的电话号码列执行一些验证,然后用“Y”(当号码看起来有效时)或“N”(当号码无效时)更新“正确”列。

【问题讨论】:

    标签: dataframe scala apache-spark validation apache-spark-sql


    【解决方案1】:
    val df = Seq[(String)]("", "  ", null, "123456789a", "1111111111", "1.3-4567 80", " 1.23-4567 890 ", "1234567890").toDF("PhoneNumber")
    
    val trimmed = regexp_replace(trim($"PhoneNumber"), "[ .-]", "")
    val correct = trimmed.rlike(raw"\d{10,}") && 
                  !(trimmed.rlike(raw"^(\d)\1*$$"))
    val df2 = df.withColumn("Correct", when(correct, "Y").otherwise("N"))
     
    df2.show()
    // +---------------+-------+
    // |    PhoneNumber|Correct|
    // +---------------+-------+
    // |               |      N|
    // |               |      N|
    // |           null|      N|
    // |     123456789a|      N|
    // |     1111111111|      N|
    // |    1.3-4567 80|      N|
    // | 1.23-4567 890 |      Y|
    // |     1234567890|      Y|
    // +---------------+-------+
    

    trim($"PhoneNumber") 删除前导和尾随空格
    regexp_replace(..., "[ .-]", "") 删除空格、点和逗号
    .rlike(raw"\d{10,}") 检查 10 个或更多数字
    !(....rlike(raw"^(\d)\1*$$")) 检查所有相同数字

    【讨论】:

      猜你喜欢
      • 2012-10-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-11
      • 2011-02-03
      相关资源
      最近更新 更多