2013-06-14 6 views
10

सभी Crossfilter का उदाहरण मैं इस तरह उपयोग एक फ्लैट संरचना मिल गया है:क्या क्रॉसफिल्टर को एक फ्लैट डेटा संरचना की आवश्यकता है?

[ 
    { name: “Rusty”, type: “human”, legs: 2 }, 
    { name: “Alex”, type: “human”, legs: 2 }, 
    ... 
    { name: “Fiona”, type: “plant”, legs: 0 } 
] 

या

"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

मैं फ्लैट फ़ाइलों के एमबीएस के सैकड़ों है मैं एक 1- उपज की प्रक्रिया एक संरचना मोटे तौर पर की तरह साथ 2MB JSON ऑब्जेक्ट:

{ 
    "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 
      } 
      } 
     } 
     } 
    } 
    } 
} 

कौन सा मैं चाहता की तरह एक तालिका के रूप में प्रदर्शित करने के लिए:

Group: byDay* || bySource || byWhatever 

      | thing1 | thing2 | etc 
2013-05-26 |  1 |  2 | 2 
2013-05-27 |  4 |  5 | 7 

या:

Group: byDay || bySource* || byWhatever 

      | thing1 | thing2 | etc 
sourceA |  2 |  6 | 6 
sourceB |  3 |  1 | 3 

इस JSON संरचना सपाट मुश्किल हो सकता है और एक बहुत बड़ी वस्तु प्राप्त करेगी।

मुझे क्रॉसफिल्टर की अद्भुत विशेषताओं का लाभ उठाना अच्छा लगेगा, लेकिन अगर यह संभव है तो मुझे यकीन नहीं है।

क्या मेरे लिए क्रॉसफिल्टर को मेरी वर्तमान संरचना को परिभाषित/व्याख्या करना संभव है? शायद एक और तरीका है कि मैं इस से संपर्क कर सकता हूं? मैं आसानी से स्वीकार करूंगा कि मुझे आयामों और कई अन्य महत्वपूर्ण क्रॉसफिल्टर अवधारणाओं पर अच्छी समझ नहीं है।

उत्तर

6

क्रॉसफ़िल्टर रिकॉर्ड्स की एक सरणी पर काम करता है, जिसमें सरणी के प्रत्येक तत्व को आयामों के माध्यम से एक या अधिक मानों में मैप किया जा रहा है (जिसे एक्सेसर फ़ंक्शंस का उपयोग करके परिभाषित किया जाता है)।

यहां तक ​​कि अगर आपके डेटा समस्त परिणाम होता है, आप Crossfilter के साथ इस का उपयोग कर सकते हैं, लेकिन ध्यान दें यह तकनीकी रूप से असंभव डेटा है कि इस तरह के "दिन" और "द्वारा स्रोत से संयोजन जैसे विभिन्न आयामों का में इकट्ठा किया गया है गठबंधन करने के लिए है कि "उपरोक्त आपके उदाहरण में डेटा। आप प्रत्येक समेकित आयाम के लिए क्रॉसफिल्टर बना सकते हैं, उदा। एक "दिन के लिए", और इस पर क्वेरी और समूह चलाएं, लेकिन मुझे यकीन नहीं है कि आपके पास पहले से क्या तुलना की जा सकती है।

मेमोरी उपयोग के लिए, क्या आप वाकई अपनी चपटा संरचना को फ़्लैट करना वास्तव में समस्याग्रस्त हो जाएंगे? ध्यान रखें कि प्रत्येक रिकॉर्ड (flattened सरणी का तत्व) संदर्भ आपके घोंसले की संरचना में तारों और अन्य वस्तुओं के लिए हो सकता है, तो आप जरूरी नहीं कि सभी मेमोरी का उपयोग करें।

+0

मैंने डेटा से कुछ विचारों को दिखाने के लिए अपना प्रश्न संपादित कर लिया है। मुझे यकीन नहीं है कि मैं डेटा संरचना को कैसे फ़्लैट करूँगा। इसमें रोलअप/समेकित मान शामिल हैं (कच्चे नहीं)। क्या उपर्युक्त उदाहरण https://gist.github.com/jfsiii/5786087 जैसे किसी चीज़ पर फ़्लैट होगा? किसी भी अधिसूचना स्पैम के लिए खेद है। मैं सीख रहा हूं कि टिप्पणी टेक्स्टफील्ड में प्रश्न टेक्स्टफील्ड की तुलना में अलग व्यवहार है। – user2487135

+0

आपके उदाहरण विचार आपके डेटा के टैब्यूलर रूप हैं। क्या आप क्रॉसफिल्टर को दिखाने के लिए इच्छित प्रश्नों (समूहों या फ़िल्टर) का उदाहरण दे सकते हैं? –

+0

मैंने समेकन के संयोजन के बारे में आपके प्रश्न को हल करने के लिए उत्तर अपडेट किया है। –

संबंधित मुद्दे