جلسه سیزدهم – 10/09/93 - Script Command Named Set

جلسه سیزدهم – 10/09/93

تابع ParallelPeriod

Paralleperiod(level expr, index, member expr)

  • level expr : یک Level  از سلسله مراتب است.

  • index  :

  • member expr : یک عضو از سلسله مراتب را برمی گرداند.

این تابع عضو متناظر با عضو member expr در index دوره قبل level expr بر می گرداند.

مثال:

Parallelperiod(سال, 1, 93/09/10)   = 10/09/93

Parallelperiod(ماه, 3, 93/09/10)    = 10/06/93

Parallelperiod(فصل, 1, 93/09) = 06/93

Parallelperiod(فصل, -1, 93/09)   = 12/93

کاربرد تابع Parallelperiod در مقایسه یک شاخص با سال قبل، فصل قبل، ماه قبل و ... می باشد.

مثلا:

نسبت رشد

فروش سال قبل همین ماه

فروش ماه قبل

فروش ماه

شهرها

0.25

800000

950000

1000000

تهران

 

 

 

 

 

 

Aggregate (

            Parallelperiod( [Order Date].[Calendar].[Calendar Year], 1, [Order Date].[Calendar].CurrentMemeber) ,

            [Measures].[Sales Amount]

)

نکته: مقدار تابع Aggrigate (min، avg و ...) بستگی به تابعی دارد که در measure  تعریف شده است.

MDX expression Named Set

اگر قرارباشد نموداری خطی رسم کنیم که در محور عمودی میزان فروش و در محور افقی فروشنده ها قرار گرفته باشند، بدیهی است که آوردن تمامی فروشندگان در محور افقی از خوانایی نمودار می کاهد. از طرفی ممکن است که تنها به طور مثال 10 فروشنده اول اهمیت داشته باشند. در این صورت از Named Set استفاده خواهیم کرد.

برای تعریف یک Named Set باید:

  • نام مجموعه به آن بدهیم: Name

  • Expression: گزاره MDX تولید کننده مجموعه (برای توابع قبلی باید از نوع Memeber می بود)

  • Type :

    • Dynamic : محاسبه مجموعه در زمان اجرای گزاره انجام می شود

    • Static : محاسبه مجموعه در زمان اجرای پردازش مکعب انجام می شود

  • Display Folder : امکان تعیین پوشه برای قراردادن Named Set مقدور است

مثال: نمایش فروش چند کشور مشخص

{ شهر, شهر, شهر}

مثال: نمایش شهرهای کشور فرانسه

exists([Dim Geography].[City].members, [Dim Geography].[Country Region Code],&[FR])

مثال: سال هایی که فروش آنها بیش از 7000000 دلار است

Filter([Order Date].[Calendar Year].members, [measures].[sales amount] >= 7000000)

چند تابع:

TOPCOUNT (Set expr, Count, Numeric expr)

Set expr : مثلا لیست سالها است

 : Countتعداد عضوی که باید بازگردد

Numeric expr : در ساده ترین حالت نام یک measure است. مثل Sales Amount

این تابع برترین اعضای مجموعه (Set Expr) را براساس مقدار (Measure Expr) و به تعداد مورد نظر (Count)  بر می گرداند.

 

مثال: مجموعه ای شامل 3 کشور برتر از لحاظ میزان فروش

TopCount(

[Dim Sales Tritory].[Sales Tritory Country].members - [Dim Sales Tritory].[Sales Tritory Country].[All])

,3

,[measures].[sales amounts] )

 

BOTTOMCOUNT (Set expr, Count, Numeric expr)

این تابع پایین ترین اعضای مجموعه (Set Expr) را براساس مقدار (Measure Expr) و به تعداد مورد نظر (Count)  بر می گرداند.

توجه: اگر مقدار کمتر برگرداند لازم است تا مقادیر null را کنترل نمایید. شاید محلی اصلا فروش نداشته باشد. برای این کار کافی است به یکی از دو روش زیر عمل کنید:

  • Nonempty(Set expr)

  • Filter(Set expr, …empty(….))

ادامه تفاوت Static و Dynamic:

در Static مقادیر محاسبه می شوند و فیلتر فقط روی مقادیر آورده شده، است. کاربرد این کار زمانی است که به طور مثال 3 فروشنده برتر تمام سال ها انتخاب شده اند و مدیر می خواهد بداند که هر کدام از فروشنده ها چه میزان فروش در سال های مختلف داشته اند.

بنابراین:

  • در Daynamic اول فیلتر اعمال شده و بعد از آن برترین ها پیدا می شوند

  • در Static اول برترین ها انتخاب می شوند و بعد از فیلتر اعمال می شود

 

بررسی:

{کشور 1، کشور 2} * {سال 2007، سال 2008}

تاکنون اینطور بود که هر Set زیر مجموعه مرتبط خود بود. چون این Set مربوط به مجموعه خاص نیست بنابراین نحوه نمایش آن متفاوت و به شکل زیر خواهد بود:

کشور 1

2007

2008

کشور 2

2007

2008

 

Script Command – کم استفاده بوده و برای تغییر محاسبات کاربری دارد

برای استفاده از این دستور به روش زیر عمل می کنیم:

SCOPE (Tuples)

…..

…..

End Scope

از دستور This هم جهت اعمال تغییر در ناحیه مورد نظر از مکعب استفاده می شود.

مثال: مثلا برای دو برابر کردن فروش یکسال، توجه کنید که در پایان دستور End Scope علامت ; استفاده نشده است.

SCOPE ([measures].[sales amount], [Order date].[Calendar Year].&[2008]);

This = [Order date].[Calendar Year].CurrentMember * 2;

End Scope

مثال: مقدار فروش سال 2008 مانند سال 2007 شود.

SCOPE (  [measures].[sales amount], descendants( [Order date].[Calendar].[Calendar Year].&[2008])   );

This = Parallelperiod( [order date].[calendar].[calendar year], 1,……………………….. )

End Scope

 

دستور Calculate در ابتدای اجرای محاسبات:

با اجرای این دستور جمع بندی ها به ازای اعضای ابعاد مختلف محاسبه می گردد. در صورت عدم اجرای این دستور داده­ها در ساختار چندبعدی ذخیره می­شوند ولی به دلیل عدم وجود جمع بندی ها این داده ها قابل استفاده نمی باشند.

در انتقال اطلاعات یک انبار داده به یک مکعب به ترتیب زیر عمل می شود:

  1. Data population استقرار داده ها

  2. Calculate  محاسبه جمع بندی ها

  3. محاسبه فیلدهای محاسباتی

برای تولید فیلد محاسباتی می توان به ترتیب زیر نیز عمل کرد:

With member XXXXXX AS

عبارت فیلد محاسباتی

Select XXXXXX on 0,

……… on 1

…..

نظرات 0 + ارسال نظر
امکان ثبت نظر جدید برای این مطلب وجود ندارد.