首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用时间戳pyspark更新json列

使用时间戳pyspark更新json列
EN

Stack Overflow用户
提问于 2021-10-16 22:28:24
回答 1查看 50关注 0票数 0
代码语言:javascript
复制
+----------------+
|application_name|    
+----------------+
|{"application_name": "DIMENSIONS_USER",
  "dq_test_name": "contra_cp_dimension_agentpresence_isBillable_should_be_set"
}
+----------------+--------------------+-----------+

在这个我需要更新所有的rows..can的日期列值有人帮助我是新手,无法找到任何工作的解决方案

代码语言:javascript
复制
+----------------+
|application_name|    
+----------------+
|{"application_name": "DIMENSIONS_USER",
  "dq_test_name": "contra_cp_dimension_agentpresence_isBillable_should_be_set",
"date":01/001/2020
}
+----------------+
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-10-17 11:53:56

您可以定义一个UDF,它将为json字符串添加一个新值。

下面是一个例子:

代码语言:javascript
复制
from pyspark.sql import SparkSession
import pyspark.sql.functions as F
import json


def update_app_data(data):
    app_data = json.loads(data)
    app_data["date"] = "01/001/2020"
    return json.dumps(app_data)


if __name__ == "__main__":
    spark = SparkSession.builder.master("local").appName("Test").getOrCreate()
    application_data = {
        "application_name": "DIMENSIONS_USER",
        "dq_test_name": "contra_cp_dimension_agentpresence_isBillable_should_be_set",
    }
    data = [
        {
            "application_name": json.dumps(application_data),
        }
    ]
    df = spark.createDataFrame(data=data)
    update_app_data_udf = F.udf(lambda x: update_app_data(x))
    df = df.withColumn("application_name", update_app_data_udf(F.col("application_name")))

输入数据帧如下所示:

代码语言:javascript
复制
+---------------------------------------------------------------------------------------------------------------------+
|application_name                                                                                                     |
+---------------------------------------------------------------------------------------------------------------------+
|{"application_name": "DIMENSIONS_USER", "dq_test_name": "contra_cp_dimension_agentpresence_isBillable_should_be_set"}|
+---------------------------------------------------------------------------------------------------------------------+

输出:

代码语言:javascript
复制
+--------------------------------------------------------------------------------------------------------------------------------------------+
|application_name                                                                                                                            |
+--------------------------------------------------------------------------------------------------------------------------------------------+
|{"application_name": "DIMENSIONS_USER", "dq_test_name": "contra_cp_dimension_agentpresence_isBillable_should_be_set", "date": "01/001/2020"}|
+--------------------------------------------------------------------------------------------------------------------------------------------+
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69599976

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档