ডিএসপিএল জেনারেল

DSPL Gen হল একটি কমান্ড-লাইন ইউটিলিটি যা একটি CSV ডেটা টেবিলকে একটি সাধারণ DSPL ডেটাসেটে রূপান্তর করতে সাহায্য করে। টুলটি ইনপুট ফাইলটি পার্স করে, প্রয়োজনীয় সমস্ত ডেটা টেবিল তৈরি করে এবং একটি DSPL XML ফাইল তৈরি করে। ফলাফল হল একটি প্রায়-সম্পূর্ণ ডেটাসেট "টেমপ্লেট" যা আপলোড এবং ভিজ্যুয়ালাইজ করার আগে শুধুমাত্র সামান্য পরিমার্জন প্রয়োজন৷

DSPL Gen-এর পিছনে মৌলিক অনুমান হল যে ইনপুট CSV ফাইলের প্রতিটি কলাম একটি একক DSPL ধারণার সাথে মিলে যায় এবং প্রতিটি সারি মাত্রার সংমিশ্রণের জন্য একটি একক পর্যবেক্ষণ। টুলটি কলামগুলির মাধ্যমে পুনরাবৃত্তি করে, প্রতিটি কলাম/ধারণার জন্য উপযুক্ত মেটাডেটা স্থাপন করে (যেমন, এর আইডি, প্রকার, এটি একটি মাত্রা বা একটি মেট্রিক, ইত্যাদি) এবং তারপর প্রয়োজনীয় সমস্ত ধারণার সংজ্ঞা এবং স্লাইস টেবিল তৈরি করে। .

পরিচালনা করছেন ডিএসপিএল জেনারেল মো

বাক্য গঠন

দ্রষ্টব্য: এই নির্দেশাবলী অনুমান করে যে আপনি ইতিমধ্যেই DSPL টুল পৃষ্ঠায় দেওয়া ইনস্টলেশন নির্দেশাবলী অনুসরণ করেছেন।

DSPL Gen চালানোর জন্য, আপনার সিস্টেমের টার্মিনাল/প্রম্পটে যান এবং টাইপ করুন:

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

যেখানে বন্ধনীযুক্ত পদগুলি নিম্নরূপ প্রতিস্থাপিত হয়:

  • [output path] : ডিরেক্টরির পাথ যেখানে আপনি আপনার আউটপুট ফাইল স্থাপন করতে চান; এই ডিরেক্টরিটি আপনার ফাইল সিস্টেমে ইতিমধ্যেই বিদ্যমান থাকা আবশ্যক।
  • [path to CSV file] : আপনার ইনপুট CSV ফাইলের পথ। এই ফাইলটি কিভাবে ফরম্যাট করতে হয় তার আরো বিস্তারিত জানার জন্য নিচের বিভাগটি দেখুন।

-o [output path] উপাদান ঐচ্ছিক; যদি বাদ দেওয়া হয়, আউটপুট ফাইলগুলি বর্তমান ডিরেক্টরিতে স্থাপন করা হবে।

টুলটি তারপর চলে, আপনার CSV ফাইলের মাধ্যমে পুনরাবৃত্তি করে, ধারণার সংজ্ঞা বের করে এবং স্লাইস টেবিল তৈরি করে। কোনো ত্রুটি পাওয়া না গেলে, একটি XML ফাইল এবং এক বা একাধিক CSV ফাইল আউটপুট ডিরেক্টরিতে লেখা হয়।

অবশেষে, আপনার পছন্দের টেক্সট এডিটরে XML ফাইলটি খুলুন এবং যেকোন পছন্দসই পরিবর্তন করুন। সর্বনিম্নভাবে, আপনাকে ** INSERT ... ** স্বরলিপি দিয়ে টুল দ্বারা চিহ্নিত করা নাম, বিবরণ এবং অন্যান্য মানগুলি পূরণ করতে হবে৷

সহজ উদাহরণ

ধরুন আমাদের একটি CSV আছে যা মাস, দেশ এবং বয়সের ভিত্তিতে একটি রোগের মোট সংখ্যা দেয়। সরলতার জন্য, আসুন ধরে নিই প্রতিটি মাত্রার 2টি মান রয়েছে:

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 XML টেমপ্লেট
  • country_table.csv : country ধারণার মূল্যবোধ
  • age_group_table.csv : age_group ধারণার মান
  • slice_0_table.csv : ডেটাসেট স্লাইসের জন্য টেবিল (ইনপুট টেবিলের মতো, বাছাই ছাড়া)

এই বিশেষ ক্ষেত্রে, টুলটি সমস্ত কলামের ধরন এবং বিন্যাস সঠিকভাবে অনুমান করতে সক্ষম। সুতরাং, যা করা বাকি আছে তা হল XML ফাইলে যান এবং ডেটাসেট মেটাডেটাতে বিভিন্ন নাম, বিবরণ এবং URL গুলি সম্পাদনা করুন৷

আপনার ইনপুট CSV টীকা করা

মৌলিক বিকল্প

অনেক ক্ষেত্রে, উপরের উদাহরণের মতো, DSPL Gen প্রতিটি কলামের জন্য মৌলিক মেটাডেটা অনুমান করতে পারে, যেমন ধরন, বিন্যাস, এবং এটি একটি মাত্রা বা একটি মেট্রিক কিনা। অন্যান্য ক্ষেত্রে, যাইহোক, টুলটি এগুলি অনুমান করতে সক্ষম নাও হতে পারে, ভুল অনুমান করতে পারে বা সঠিকভাবে অনুমান করতে পারে কিন্তু তবুও, পছন্দসই আচরণ অনুসরণ করতে পারে না।

এই কেসগুলি পরিচালনা করার জন্য, টুলটি CSV হেডার সারিতে 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 কলাম date বা string টাইপ হলে dimension , অন্যথায় metric
concept এই কলামটি যে ক্যানোনিকাল ধারণাটি উপস্থাপন করে, যেমন geo:country ; যদি দেওয়া হয়, তাহলে ধারণাটি আমদানি করা হয় এবং XML ফাইলে কোনো সংজ্ঞা উত্পাদিত হয় না। কোনোটিই নয়
extends ক্যানোনিকাল ধারণা যা এই কলামটি প্রসারিত করে, যেমন entity:entity কোনোটিই নয়
parent

এই কলামের মূল ধারণা। এই প্যারেন্টটি অবশ্যই ডেটাসেটের ভিতরে সংজ্ঞায়িত একটি মাত্রা ধারণা হতে হবে (যেমন, আমদানি করা নয়); যদি দেওয়া হয়, এই তথ্য ডেটাসেটে একটি ধারণা শ্রেণিবিন্যাস সংজ্ঞায়িত করতে ব্যবহার করা হবে।

মনে রাখবেন যে প্রতিটি সন্তানের উদাহরণের শুধুমাত্র একজন পিতামাতা থাকতে পারে। যদি একাধিক প্যারেন্ট মান সনাক্ত করা হয় তাহলে টুলটি একটি ত্রুটি তৈরি করবে।

কোনোটিই নয়

মান রোল আপ

উপরে বর্ণিত মৌলিক, "ইঙ্গিত" বিকল্পগুলি ছাড়াও, DSPL Gen স্লাইস রোল-আপগুলিকেও সমর্থন করে: একটি একক টেবিল ইনপুট দেওয়া হলে, টুলটি স্বয়ংক্রিয়ভাবে মাত্রার সীমিত উপসেট সহ অতিরিক্ত টেবিল তৈরি করতে পারে। সুতরাং, উদাহরণস্বরূপ, যদি আপনার ইনপুট টেবিলটি তিনটি অ-সময়ের মাত্রা সহ একটি স্লাইসের সাথে মিলে যায় (যেমন, dimension1 , dimension2 , এবং dimensions3 ) টুলটি কিছু অতিরিক্ত স্লাইসও তৈরি করতে পারে: just dimension1 , just dimension2 , just dimension1 এবং dimension2 , ইত্যাদি

এই অতিরিক্ত স্লাইসগুলি যোগ করা আপনার ডেটাসেটকে অন্বেষণ করা সহজ করে তুলতে পারে কারণ এটি ভিজ্যুয়ালাইজেশন তৈরি করতে প্রয়োজনীয় মাত্রা ফিল্টারের সংখ্যা হ্রাস করে। অন্যদিকে, এই প্রক্রিয়াটি মূল ফাইলে পাওয়া "নতুন" ডেটা প্রবর্তন করতে পারে, তাই সঠিকভাবে ব্যবহার না করা হলে এটি ত্রুটিও প্রবর্তন করতে পারে; আপনার ডেটাসেট প্রকাশ করার আগে রোলড-আপ নম্বরগুলি সাবধানে পরীক্ষা করুন৷

ইনপুট CSV হেডারে কিছু অতিরিক্ত বিকল্প অন্তর্ভুক্ত করার মাধ্যমে রোল আপ প্রক্রিয়াটি ট্রিগার করা হয়:

অপশন বর্ণনা ডিফল্ট
aggregation এই কলামের একাধিক মান একত্রিত করার সময় ব্যবহার করা একত্রীকরণ পদ্ধতি; AVG , COUNT , MAX , MIN , বা SUM এর একটি হতে হবে ; শুধুমাত্র মেট্রিক্সের জন্য অর্থবহ। SUM
rollup মান true হলে, এই কলামের ধারণাটি "রোলড আপ" (অর্থাৎ, একত্রিত করা হয়); শুধুমাত্র মাত্রা ধারণার জন্য অর্থপূর্ণ। মিথ্যা
total_val এই কলামের মান যা এই কলামটি রোল-আপ করার সময় রাখা সারিগুলিকে নির্দেশ করে; শুধুমাত্র মাত্রা ধারণার জন্য অর্থপূর্ণ। None

DSPL Gen তারপর নিম্নলিখিত অ্যালগরিদম ব্যবহার করে রোল-আপগুলি গণনা করে:

  • rollup ট্যাগের মান ব্যবহার করে, সমস্ত সম্ভাব্য কলাম সমন্বয় গণনা করুন
  • প্রতিটি সংমিশ্রণের জন্য:
    • যদি কোনো রোলড-আপ কলামে একটি total_val প্যারামিটার সেট থাকে, তাহলে এই মান দ্বারা সারিগুলি ফিল্টার করুন; অন্যথায়, সমস্ত সারি নির্বাচন করুন
    • রোলড-আপ কলামগুলি ফেলে দিন
    • অবশিষ্ট মাত্রা কলামের মান অনুসারে সারিগুলিকে গোষ্ঠীবদ্ধ করুন
    • প্রতিটি মেট্রিক এর একত্রীকরণ প্যারামিটারে নির্দিষ্ট পদ্ধতি ব্যবহার করে aggregation করুন
    • ফলাফলের জন্য একটি স্লাইস এবং সংশ্লিষ্ট টেবিল তৈরি করুন

মনে রাখবেন যে যদি প্রতিটি গ্রুপিংয়ে শুধুমাত্র একটি একক মান থাকে এবং সমষ্টিগত ফাংশনটি SUM (ডিফল্ট মান) এ সেট করা থাকে, তাহলে উৎস এবং জেনারেট করা টেবিলের মেট্রিক মান একই হবে, অর্থাৎ কোনো নতুন মান তৈরি হবে না। এইভাবে, total_val প্যারামিটার ব্যবহার করে এবং অন্যান্য মাত্রার প্রতিটি সংমিশ্রণের জন্য শুধুমাত্র একটি "মোট" সারি আছে তা নিশ্চিত করার মাধ্যমে আপনি সরাসরি উৎসে প্রাক-গণনা করা সমষ্টি সংরক্ষণ করতে পারবেন।

সতর্কতা: উত্পন্ন স্লাইসের সংখ্যা 2 টি ঘূর্ণিত কলামের সমান। এই বিকল্পটি প্রচুর সংখ্যক কলামে প্রয়োগ করার ফলে খুব দীর্ঘ সময় এবং/অথবা বড় ডেটাসেট হতে পারে।

উন্নত উদাহরণ

ধরুন যে আমাদের কাছে আগের উদাহরণের মতো একই ইনপুট ডেটা আছে, কিন্তু এখন সারা দেশে সমষ্টি সহ:

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. country কলামের জন্য ক্যানোনিকাল geo:country ধারণাটি ব্যবহার করুন, যাতে আমরা স্বয়ংক্রিয়ভাবে এগুলোর সম্পূর্ণ নাম, অবস্থান ইত্যাদি পেতে পারি
  3. disease_cases ধারণাটিকে quantity:amount প্রসারিত করুন, যাতে আমরা (ম্যানুয়ালি) XML ফাইলে ইউনিট তথ্য যোগ করতে পারি

এটি করার জন্য, আমরা ইনপুট 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 ট্যাগ অন্তর্ভুক্ত না করতাম, তাহলে আমরা প্রতিটি বয়সের জন্য গণনা করা যোগফল পেতাম।

উপরন্তু, XML ফাইলে disease_cases এর সংজ্ঞা এখন quantity:amount থেকে এক্সটেনশন অন্তর্ভুক্ত করে, যেমন ইচ্ছা। country সংজ্ঞাটি XML ফাইল থেকে বাদ দেওয়া হয়েছে কারণ আমরা এর পরিবর্তে একটি আমদানি করা ধারণা ব্যবহার করছি।

বিভিন্ন নাম, বিবরণ এবং ইউনিট তথ্য পূরণ করার পরে, আমরা ডেটাসেট বান্ডেলটি জিপ করতে পারি এবং ভিজ্যুয়ালাইজেশনের জন্য পাবলিক ডেটা এক্সপ্লোরারে আপলোড করতে পারি।