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 डेटासेट बनाना चाहते हैं, जिसमें सुविधाएँ:
- "रोल अप करो" ताकि हमें पूरी बीमारी हो जाए सिर्फ़ उम्र समूह के हिसाब से मामले
- कैननिकल
geo:country
इस्तेमाल करेंcountry
कॉलम की कॉन्सेप्ट जोड़ना होगा, ताकि हम अपने-आप इनके लिए पूरे नाम, जगह की जानकारी वगैरह पाएं 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
की परिभाषा को एक्सएमएल फ़ाइल से हटा दिया गया है, क्योंकि
तो हम इसके बजाय, इंपोर्ट किए गए कॉन्सेप्ट का इस्तेमाल कर रहे हैं.
नाम, ब्यौरा, और इकाई की जानकारी भरने के बाद, हम डेटासेट बंडल को ज़िप कर सकता है और विज़ुअलाइज़ेशन.