pyspark ADF:从具有属性和值的json对象中选择

3bygqnnd  于 2024-01-06  发布在  Spark
关注(0)|答案(1)|浏览(158)

其中一个Oracle REST API响应如下所示:

`{
                    "attributeId": 300000000227671,
                    "attributeName": "BUSINESS_UNIT",
                    "attributeType": "Number",
                    "attributeValue": "300000207138371",
                    "timeBuildingBlockId": 300000300319699,
                    "timeBuildingBlockVersion": 1
                },
                {
                    "attributeId": 300000000227689,
                    "attributeName": "LDG_ID",
                    "attributeType": "Number",
                    "attributeValue": "300000001228038",
                    "timeBuildingBlockId": 300000300319699,
                    "timeBuildingBlockVersion": 1
                }`

字符串
是否可以从这些项目中“选择”我们想要的列和值?我想提取attributeName为"attributeName_ID“的attributevalue。不幸的是,我绑定到Azure Data Factory或pyspark代码。
理想情况下,希望它像下面这样旋转:
| 联系我们|业务部门|
| --|--|
| 300000001228038 | 300000207138371 |

bvhaajcl

bvhaajcl1#

使用PySpark,你可以实现你的目标。
首先,使用JSON响应创建DataFrame。

df = spark.read.json(sc.parallelize([json_data]))

字符串
创建临时视图并通过Spark SQL获取结果。

df.createOrReplaceTempView("myTable")

result = spark.sql("""
    SELECT
        MAX(CASE WHEN attributeName = 'LOG_ID' THEN attributeValue END) AS LOG_ID,
        MAX(CASE WHEN attributeName = 'BUSINESS_UNIT' THEN attributeValue END) AS BUSINESS_UNIT
    FROM myTable
""")

result.show()


输出量:
| 联系我们|业务部门|
| --|--|
| 300000001228038 | 300000207138371 |

相关问题