ฉันต้องเป็น language แฟ้มต่อไปนี้รูปแบบชุดสี:
root
|-- count: long (nullable = true)
|-- results: array (nullable = true)
| |-- element: struct (containsNull = true)
| | |-- address: string (nullable = true)
| | |-- auto_task_assignment: boolean (nullable = true)
| | |-- deleted_at: string (nullable = true)
| | |-- has_issues: boolean (nullable = true)
| | |-- has_timetable: boolean (nullable = true)
| | |-- id: long (nullable = true)
| | |-- name: string (nullable = true)
| | |-- opening_hours: string (nullable = true)
| | |-- phone_number: string (nullable = true)
| | |-- position_id: long (nullable = true)
| | |-- show_technical_time: boolean (nullable = true)
| | |-- structure_id: long (nullable = true)
| | |-- subcontract_number: string (nullable = true)
| | |-- task_modification: boolean (nullable = true)
| | |-- updated_at: string (nullable = true)
ฉันต้องการให้ผลการวิเคราะห์อาเรย์ต้องการได้รั DataFrame กับทุกคอลัมน์รายชื่อนี้แสดงในรูปแบบชุดสี
ตอนที่พยายามจะใช้เลือกแถลงการณ์ฉันได้รับข้อผิดพลาด
df.select("results.*").show()
เกิดข้อผิดพลาดข้อความ:
AnalysisException: Can only star expand struct data types. Attribute: `ArrayBuffer(results)`
คุณช่วยได้โปรดช่วยฉันยังตัวกรองนี้ language?
ตัวอย่างข้อมูล:
{'count': 11, 'next': None, 'previous': None, 'results': [{'id': 1, 'name': 'Samodzielny Publiczny Szpital Kliniczny Nr 1 PUM', 'external_id': None, 'structure_id': 1, 'address': '71-252 Szczecin, Ul. Unii Lubelskiej 1 ', 'phone_number': '+48123456789', 'opening_hours': 'pn-pt: 9:00-17:00', 'deleted_at': '2021-05-27T13:02:12.026410+02:00', 'updated_at': '2021-05-27T13:02:12.026417+02:00', 'position_id': None, 'has_timetable': True, 'auto_task_assignment': True, 'task_modification': False, 'has_issues': False, 'show_technical_time': False, 'subcontract_number': None}, {'id': 2, 'name': 'Szpital polowy we wrocławiu', 'external_id': None, 'structure_id': 2, 'address': 'North Montytown, 0861 Greenholt Crescent', 'phone_number': '+48505505505', 'opening_hours': '', 'deleted_at': None, 'updated_at': '2021-11-18T16:15:06.608476+01:00', 'position_id': 49, 'has_timetable': True, 'auto_task_assignment': False, 'task_modification': True, 'has_issues': True, 'show_technical_time': True, 'subcontract_number': '191919919; 191919191991; 19991919919; 1919919 191919919; 191919191991; 19991919919; 1919919....191919919; 191919191991; 19991919919; 1919919 191919919; 191919191991; 19991919919; 1919919191919919; 191919191991; 19991919919; 1919919 191919919; 1919191-255c'}, {'id': 3, 'name': 'Test', 'external_id': None, 'structure_id': 17, 'address': 'ul. Śliczna', 'phone_number': '+48500100107', 'opening_hours': '', 'deleted_at': None, 'updated_at': '2021-11-04T14:22:04.712607+01:00', 'position_id': 33, 'has_timetable': True, 'auto_task_assignment': True, 'task_modification': True, 'has_issues': True, 'show_technical_time': True, 'subcontract_number': '07001234'}]}
ฉันต้องเจอ workaround ใช้ Pandas DataFrame แต่การเล็งของฉันมันต้องทำมันโดยใช้ไฟ
enum = 0
for i in df['results']:
if enum == 0 :
df2 = pd.DataFrame(i, index=[0])
enum=+1
else:
df2 = df2.append(i, ignore_index=True)
คาดหวังผลลัพธ์คือต้องเก็บคอลัมน์จำนวนที่จะพูดเหมือนกับค่าแต่ละแถวด้วยและดึงเอาคอลัมน์จากผลตรวจ struct,คาดหวังชุดรูปแบบด้านล่างนี้:
root
|-- count: long (nullable = true)
|-- address: string (nullable = true)
|-- auto_task_assignment: boolean (nullable = true)
|-- deleted_at: string (nullable = true)
|-- has_issues: boolean (nullable = true)
|-- has_timetable: boolean (nullable = true)
|-- id: long (nullable = true)
|-- name: string (nullable = true)
|-- opening_hours: string (nullable = true)
|-- phone_number: string (nullable = true)
|-- position_id: long (nullable = true)
|-- show_technical_time: boolean (nullable = true)
|-- structure_id: long (nullable = true)
|-- subcontract_number: string (nullable = true)
|-- task_modification: boolean (nullable = true)
|-- updated_at: string (nullable = true)