آموزش MDX Query - قسمت سیزدهم – برخی توابع برای کار روی ساختار های سلسله مراتبی (prevmember و nextmember)
نویسنده: اردلان شاه قلی
تاریخ: ۱۳۹۲/۱۰/۰۸ ۱۸:۱۰
آدرس: www.dntips.ir
| مطالب | ۳۶۹۴ |
| نویسندگان | ۲۷۶ |
| گروههای مطالب | ۱۰۲۴ |
| نقشههای راه | ۱۱۹ |
| دورهها | ۱۴ |
| اشتراکها | ۱۷۹۱۴ |
کار با توابع prevmember و nextmember
قبل از اجرای کوئریهای زیر در ابتدا به ساختار سلسله مراتبی Customer دقت نمایید و ترتیب کشورها را در این ساختار بررسی نمایید.
کوئری زیر را اجرا نمایید :
Select
{
[Measures].[Internet Sales Amount],
[Measures].[Internet Tax Amount]
}on columns,
{
[Customer].[Customer Geography].[Country].[Germany],
[Customer].[Customer Geography].[Country].[Germany].prevmember
}on rows
From [Adventure Works] این تابع برادر قبلی را بدست میآ ورد
حال کوئری زیر را اجرا نمایید :
Select
{
[Measures].[Internet Sales Amount],
[Measures].[Internet Tax Amount]
} on columns,
{
[Customer].[Customer Geography].[Country].[Germany],
[Customer].[Customer Geography].[Country].[Germany].lag(1)
} on rows
From [Adventure Works]
در اینجا میزان فروش اینترنتی و همچنین میزان مالیات اینترنتی برای مشتریان آلمان و کشور قبلی بدست میآید.
با این تابع می توان برادر قبلی را با اعلام یک فاصله بدست آورد. مثلا 4 برادر قبلی یا .... را توسط این تابع بدست آورد .
کوئری زیر را اجرا نمایید :
Select
{
[Measures].[Internet Sales Amount],
[Measures].[Internet Tax Amount]
} on columns,
{
[Customer].[Customer Geography].[Country].[Germany],
[Customer].[Customer Geography].[Country].[Germany].prevmember.prevmember
} on rows
From [Adventure Works]
در این حالت مشابه تابع (2)Lag عمل کرده ایم. حال با استفاده از تابع Nextmember می توانیم برادر بعدی را بدست بیاوریم.
کوئری زیر را اجرا کنید :
select
{
[Measures].[Internet Sales Amount],
[Measures].[Internet Tax Amount]
} on columns,
{
[Customer].[Customer Geography].[Country].[Germany],
[Customer].[Customer Geography].[Country].[Germany].nextmember
} on rows
From [Adventure Works]
و همچنین در کوئری زیر برادر بعد از برادر بعدی را بدست آورده ایم
Select
{
[Measures].[Internet Sales Amount],
[Measures].[Internet Tax Amount]
} on columns,
{
[Customer].[Customer Geography].[Country].[Germany],
[Customer].[Customer Geography].[Country].[Germany].nextmember.nextmember
} on rows
From [Adventure Works]
یک ترکیب از عملگر Range , NextMember در کوئری زیر نوشته شده است.
Select
{
[Measures].[Internet Sales Amount],
[Measures].[Internet Tax Amount]
} on columns,
[Customer].[Customer Geography].[Country].[Germany]
:
[Customer].[Customer Geography].[Country].[Germany].nextmember.nextmember
on rows
From [Adventure Works]
کاربرد تابع Lead برای به دست آوردن برادر بعدی بر اساس عددی می باشد که به آن داده ایم .
در اینجا ترکیبی از رنج و به دست آوردن برادر برادر بعدی را داریم .
Select
{
[Measures].[Internet Sales Amount],
[Measures].[Internet Tax Amount]
} on columns,
[Customer].[Customer Geography].[Country].[Germany]
:
[Customer].[Customer Geography].[Country].[Germany].lead(2)
on rows
From [Adventure Works]
در قسمت بعدی تابع Order را بررسی میکنیم.