Поля структуры запроса Spark SQL с повторяющимся именем
[Обновления: кажется, что ниже проблема затрагивает только блоки данных 10.x с литеральным представлением, взорванным (для расширения массива), запрос работает, как и ожидалось, в блоках данных 9.x]
При запросе df из JSON в виде структуры появляется следующая ошибка:
Error running query
Ambiguous reference to fields StructField(value,StringType,true), StructField(value,StringType,true)
Это потому, что я запрашиваю два поля с одинаковым именем (но не с одним и тем же путем)
select
postlist.string_map_data.Likes.value as PostLikeCount,
postlist.string_map_data.Comments.value as PostCommentCount
from newschema.insta_post_insights
lateral view explode(organic_insights_posts) AS postlist
Таким образом, два «значения» дублируются и вызывают эту ошибку. Любой метод запроса Spark SQL, который я мог бы создать что-то вроде
Переименование исходного df, вероятно, работает лучше всего, но это влияет на процесс ETL, который в данном случае неидеален. Цените, если кто-то может помочь. Данные JSON представляют собой типичный экспорт данных Instagram, как показано ниже.
"organic_insights_posts": [
{"string_map_data": {
"Creation timestamp": {
"href": "",
"value": "",
"timestamp": 123456789
},
"Profile visits": {
"href": "",
"value": "--",
"timestamp": 0
},
"Impressions": {
"href": "",
"value": "--",
"timestamp": 0
},
"Follows": {
"href": "",
"value": "--",
"timestamp": 0
},
"Accounts reached": {
"href": "",
"value": "--",
"timestamp": 0
},
"Saves": {
"href": "",
"value": "1",
"timestamp": 0
},
"Likes": {
"href": "",
"value": "1",
"timestamp": 0
},
"Comments": {
"href": "",
"value": "1",
"timestamp": 0
}