title: Does Crossfilter require a flat data structure?
body: <p>All the examples of Crossfilter I've found use a flat structure like this:</p>
  
  <pre><code>[
    { name: “Rusty”,  type: “human”, legs: 2 },
    { name: “Alex”,   type: “human”, legs: 2 },
    ...
    { name: “Fiona”,  type: “plant”, legs: 0 }
  ]
  </code></pre>
  
  <p>or</p>
  
  <p><code>
  "date","open","high","low","close","volume","oi" 11/01/1985,115.48,116.78,115.48,116.28,900900,0 11/04/1985,116.28,117.07,115.82,116.04,753400,0
  11/05/1985,116.04,116.57,115.88,116.44,876800,0
  </code></p>
  
  <p>I have hundreds of MBs of flat files I process to yield a 1-2MB JSON object with a structure roughly like:</p>
  
  <pre><code>{
    "meta": {"stuff": "here"},
    "data": {
      "accountName": {
        // rolled up by week
        "2013-05-20": {
          // any of several "dimensions"
          "byDay": {
            "2013-05-26": {
              "values": {
                "thing1": 1,
                "thing2": 2,
                "etc": 3
              }
            },
            "2013-05-27": {
              "values": {
                "thing1": 4,
                "thing2": 5,
                "etc": 6
              }
            }
            // and so on for day
          },
          "bySource": {
            "sourceA": {
              "values": {
                "thing1": 2,
                "thing2": 6,
                "etc": 7
              }
            },
            "sourceB": {
              "values": {
                "thing1": 3,
                "thing2": 1,
                "etc": 2
              }
            }
          }
        }
      }
    }
  }
  </code></pre>
  
  <p>Which I'd like to display as a table like:</p>
  
  <pre><code>Group: byDay* || bySource || byWhatever
  
             | thing1 | thing2 | etc
  2013-05-26 |      1 |      2 |   2
  2013-05-27 |      4 |      5 |   7
  </code></pre>
  
  <p>or:</p>
  
  <pre><code>Group: byDay || bySource* || byWhatever
  
             | thing1 | thing2 | etc
  sourceA    |      2 |      6 |   6
  sourceB    |      3 |      1 |   3
  </code></pre>
  
  <p>Flattening this JSON structure would be difficult and yield a <em>very large</em> object.</p>
  
  <p>I'd love to take advantage of Crossfilter's wonderful features, but I'm unsure if it's possible.</p>
  
  <p>Is it possible for me to define/explain my current structure to Crossfilter? Perhaps there's another way I could approach this? I'll readily admit that I don't have a good grasp on dimensions and many other key Crossfilter concepts.</p>