Поля структуры запроса 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
        }

0 ответов

Другие вопросы по тегам