DSPL Gen یک ابزار خط فرمان است که به تبدیل یک جدول داده CSV به یک مجموعه داده ساده DSPL کمک می کند. این ابزار فایل ورودی را تجزیه می کند، تمام جداول داده های لازم را ایجاد می کند و یک فایل DSPL XML را می سازد. نتیجه یک "الگوی" مجموعه داده تقریباً کامل است که قبل از آپلود و تجسم فقط به اصلاح جزئی نیاز دارد.
فرض اساسی پشت 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 شما تکرار میشود، تعاریف مفهومی را استخراج میکند و جداول برش را تولید میکند. مگر اینکه خطایی پیدا شود، یک فایل 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 بروید و نامها، توضیحات و آدرسهای مختلف موجود در ابرداده مجموعه داده را ویرایش کنید.
حاشیه نویسی CSV ورودی شما
گزینه های اساسی
در بسیاری از موارد، مانند مثال بالا، DSPL Gen میتواند ابردادههای اصلی هر ستون را حدس بزند، مثلاً نوع، قالب، و بعد یا متریک بودن آن. با این حال، در موارد دیگر، ابزار ممکن است نتواند این موارد را حدس بزند، ممکن است اشتباه حدس بزند، یا ممکن است درست حدس بزند، اما با این وجود، رفتار مورد نظر را دنبال نکند.
برای رسیدگی به این موارد، ابزار از افزودن گزینه های تولید DSPL / "اشاره ها" در ردیف سرصفحه CSV پشتیبانی می کند. نحو اینها به شرح زیر است:
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 ; اگر داده شود، مفهوم وارد می شود و هیچ تعریفی در فایل XML تولید نمی شود. | هیچ یک |
extends | مفهوم متعارفی که این ستون بسط می دهد، به عنوان مثال entity:entity . | هیچ یک |
parent | مفهوم والد برای این ستون. این والد باید یک مفهوم بعد تعریف شده در داخل مجموعه داده باشد (یعنی وارد نشده). اگر داده شود، این اطلاعات برای تعریف یک سلسله مراتب مفهومی در مجموعه داده استفاده خواهد شد. توجه داشته باشید که هر نمونه فرزند فقط می تواند یک والد داشته باشد. اگر چندین مقدار والد شناسایی شود، ابزار یک خطا ایجاد می کند. | هیچ یک |
جمع آوری ارزش ها
DSPL Gen علاوه بر گزینههای اساسی و «اشارهای» که در بالا توضیح داده شد، از جمعآوری برشها نیز پشتیبانی میکند: با توجه به یک ورودی جدول، این ابزار میتواند بهطور خودکار جداول اضافی با زیرمجموعههای محدودی از ابعاد ایجاد کند. بنابراین، به عنوان مثال، اگر جدول ورودی شما با یک برش با سه بعد غیر زمان (مثلاً، dimension1
1، dimension2
2 و dimensions3
3) مطابقت دارد، ابزار میتواند چند برش اضافی نیز ایجاد کند: 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
و اطمینان از وجود تنها یک ردیف "total" برای هر ترکیبی از ابعاد دیگر، به شما امکان می دهد تا مجموعه های از پیش محاسبه شده را مستقیماً در منبع ذخیره کنید.
هشدار: تعداد برش های ایجاد شده برابر با 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 ایجاد کنیم که دارای ویژگی های اضافی زیر باشد:
- کشورها را "لول" کنید تا مجموع موارد بیماری را تنها بر اساس گروه سنی بدست آوریم
- از مفهوم متعارف
geo:country
برای ستونcountry
استفاده کنید تا بتوانیم به طور خودکار نام کامل، مکان ها و غیره را برای این موارد بدست آوریم. - مفهوم
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
را در جدول منبع وارد نکرده بودیم، مجموع محاسبهشده برای هر گروه سنی را دریافت میکردیم.
علاوه بر این، تعریف disease_cases
در فایل XML اکنون شامل پسوند quantity:amount
، به دلخواه است. تعریف country
از فایل XML حذف شده است زیرا به جای آن از یک مفهوم وارداتی برای این کار استفاده می کنیم.
پس از پر کردن نامها، توضیحات و اطلاعات واحدهای مختلف، میتوانیم مجموعه دادهها را فشرده کرده و آن را برای تجسم در Public Data Explorer آپلود کنیم.