ستاکسپرژنها در کلیکویو
کلیکویو یک برنامه یا اپلیکیشن(Application) برپایه معماری سهلایه برای جمعآوری دادهها از منابع مختلف همانند دیتابیسهایی چون اوراکل و یا اسکیوال، صفحه گستردهها همانند اکسل فایل، فایلهای متنی و ... و ذخیره این دادهها درون یک فایل از نوع داده کلیکویو میباشد، پس از جمعآوری و ذخیره دادهها، ساختار مدل دادهای تهیهمیگردد و در نهایت کاربر میتواند از آن برای تهیه داشبورد مورد نظر استفادهنماید. کلیکویو در برخورد با داده، آنها را همچون یک مجموعه میبیند، این بدین معنی است که هر جدول از دادهها درقالب یک یا چند مجموعه مدلسازی میگردد. با این روش تمامی عملیاتهای مرتبط با نظریه مجموعهها همانند اشتراک، اجتماع، متمم و ... بر روی دادهها قابل انجام است. دستوراتی چون Aggr و یا عبارات مجموعهای(Set Experssions) در کلیکویو به داده همچون عضوی از یک مجموعه(منظور از مجموعه مفهوم ریاضی آن در نظریه مجموعهها میباشد) نگاه میکنند. ستاکسپرژن برای تعریف و مشخصکردن محدوده یک محاسبه استفاده می شود(برای نمونه، وقتی میخواهیم دستور sum را اجرا کنیم با استفاده از ستاکسپرژن میتوانیم محدودهای را که میخواهیم عمل جمع انجام شود را مشخص کنیم(چیزی شبیه دستور where در SQL). در اینجا میخواهیم نحوه تعریف و استفاده از عبارات مجموعهای را در کلیکویو بررسی کنیم.
بخش مرکزی و قلب ستاکسپرژن، ستمدیفایر است، که شرطهای مورد نیاز را مشخص میکند.
ستمدیفایر از یک یا چند نام فیلد به همراه مقدار یا مقدارهایی که این فیلدها میتوانند داشتهباشند ساختهشدهاست. ستمدیفایر درون علامتهای > و < قرارمیگیرد. اگر با کلیکویو کارکردهباشید میدانید که میتوان مقدارهای برخی فیلدها را توسط کاربر مشخص کرد، لذا ستمدیفایر را میتوان همراه یا مجزا از آنها استفاده نمود(شاید این مطلب گنگ باشد اما مثالها همهچیز را روشن خواهدنمود)، این کار با ستآیدنتیفایر مشخصمیگردد.
در کلیکویو یک ستاکسپرژن بهصورت زیر تعریف میگردد:
به کل بخش سبزرنگ یک ستاکسپرژن گفتهمیشود و هر ستاکسپرژن با { شروع و با } پایان مییابد و شامل سه بخش میباشد:
- ستمدیفایر(Set modifier): که شامل شرط یا شروطی است که باید اعضای مجموعه، آن را دارا باشند.
- ستآیدنتیفایر(Set identifier): مشخص میکند آیا میخواهیم انتخابهای فعلی مدنظر باشد یا خیر(با مثالهایی متوجه خواهید شد منظور چیست)
- ستاوپریتور(Set operator): عملیاتی را که نیاز داریم میان مجموعهها انجامدهیم را شامل میشود(اشتراک، اجتماع و ...)
♦ ستمدیفایر: با > آغاز و با < پایان مییابد، در میان این دو علامت نام فیلد(فیلدها) و مقادیری که لازم است آن فیلد(فیلدها) بهخود بگیرد(بگیرند) مشخص میگردد.:
| ستمدیفایر | شرح |
|---|---|
| <Year={1400}> | همه اعضای مجموعه باید مقدار فیلد Year برایشان 1400 باشد. |
| <Year={1400,1401}> | همه اعضای مجموعه باید مقدار فیلد Year برایشان 1400 یا 1401 باشد. |
| <Year={1400,1401},Name={A,B}> | همه اعضای مجموعه باید مقدار فیلد Year برایشان 1400 یا 1401 باشد و فیلد Name مقادیر A یا B داشته باشد. |
| <Year={$(=Max(Year))}> | همه اعضای مجموعه باید مقدار فیلد Year برایشان برابر با بیشترین مقدار فیلد Year باشد(علامت $(...) مقدار تابع درونش را برمیگرداند). |
| <Year={">1399"}> | همه اعضای مجموعه باید مقدار فیلد Year برایشان بزرگتراز 1399 باشد. |
| <Name={"Far*"}> | همه اعضای مجموعه باید فیلد Name برایشان با Far آغاز شود(مانند Farshid و Farhad و ...). |
| <Year={">1390<1400"}> | همه اعضای مجموعه باید فیلد Year برایشان بزرگتراز 1390 و کوچگتراز 1400 باشد(تنها روی فیلد عددی امکان پذیر است). |
موارد دیگری نیز هست که به مرور در همین سایت آموزش دادهخواهدشد اما توجهکنید هر ترکیبی از این موارد را میتوانید استفادهنمایید.
♦ ستآیدنتیفایر: یک ستآیدنتیفایر مقادیر زیر را بخود میگیرد:
| ستآیدنتیفایر | شرح |
|---|---|
| 1 | با این دستور به کلیکویو میگویید برای اجرای ستمدیفایر کلیه رکوردها(بدون درنظر گرفتن انتخابهای انجام شده) را در نظر بگیرد. |
| $ | با این دستور به کلیکویو میگویید برای اجرای ستمدیفایر فقط رکوردها انتخابشده را در نظر بگیرد(پیش فرض کلیکویو علامت $ است لذا عدم استفاده از آن همین نتیجه را برمیگرداند. |
| $1 | با این دستور به کلیکویو میگویید برای اجرای ستمدیفایر فقط رکوردها انتخابشده در مرحله پیشین را درنظر بگیرد، درنتیجه $2 به معنای 2 انتخاب پیشین است و به همین صورت. |
| $_1 | با این دستور به کلیکویو میگویید برای اجرای ستمدیفایر فقط رکوردها انتخابشده در مرحله بعدی را درنظر بگیرد، درنتیجه $_2 به معنای 2 انتخاب بعدی است و به همین صورت. |
| BM01 | با این دستور به کلیکویو میگویید برای اجرای ستمدیفایر فقط رکوردها انتخابشده در بوکمارک با نشانه(ID)BM01 در نظر بگیرد. |
♦ ستاوپریتور: یک ستاوپریتور مقادیر زیر را بخود میگیرد:
| ستاوپریتور (عملگر) | شرح |
|---|---|
| + | اجتماع، یک مجموعه جدید حاصل از اجتماع رکوردهای مربوط به هر دوی ستمدیفایرها. |
| - | تفاضل، مجموعهای حاصل از رکوردهایی که در مجموعه اول وجود دارد اما در مجموعه دوم نیست. |
| * | اشتراک، مجموعهای از رکوردها که در هر دو مجموعه وجود دارند. |
| / | تفاضلمتقارن، مجموعهای از رکوردها که یا فقط در اولی وجود دارند یا فقط در دومی. |
برای فهم بهتر به شکل زیر توجه کنید:
دو مجموعه S1و S2 با چهار ترکیب مختلف در بالا نمایش داده شدهاست.
بهترین روش یادگیری، مثال وحل تمرین است، لذا یک فایل کلیکویو جدید ایجاد کنید، و در بخش اسکریپت کد زیر را واردنمایید:
LOAD * Inline
[
f1, f2, value
A , X , 1
A , Y , 1
B , X , 1
B , Y , 1
C , X , 1
C , Y , 1
];ذخیره و لود و دوباره ذخیره نمایید، حال میخواهیم مقادیر زیر را بیابیم.
| sum(value) | 1 |
| sum({1}value) | 2 |
| sum({$}value) | 3 |
| sum({1-$}value) | 4 |
| sum({<f1={A}>} value) | 5 |
| sum({$<f1={A}>} value) | 6 |
| sum({1<f1={A}>} value) | 7 |
| sum({<f1={A,B}>} value) | 8 |
| sum({$<f2*={Y}>} value) | 9 |
| sum({1<f2={Y}>} value) | 10 |
| sum({<f1={A,B}>-<f2={Y}>} value) | 11 |
| sum({<f1={A,B}>-1<f2={Y}>} value) | 12 |
| sum({<f2={Y},f1={A,B}>} value) | 13 |
| sum({<f1={C}>} value) | 14 |
نخست در شیت Main کلیکراست زده و گزینه Select Fields را انتخاب و سپس Tab مربوط به Fields را انتخاب و دو فیلد f1و f2را اضافه کرده و Ok نمایید.
سپس یک چارت جدید از نوع Pivot Table ایجادنمایید، در قسمت دایمنشن چیزی ننویسید، در قسمت Experssions به ترتیب موارد فوق را اضافهنمایید و سپس Ok کنید تا پنجره Pivote Table بسته شود. فایل را ذخیره کرده و نتایج Pivot Table را صحهگذاری نمایید. برای نمونه اینجا دو خط 7 و 11 را توضیح میدهیم.
خط 7 به کلیکویو میگوید مجموعه تمام رکوردهایی را که فیلد f1آنها مقدار Aدارد را یافته و مقدار جمع valueهای آنها را برگردان(فقط دو رکورد). چون پس از علامت آکولاد مقدار 1 را قرار دادهایم، هر انتخابی را برای فیلدهای f1 و f2کردهباشیم نتیجه برگشتی عدد 2 خواهد بود.
خط 11به کلیکویو میگوید مجموعه تمام رکوردهایی را که فیلد f1آنها مقدار A و یا B هست را یافته بجز آنهایی که مقدار فیلد f2آنها Y است را از مجموعه خارجکن سپس جمع فیلد valueرا محاسبه کن و برگردان. تعداد رکوردهایی که مقدار فیلد f1آنها A یا B است 4 رکورد است. اما از این چهار رکورد فیلدهایی که f2آنها مقدار Y است را حذف کن(2 رکورد) نتیجه مقدار 2 میباشد.
فایل کلیکویو ضمیمه میباشد.
فایلهای مطلب
ستاکسپرژنها در کلیکویو (127.5 کیلو بایت)



