Nano Hash - криптовалюты, майнинг, программирование

Сопоставьте два столбца в один на Athena, используя свойства SerDe

Я пытаюсь сопоставить два столбца в один на Афине, используя свойства JsonSerDe.

В этом случае я хочу отобразить оба столбца conversionsRate и cr из jsons 1 и 2 в столбец cr_new (как при объединении).

json1

{
  "deviceType": "TABLET",
  "day": "2018-10-27",
  "conversionsRate": 0,
  "clicksCount": 3
}

json2

{
  "deviceType": "TABLET",
  "day": "2018-10-29",
  "cr": 2,
  "clicksCount": 5
}

Ожидаемый результат на Афине:

|deviceType|day       |cr_new|clicksCount|
|TABLET    |2018-10-27|0     |3          |
|TABLET    |2018-10-29|2     |5          |

Можно ли добиться такого результата при отображении таблиц athena с помощью SerDe?


Ответы:


1

JSON SerDe не требует (не ограничивает), что столбец, определенный в таблице DDL, должен существовать в записи JSON. Если такого атрибута нет, JSONSerDe вернет NULL. Итак, вы можете определить оба столбца и применить объединение в запросе:

CREATE EXTERNAL TABLE json_table (
  devicetype      string,
  `day`           date,
  cr              int,
  conversionsrate int,
  clickscount     int
 )
 ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe'
 LOCATION 's3://bucket/path/'; --JSON files location
                               --make sure JSONs are in separate lines each

select deviceType, `day`, coalesce(conversionsRate ,cr) as cr_new, clicksCount 
  from json_table ;
16.09.2019
  • Вы также можете определить VIEW поверх таблицы, чтобы пользователям не приходилось coalesce самостоятельно. Документы Athena VIEW: docs.aws.amazon.com/athena/ latest / ug / create-view.html, документы Presto view: prestosql.io/docs/current/sql/create-view.html 16.09.2019
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..