簡體   English   中英

在 azure 突觸筆記本中使用 spark.sql 提取 json 列

[英]extract json column using spark.sql in azure synapse notebook

我有一個鑲木地板文件作為源,我使用 PySpark 筆記本加載了該鑲木地板文件,如下所示:

df_Employee = spark.read.parquet(<filename>)
df_Employee .createOrReplaceTempView("employee_data")

這是桌子的樣子


Employee Table:

-Name
-Salary
-Company
-Address (datatype=string)
 --street.name
 --street.number
 --postalcode
-JoiningDate

我有以下代碼,但我堅持如何從上面的 SQL 表中提取 street.name & street.number,這就是我所擁有的

df=spark.sql(f'''
select Name, Salary, Company, json_extract(Address,'$."street.name"') as StreetName
from employee_data
''')

但是json_extract(Address,'$."street.name"') 作為 StreetName會拋出錯誤。 如何提取這個嵌套的 json 字段?

我根據 Employee 表在我的環境中重現了相同的創建示例數據框:

dat1= [("vamsi", 20000, "MID", '{"street.name": "App socity", "street.number": "912", "postalcode": "523112"}', "2023-01-20"),
        ("rakesh",30000, "MID", '{"street.name": "Mind space", "street.number": "456", "postalcode": "600062"}', "2023-01-19")]
col = ["Name", "Salary", "Company", "Address", "JoiningDate"]

df1 = spark.createDataFrame(dat1, col)
df1.createOrReplaceTempView("sample_table")

在此處輸入圖像描述

您可以使用以下代碼實現相同的要求

df1 = spark.sql(f'''select Name, Salary, Company, json_tuple(Address, 'street.name', 'street.number') as (StreetName, StreetNumber)
from sample_table''')
df1.show()

在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM