Прежде всего, я должен указать, что ваши данные денормализованы, поэтому подсчет, который вы получаете, может быть несколько запутанным, независимо от того, какую технику вы используете.
При стандартном использовании перекрестного фильтра каждая строка будет учитываться ровно в одной ячейке, и все ячейки в группе будут складываться до 100%. Однако в вашем случае каждая строка будет учитываться дважды (если только два поля не совпадают), поэтому, например, круговая диаграмма не имеет никакого смысла.
Тем не менее, «размер тега» идеально подходит для того, что вы пытаетесь сделать.
Объявление измерения может быть простым:
var tagDimension = cf.dimension(function(d) { return [d.field1,d.field2]; }, true);
Теперь каждая строка будет учитываться дважды - это измерение и связанные с ним группы будут действовать точно так же, как если бы каждая из строк была продублирована: одна копия проиндексирована field1
, а другая - field2
.
Если вы сделали гистограмму с этим, скажем, общее количество будет 2N минус число строк, где field1 === field2
. Если вы нажмете на полосу «b», все строки, которые имеют «b» в обоих полях, будут выделены. Это влияет только на группы, построенные на этом измерении, поэтому любые другие диаграммы будут видеть только одну копию каждой строки.