Преобразование 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},
]