ژنرال DSPL

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 علاوه بر گزینه‌های اساسی و «اشاره‌ای» که در بالا توضیح داده شد، از جمع‌آوری برش‌ها نیز پشتیبانی می‌کند: با توجه به یک ورودی جدول، این ابزار می‌تواند به‌طور خودکار جداول اضافی با زیرمجموعه‌های محدودی از ابعاد ایجاد کند. بنابراین، به عنوان مثال، اگر جدول ورودی شما با یک برش با سه بعد غیر زمان (مثلاً، dimension1dimension2 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 ایجاد کنیم که دارای ویژگی های اضافی زیر باشد:

  1. کشورها را "لول" کنید تا مجموع موارد بیماری را تنها بر اساس گروه سنی بدست آوریم
  2. از مفهوم متعارف geo:country برای ستون 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 را در جدول منبع وارد نکرده بودیم، مجموع محاسبه‌شده برای هر گروه سنی را دریافت می‌کردیم.

علاوه بر این، تعریف disease_cases در فایل XML اکنون شامل پسوند quantity:amount ، به دلخواه است. تعریف country از فایل XML حذف شده است زیرا به جای آن از یک مفهوم وارداتی برای این کار استفاده می کنیم.

پس از پر کردن نام‌ها، توضیحات و اطلاعات واحدهای مختلف، می‌توانیم مجموعه داده‌ها را فشرده کرده و آن را برای تجسم در Public Data Explorer آپلود کنیم.