当前位置: 首页 > 知识库问答 >
问题:

如何在Spark Scala中从列数据类型中提取字符串?

夹谷茂
2023-03-14

我有一个函数,它接受一个字符串参数,并对其进行“匹配”以确定返回值,如下所示-

编辑(完成功能):

 def getSubscriptionDaysFunc(account_status:Column, created_at: org.apache.spark.sql.Column, updated_at: org.apache.spark.sql.Column):org.apache.spark.sql.Column = {
account_status match {
    case "expired" =>datediff(updated_at,created_at)
    case "cancelled" =>datediff(updated_at,created_at)
    case "active" =>datediff(updated_at, current_date())
    case default => null 
} }  
df.withColumn("subscription_days", getSubscriptionDaysFunc($"account_status",$"created_at",$"updated_at"))
val getSubscriptionDaysFunc = udf((account_status:String, created_at: org.apache.spark.sql.Column, updated_at: org.apache.spark.sql.Column):Column =>  {
account_status match {
case "expired" =>datediff(updated_at,created_at)
case "cancelled" =>datediff(updated_at,created_at)
case "active" => datediff(updated_at, current_date())
case default => null
} })

共有1个答案

南门鸿振
2023-03-14

我认为您要做的是实现一个UDF:

import org.apache.spark.sql.functions.udf

val getSubscriptionDaysFunc = udf((account_status:String) =>  {
  account_status match {
    case "expired" =>//some logic
    case "cancelled" =>//some logic
    case "active" =>//some logic
    case default => null
  } 
})

df.withColumn("subscription_days", getSubscriptionDaysFunc($"account_status"))
 类似资料:
  • 我有一个JavaScript字符串(例如),我只想从中得到。 我试过: 它仍然在警报中返回,我如何让它工作? 它需要适应任何长度数字附加在结束。

  • 问题内容: 我将提取字符串中包含的所有数字。哪个更适合pur 例: 结果: 问题答案: 如果只想提取正整数,请尝试以下操作: 我认为这比正则表达式示例更好,原因有三点。首先,你不需要其他模块;其次,它更具可读性,因为你无需解析迷你语言;第三,它更快(因此可能更): 这将无法识别浮点数,负整数或十六进制格式的整数。如果你不能接受这些限制,则可以通过以下亭亭玉立的答案解决问题。

  • 问题内容: 我有一个包含Json的字符串。看起来像这样: 我正在尝试保留“ img_url”。我已经安装了Json.NET,并且在这里发现了类似的问题。 例如这样的事情: 在我来说,我改变到,etc..no运气 现在这是我的代码: 在提取值之前,是否必须对字符串做一些事情?谢谢! 问题答案: 不是根对象的属性-它是对象的属性: 另外的选择:

  • 问题内容: 我正在执行以下操作: 返回以下内容: 我只想知道此字段是“ URLField”。如何从此输出中提取出来? 注意:我这样做是为了对字段进行验证。例如,如果是url,我想检查它是否格式正确。 问题答案: 如果你这样做: 结果你可能无法获得。 相反,你正在这样做: 其中,作为解释在这里,不调用该方法,它只是指的是方法绑定方法的对象。返回值不是该绑定方法对象的一部分,它是在调用方法时由方法创建

  • 我有一个像下面给出的字符串: 4天:10000 我想从这个字符串中提取值10000,并在jquery中显示它。有人能说怎么做吗?

  • 问题内容: 我是新手,我有一个字符串,我想从字符串中提取数字。例如: 输出为 我只想获取一个整数,而不是列表。 问题答案: 您可以使用方法按 数字 字符串,