code: function generate(base, tuple, index) {
      var name = dims[index],
          v = vals[index++],
          k, key;
  
      for (k in v) {
        tuple[name] = v[k];
        key = base ? base + '|' + k : k;
        if (index < n) generate(key, tuple, index);
        else if (!curr[key]) aggr.cell(key, tuple);
      }
    }
docs: iterate over key cross-product, create cells as needed