Преобразование cross
Преобразование cross вычисляет декартово произведение потока данных с самим собой.
Параметры преобразования
| Свойство | Тип | Описание |
|---|---|---|
| filter | Expr | Необязательное выражение фильтра, ограничивающее элементы декартова произведения. |
| as | Array | Имена выходных полей для двух объектов каждой пары (по умолчанию ["a", "b"]). |
Использование
Для входных данных [{v:1}, {v:2}, {v:3}] описание преобразования:
{"type": "cross"}
создаёт результат:
[
{"a": {"v": 1}, "b": {"v": 1}},
{"a": {"v": 1}, "b": {"v": 2}},
{"a": {"v": 1}, "b": {"v": 3}},
{"a": {"v": 2}, "b": {"v": 1}},
{"a": {"v": 2}, "b": {"v": 2}},
{"a": {"v": 2}, "b": {"v": 3}},
{"a": {"v": 3}, "b": {"v": 1}},
{"a": {"v": 3}, "b": {"v": 2}},
{"a": {"v": 3}, "b": {"v": 3}}
]
При тех же входных данных преобразование с фильтром:
{"type": "cross", "filter": "datum.a !== datum.b"}
создаёт результат:
[
{"a": {"v": 1}, "b": {"v": 2}},
{"a": {"v": 1}, "b": {"v": 3}},
{"a": {"v": 2}, "b": {"v": 1}},
{"a": {"v": 2}, "b": {"v": 3}},
{"a": {"v": 3}, "b": {"v": 1}},
{"a": {"v": 3}, "b": {"v": 2}}
]