Преобразование pivot

Преобразование pivot ≥ 3.2 превращает уникальные значения поля в новые агрегированные поля (столбцы) выходного потока. Нужно указать поле, чьи значения станут именами столбцов, и поле, значения которого будут агрегированы для заполнения новых ячеек. Можно также задать любое число полей groupby, чтобы разделить данные на выходные объекты (строки).

pivot полезен для создания матриц и перекрёстных таблиц; его действие обратно преобразованию fold.

Параметры преобразования

Свойство Тип Описание
field Field Обязательно. Поле, по значениям которого выполняется поворот таблицы. Его уникальные значения становятся именами новых выходных полей.
value Field Обязательно. Поле со значениями для новых столбцов. Агрегаты этого поля заполняют повёрнутые столбцы.
groupby Field[ ] Необязательные поля для группировки. Если не заданы, все объекты данных образуют одну группу.
limit Number Максимальное число создаваемых столбцов. Значение 0 по умолчанию снимает ограничение. Перед применением ограничения имена из field сортируются по возрастанию.
op String Агрегирующая операция для значений поля value внутри группы (по умолчанию sum). Подробнее см. справочник агрегирующих операций.

Агрегирующие операции pivot

Поддерживаются все агрегирующие операции.

Использование

Для следующих входных данных:

[
  {"country": "Norway",  "type": "gold",   "count": 14},
  {"country": "Norway",  "type": "silver", "count": 14},
  {"country": "Norway",  "type": "bronze", "count": 11},
  {"country": "Germany", "type": "gold",   "count": 14},
  {"country": "Germany", "type": "silver", "count": 10},
  {"country": "Germany", "type": "bronze", "count":  7},
  {"country": "Canada",  "type": "gold",   "count": 11},
  {"country": "Canada",  "type": "silver", "count":  8},
  {"country": "Canada",  "type": "bronze", "count": 10}
]

преобразование pivot:

{
  "type": "pivot",
  "groupby": ["country"],
  "field": "type",
  "value": "count"
}

создаёт результат:

[
  {"country": "Norway",  "gold": 14, "silver": 14, "bronze": 11},
  {"country": "Germany", "gold": 14, "silver": 10, "bronze":  7},
  {"country": "Canada",  "gold": 11, "silver":  8, "bronze": 10},
]