DSPL जेन

DSPL Gen एक कमांड-लाइन यूटिलिटी है जो CSV डेटा टेबल को आसान DSPL डेटासेट में बदलें. यह टूल इनपुट को पार्स करता है फ़ाइल बनाता है, सभी ज़रूरी डेटा टेबल बनाता है, और DSPL एक्सएमएल फ़ाइल बनाता है. इसका नतीजा यह होता है कि डेटासेट करीब-करीब पूरा हो जाता है "टेंप्लेट" जिसे अपलोड करने और विज़ुअलाइज़ कर रहा है.

DSPL Gen के पीछे बुनियादी धारणा यह है कि हर कॉलम की इनपुट CSV फ़ाइल किसी एक DSPL सिद्धांत से मेल खाती है और हर पंक्ति का एक प्रयोग है. टूल इनके काम करता है: कॉलम के हिसाब से दोहराया जा रहा है और हर एक के लिए सही मेटाडेटा बनाया जा रहा है कॉलम / कॉन्सेप्ट (उदाहरण, इसका आईडी, टाइप, चाहे वह डाइमेंशन हो या मेट्रिक, वगैरह) और फिर सभी ज़रूरी कॉन्सेप्ट से जुड़ी परिभाषा और स्लाइस जनरेट करना टेबल.

DSPL Gen को चलाया जा रहा है

सिंटैक्स

ध्यान दें: इन निर्देशों में यह माना जाता है कि आप पहले ही इसे फ़ॉलो कर चुके हैं इंस्टॉल करने के निर्देश जो DSPL टूल पेज पर दिए गए हैं.

DSPL Gen चलाने के लिए, अपने सिस्टम के टर्मिनल / प्रॉम्प्ट पर जाएं और यह टाइप करें:

python dsplgen.py -o [output path] [path to CSV file] 

जहां ब्रैकेट में डाले गए शब्दों को इस तरह से बदला जाता है:

  • [output path]: उस डायरेक्ट्री का पाथ जहां आपको जाना है आपकी आउटपुट फ़ाइलों को रखा जाएगा; यह डायरेक्ट्री पहले से ही इसमें मौजूद होनी चाहिए आपका फ़ाइल सिस्टम.
  • [path to CSV file]: आपकी इनपुट CSV फ़ाइल का पाथ. ज़्यादा जानकारी के लिए, सेक्शन देखें, जहां इस फ़ाइल को फ़ॉर्मैट करें.

-o [output path] कॉम्पोनेंट ज़रूरी नहीं है; अगर इसे छोड़ दिया जाता है, तो आउटपुट फ़ाइलों को मौजूदा डायरेक्ट्री में रखा जाएगा.

इसके बाद, यह टूल आपकी CSV फ़ाइल में प्रोसेस करता है और कॉन्सेप्ट को एक्सट्रैक्ट करता है परिभाषाएं और स्लाइस टेबल जनरेट की जा सकती हैं. जब तक कोई गड़बड़ी नहीं मिलती, तब तक एक्सएमएल फ़ाइल और एक या ज़्यादा CSV फ़ाइलें आउटपुट डायरेक्ट्री में लिखी जाती हैं.

आखिर में, अपनी पसंद के टेक्स्ट एडिटर में एक्सएमएल फ़ाइल खोलें और कोई भी ज़रूरी बदलाव किया जा सकता है. कम से कम आपको नाम भरने चाहिए, ब्यौरा, और अन्य वैल्यू जिन्हें टूल ने ** INSERT ... ** नोटेशन.

आसान उदाहरण

मान लें कि हमारे पास एक CSV है, जो डेटा को महीने, देश, और उम्र के हिसाब से बांटकर दिखाया जाता है. सरलता के लिए, मान लें कि हर डाइमेंशन की दो वैल्यू हैं:

date,country,age_group,disease_cases
01/2000,US,old,102030
01/2000,MX,old,192939
01/2000,US,young,23131
01/2000,MX,young,12311
02/2000,US,old,143135
02/2000,MX,old,203131
02/2000,US,young,22990
02/2000,MX,young,12591

ऊपर दिए गए इनपुट पर टूल चलाने से 4 फ़ाइलें बनती हैं:

  • dataset.xml: DSPL एक्सएमएल टेंप्लेट
  • country_table.csv: country की वैल्यू कॉन्सेप्ट
  • age_group_table.csv: age_group कॉन्सेप्ट
  • slice_0_table.csv: डेटासेट स्लाइस के लिए टेबल (इसके बराबर है इनपुट टेबल, क्रम से लगाने के अलावा)

इस मामले में, यह टूल उन सभी कॉलम टाइप और फ़ॉर्मैट. इसलिए, बस एक्सएमएल फ़ाइल में और डेटासेट मेटाडेटा में कई नाम, जानकारी, और यूआरएल में बदलाव करें.

आपके इनपुट CSV की व्याख्या करना

बुनियादी विकल्प

ऊपर दिए गए उदाहरण की तरह, कई मामलों में, DSPL Gen सामान्य हर कॉलम के लिए मेटाडेटा, जैसे कि टाइप, प्रारूप, और क्या यह डाइमेंशन या मेट्रिक हो सकती है. हालांकि, अन्य मामलों में हो सकता है कि यह टूल वे इनका अनुमान लगाते हैं, गलत अनुमान लगा सकते हैं, या फिर भी सही अनुमान लगा सकते हैं, फिर भी, मनचाहे व्यवहार का पालन न करें.

ऐसे मामलों को हैंडल करने के लिए, यह टूल DSPL जनरेशन के विकल्प / "हिंट" डालें. इनका सिंटैक्स इस तरह से है अनुसरण करता है:

column1[option1=value1;option2=value2;...],column2[option1=value1;option2=value2;...],column3[...],...

विशेष रूप से, ध्यान दें कि विकल्पों की सूची ब्रैकेट पर क्लिक करें और सेटिंग को सेमी-कोलन से अलग किया जाता है. हर विकल्प में, विकल्प का नाम, बराबर का निशान, और विकल्प की वैल्यू.

फ़िलहाल, DSPL Gen इन बुनियादी विकल्पों के साथ काम करता है:

विकल्प ब्यौरा डिफ़ॉल्ट
type इस कॉलम के लिए DSPL डेटा टाइप; date में से एक होना चाहिए, float, integer या string. डेटा से अनुमान लगाया गया
format तारीख के इस कॉलम का फ़ॉर्मैट; की तरह DSPL, तब यह प्रारूप का इस्तेमाल करके कोड में बदला गया Joda DateTime स्टैंडर्ड. डेटा से अनुमान लगाया गया
slice_role किसी भी स्लाइस में इस कॉलम की क्या भूमिका है; इनमें से कोई एक होना चाहिए dimension या metric. dimension अगर कॉलम date टाइप का है या string, अन्य मामलों में metric
concept इस कॉलम में दिया गया कैननिकल सिद्धांत, उदाहरण के लिए geo:country; अगर दिया गया है, तो कॉन्सेप्ट इंपोर्ट किया जाता है और नहीं एक्सएमएल फ़ाइल में परिभाषा बनाई जाती है. कोई नहीं
extends इस कॉलम में मौजूद कैननिकल सिद्धांत, जैसे कि entity:entity. कोई नहीं
parent

इस कॉलम का पैरंट कॉन्सेप्ट. यह पैरंट कोई डाइमेंशन होना चाहिए डेटासेट में दिया गया कॉन्सेप्ट (यानी, इंपोर्ट नहीं किया गया); अगर दिया गया हो, इस जानकारी का इस्तेमाल डेटासेट.

ध्यान दें कि हर चाइल्ड इंस्टेंस में सिर्फ़ एक पैरंट हो सकता है. अगर एक से ज़्यादा पैरंट वैल्यू का पता चलता है, तो टूल गड़बड़ी दिखाएगा.

कोई नहीं

वैल्यू रोल-अप

बुनियादी "सुझाव" के अलावा विकल्प ऊपर बताए गए हैं. DSPL Gen, स्लाइस रोल-अप के साथ भी काम करता है: इसमें सिर्फ़ एक टेबल होती है इनपुट के लिए, टूल अपने-आप कुछ ऐसी टेबल बना सकता है जिनमें सीमित डाइमेंशन के सबसेट. उदाहरण के लिए, अगर आपकी इनपुट टेबल तीन नॉन-टाइम डाइमेंशन वाला स्लाइस (उदाहरण के लिए, dimension1, dimension2, और dimensions3) टूल ये काम कर सकता है कुछ अतिरिक्त स्लाइस भी बनाएं: बस dimension1, सिर्फ़ dimension2, सिर्फ़ dimension1 और dimension2 वगैरह.

इन अतिरिक्त स्लाइस को जोड़ने से आपके डेटासेट को एक्सप्लोर करना आसान हो सकता है क्योंकि यह प्रोडक्शन के लिए ज़रूरी डाइमेंशन फ़िल्टर की संख्या को कम करता है विज़ुअलाइज़ेशन. दूसरी ओर, इस प्रोसेस में "नया" शामिल हो सकता है मूल फ़ाइल में डेटा नहीं मिला, इसलिए यदि यह नहीं मिलता है, तो यह भी त्रुटियां हो सकती हैं. सही तरीके से इस्तेमाल किया गया हो; अपनी डेटासेट.

इसमें कुछ अतिरिक्त विकल्प शामिल करने से, रोल अप प्रोसेस ट्रिगर होती है CSV हेडर डालें:

विकल्प ब्यौरा डिफ़ॉल्ट
aggregation एक से ज़्यादा वैल्यू को मिलाने के लिए, इस्तेमाल किया जाने वाला एग्रीगेशन का तरीका डालें; AVG, COUNT, में से एक होना चाहिए MAX, MIN या SUM; सिर्फ़ मेट्रिक के लिए अर्थपूर्ण. SUM
rollup अगर मान true है, तो इस कॉलम को "रोल अप किया गया" है (उदाहरण के लिए, एग्रीगेट किया गया अवे मोड); जो सिर्फ़ डाइमेंशन के कॉन्सेप्ट के लिए काम के हों. गलत
total_val इस कॉलम का वह मान जो इस स्थिति में पंक्तियों को रखे जाने के बारे में बताता है कॉलम रोल-अप होता है; जो सिर्फ़ डाइमेंशन के कॉन्सेप्ट के लिए काम के हों. None

इसके बाद, DSPL Gen इस एल्गोरिदम का इस्तेमाल करके, रोल-अप का हिसाब लगाता है:

  • rollup टैग की वैल्यू का इस्तेमाल करके, सभी संभावित कन्वर्ज़न वैल्यू का पता लगाएं कॉलम के कॉम्बिनेशन
  • हर कॉम्बिनेशन के लिए:
    • अगर किसी रोल-अप कॉलम में total_val पैरामीटर है सेट करने के बाद इन पंक्तियों को इस वैल्यू के हिसाब से फ़िल्टर करें; अगर ऐसा नहीं है, तो सभी लाइन चुनें
    • रोल-अप कॉलम को छोड़ना
    • बाकी डाइमेंशन कॉलम की वैल्यू के हिसाब से पंक्तियों को ग्रुप करें
    • हर मेट्रिक को एग्रीगेट करने के लिए, aggregation पैरामीटर
    • नतीजे के लिए स्लाइस और उससे जुड़ी टेबल बनाएं

ध्यान दें कि अगर हर ग्रुप में सिर्फ़ एक वैल्यू है और एग्रीगेशन फ़ंक्शन को SUM (डिफ़ॉल्ट वैल्यू) पर सेट किया जाता है, फिर सोर्स और जनरेट की गई टेबल में मेट्रिक की वैल्यू एक जैसी रहेंगी, जैसे कि कोई नई वैल्यू नहीं होगी जनरेट होते हैं. इसलिए, total_val पैरामीटर का इस्तेमाल करके और पक्का करें कि कि इस तरह के सभी एक-दूसरे के हर कॉम्बिनेशन के लिए लाइन डाइमेंशन की मदद से, पहले से कंप्यूट किए गए एग्रीगेट को सीधे सोर्स में स्टोर किया जा सकता है.

चेतावनी: जनरेट किए गए स्लाइस की संख्या रोल अप किए गए दो कॉलम के बराबर होते हैं. इस विकल्प को बड़े पैमाने पर लागू की वजह से कॉलम की संख्या बहुत ज़्यादा और/या बहुत ज़्यादा हो सकती है डेटासेट.

बेहतर उदाहरण

मान लें कि हमारे पास वही इनपुट डेटा है जो पिछले उदाहरण में दिखाया गया है, लेकिन अब यह एग्रीगेट किया गया डेटा सभी देशों में लागू होता है:

date,country,age_group,disease_cases
01/2000,US,old,102030
01/2000,MX,old,192939
01/2000,total,old,152012
01/2000,US,young,23131
01/2000,MX,young,12311
01/2000,total,young,241011
02/2000,US,old,143135
02/2000,MX,old,203131
02/2000,total,old,211310
02/2000,US,young,22990
02/2000,MX,young,12591
02/2000,total,young,240131

यह ज़रूरी नहीं है कि हर उम्र समूह की कुल वैल्यू, देश के कुल आंकड़ों से मेल खाए क्योंकि, उदाहरण के लिए, क्रियाविधि या मौजूदगी में अंतर जिन्हें सूची में शामिल नहीं किया गया है.

अब हम एक ऐसा DSPL डेटासेट बनाना चाहते हैं, जिसमें सुविधाएँ:

  1. "रोल अप करो" ताकि हमें पूरी बीमारी हो जाए सिर्फ़ उम्र समूह के हिसाब से मामले
  2. कैननिकल geo:country इस्तेमाल करें country कॉलम की कॉन्सेप्ट जोड़ना होगा, ताकि हम अपने-आप इनके लिए पूरे नाम, जगह की जानकारी वगैरह पाएं
  3. disease_cases कॉन्सेप्ट को quantity:amount तक बढ़ाएं, ताकि हम (मैन्युअल रूप से) एक्सएमएल फ़ाइल में यूनिट की जानकारी जोड़ सकें

ऐसा करने के लिए, हम इनपुट CSV की हेडर लाइन में इस तरह बदलाव करते हैं:

date,country[concept=geo:country;rollup=true;total_val=total],age_group,disease_cases[extends=quantity:amount]

टूल को फिर से इस्तेमाल करने पर, हमें एक और स्लाइस टेबल मिलती है. देश के आधार पर भेद खत्म करता है:

date,age_group,disease_cases
01/2000,old,152012
02/2000,old,211310
01/2000,young,241011
02/2000,young,240131

ध्यान दें कि यदि हमने कुल मान और total_val टैग शामिल होता है, तो हमें हर उम्र समूह के लिए, कुल योग को कैलकुलेट किया जाता है.

इसके अलावा, एक्सएमएल फ़ाइल में disease_cases की परिभाषा अब इसमें quantity:amount का एक्सटेंशन शामिल है. कॉन्टेंट बनाने country की परिभाषा को एक्सएमएल फ़ाइल से हटा दिया गया है, क्योंकि तो हम इसके बजाय, इंपोर्ट किए गए कॉन्सेप्ट का इस्तेमाल कर रहे हैं.

नाम, ब्यौरा, और इकाई की जानकारी भरने के बाद, हम डेटासेट बंडल को ज़िप कर सकता है और विज़ुअलाइज़ेशन.