جلسه دوازدهم – 05/09/93
توجه: در دستورات MDX هریک از عبارات را تنها میتوان در یک بخش (Select یا From یا Where) مورد استفاده قرار داد.
Navigation Functions: مجموعه توابعی که برروی Members کار می کنند و با استفاده از آنها می توان در یک ساختار سلسله مراتبی بین اعضاء حرکت نمود.
مثال
ایران
آ.شرقی
آ.غربی
سمنان
تهران
اسلامشهر
تهران
ورامین
رباط کریم
گیلان
مازندارن
عراق
امارات
Children: اسلامشهر، تهران و ....، رباط کریم
FirstChild: اسلامشهر
LastChild: رباط کریم
NextMember: گیلان
PrevMember: سمنان
FirstSibling: آ.شرقی
LastSibling: مازندران
Parent: ایران
Lag(i): i امین عضو قبلی را نمایش می دهد. مقدار i منفی نیز می تواند باشد که در اینصورت به معنی عضوی بعدی است.
Lead(i): i امین عضو بعدی را نمایش می دهد.
MDX – Expression
دسته اول
Calculated member: افزودن یک عضو جدید به ابعاد
Calculated measure: افزودن یک مقدار محاسباتی به مکعب (پرکاربرد)
دسته دوم: Named Set: ایجاد یک مجموعه دلخواه از اعضاء (ایجاد محور گزارشگیری دلخواه) (پرکاربرد)
دسته سوم: Script command یا script assignment : ایجاد تغییرات در محاسبات داخلی مکعب
Calculated member: افزودن یک عضو جدید به ابعاد
مثال: اضافه کردن یک عضو به یک Dimension / اضافه کردن یک کشور به لیست کشورها : مثلا ایجاد آمریکای شمالی که نتیجه جمع دو منطقه است.
در محیط SSAS و در بخش Cube – Calculated Feilds باید:
نام برای فیلد محاسباتی درنظر گرفت
محل قرار گرفتن فیلد محاسباتی (measure یا dimension) را با تعیین parent hierarchy یا parent member مشخص کرد.
گزاره تولید کننده عضو جدید را مشخص کرد (expression)
اگر از نوع measure باشد مقادیر additional properties را مشخص کرد.
آشنایی با توابع iif و isempty
iif(logical expression, true statement, false statement)
isempty() برای کنترل صفر بودن کاربرد دارد.
مثال: تعیین نرخ فروش Sales Amount/Order Quantity
2005 300,000 %30
1 %10
2 %15
3 %2
4 %3
2006 400,000 %40
2007 300,000 %30
در بخش گزاره باید از عبارت زیر استفاده شود:
([measures].[sales amount], [order date].[calendar year].CurrentMember)
/
([measures].[sales amount], [order date].[calendar year].[All])
مثال: تعیین نرخ فروش Sales Amount/Order Quantity به ترتیب زیر
2005 300,000 %30
1 %30
2 %50
3 %5
4 %15
2006 400,000 %40
2007 300,000 %30
در بخش گزاره باید از عبارت زیر استفاده شود:
([measures].[sales amount], [order date].[calendar year].CurrentMember)
/
([measures].[sales amount], [order date].[calendar year].CurrentMember.Parent)
نکته: برای شناسایی بالاترین لایه می توان از روش زیر استفاده کرد:
[order date].[calendar year].CurrentMember is [order date].[calendar year].[All]
توجه: برای تقسیم دو measure از دو FACT مختلف باید حتما Dimension مشترک داشته باشند.
آشنایی با تابع PeriodToDate(Level Expression, Member Expression)
عملکرد: مجموعه ای از اعضای هم جنس با عضو را بر می گرداند که این مجموعه از اولین عضو سطح فوق آغاز شده و به عضو مشخص ختم می شود.
توجة این تابع روی Hierarkey معنا دارد.
Level Expression: گزاره MDX ی که یک سطح از یک سلسله مراتب را بر می گرداند.
Member Expression: گزاره MDX ی که یک عضو از یک سلسله مراتب را بر می گرداند.
مثال:
مجموعه ای از جنس روز از 01/01/93 تا 05/09/93 باز می گرداند |
PeriodToDate(سال, 93/09/05) |
مجموعه ای از جنس روز از 01/07/93 تا 05/09/93 باز می گرداند |
PeriodToDate(فصل, 93/09/05) |
مجموعه ای از جنس ماه از 01/93 تا 09/93 باز می گرداند |
PeriodToDate(سال, 93/09) |
آشنایی با تابع Aggregate(Set expression, Numeric expression)
این تابع به ازای اعضای مجموعه فوق، مقدار عددی فوق را جمع بندی می نماید.
Aggregate(
PeriodToDAte([Order date].[Calendar].[Calendar Year], [Order date].[Calendar].CurrentMemeber)
,
[measures].[sale amount]
)