جلسه یازدهم – 03/09/93
یک راه برای اجرای Package های SSIS استفاده از SQL Agent می باشد. کافی است تا در تعریف STEP های JOB نوع را SQL Server Integration services package تعیین نموده و از بین روش های انتخاب package مثلا File System انتخاب شده و به فایل dtsx اشاره کنیم.
توجه: به طور پیش فرض برای اجرای Step از SQL Agent Service Account استفاده می کنیم. حال آنکه در محیط SSIS از کاربر Login کننده به ویندوز استفاده می شود. بنابراین لازم است درصورتیکه بسته ای در محیط Data Tools اجرا می شود اما در بخش Step به مشکل برمی خورد به این نکته توجه شود.
Supported Languages in SSAS 2012, 2014
MDX (multidimensional expressions) |
زبانی برای پرس و جوهای چندبعدی |
DMX (data mining extensions) |
برای داده کاوی |
DAX (data analysis expressions) |
برای کار با بانکهای اطلاعاتی Tabular |
XMLA (xml for analysis) |
برای انجام کارهای Administration |
AMO (analysis service management objects) |
برای کار با اشیاء حوزه OLAP |
ASSL(analysis services scripting languages) |
زبانی برای تعامل با عملیات Hand Shaking بین سایر ابزارها و SSAS |
دستورات MDX
Tuple: یک چندتایی مرتب است که به فضای خاصی از مکعب یا به مقادیر موجود در فضایی خاص از مکعب اشاره دارد.
شرح |
مثال |
اشاره به یک Measure |
[Measures].[Sales Amount] |
اشاره به اعضای یک Attribute از یک بعد |
[Dim Product].[Product category Key].MEMBERS |
Select [Measures].[Sales Amount] on Columns,
[Dim Product].[Product category Key].MEMBERS on Rows
From SALES
پرس و جوی فوق به معنای آن است که
گروههای کالا (شامل تمامی گروه ها – Members) در سطر قرار گیرد
و مقادیر Sales Amount در ستون قرار گیرد
|
Sales Amount |
All |
29358677.2206758 |
Accessories |
700759.959999831 |
Bikes |
28318144.6506953 |
Clothing |
339772.60999997 |
Components |
(null) |
سئوال: اگر بخواهیم در سطر تنها جمع مقادیر measure بیاید و نیازی به سطر نداشته باشیم چه باید کرد؟
پاسخ: کافی است تا در دستور به ROWS اشاره نکنیم:
Select [Measures].[Sales Amount] on Columns
From SALES
Sales Amount |
29358677.2206758 |
سئوال: اگر بخواهیم به غیر از Measure با عنوان Sales Amount، measure های دیگر مربوط به Sales را بیاوریم چه باید کرد؟
پاسخ: کافی است تا measure ها مورد نظر را در بخش columns با ویرگول از هم جدا نماییم. باید به خاطر داشته باشیم که بخش columns باید نمایشگر یک مجموعه (Tuple) باشد. به این ترتیب کافی است تا مقدار زیر را در بخش columns قرار دهیم:
{[Measures].[Product Standard Cost], [Measures].[Sales Amount]}
بنابراین
SELECT {[Measures].[Product Standard Cost], [Measures].[Sales Amount]} ON COLUMNS,
[Dim Product].[Product category Key].MEMBERS on Rows
FROM [sales]
و خروجی جدول زیر خواهد بود:
|
Product Standard Cost |
Sales Amount |
All |
17277793.5756972 |
29358677.2206758 |
Accessories |
262085.39189997 |
700759.959999831 |
Bikes |
16812348.1500986 |
28318144.6506953 |
Clothing |
203360.033700009 |
339772.60999997 |
Components |
(null) |
(null) |
سئوال: اگر بخواهیم تنها مقدار جمع تمامی ستونها یعنی ALL را در سطر نشان دهیم چکار باید کرد؟
پاسخ: باید در پرس و جو فقط به سطر ALL اشاره کنیم.
Select [Measures].[Sales Amount] on Columns,
[Dim Product].[Product category Key].[All] on Rows
From SALES
سئوال: اگر بخواهیم سطر ALL را نتیجه کار حذف کنیم چکار باید کرد؟
پاسخ: باید در پرس و جو سطر ALL را از مجموعه خارج نماییم. به خاطر داشته باشید هنگامیکه بین عملیاتی مانند اضافه، کسر انجام شود، ماهیت خروجی نیز مجموعه خواهد و نیازی به استفاده از {} نمی باشد.
Select [Measures].[Sales Amount] on Columns,
[Dim Product].[Product category Key].MEMBERS - [Dim Product].[Product category Key].[All] on Rows
From SALES
|
Product Standard Cost |
Sales Amount |
Accessories |
262085.39189997 |
700759.959999831 |
Bikes |
16812348.1500986 |
28318144.6506953 |
Clothing |
203360.033700009 |
339772.60999997 |
Components |
(null) |
(null) |
سئوال: آیا می توان سطر یا ستونی که تمامی مقادیر آن null هستند را از نتیجه حذف کرد؟
پاسخ: کافی است تا کل مجموعه خروجی را در تابع nonempty قرار دهیم.
Select [Measures].[Sales Amount] on Columns,
nonempty( [Dim Product].[Product category Key].MEMBERS - [Dim Product].[Product category key].[All]) on Rows
From SALES
|
Sales Amount |
All |
29358677.2206758 |
Accessories |
700759.959999831 |
Bikes |
28318144.6506953 |
Clothing |
339772.60999997 |
سئوال: اگر بخواهیم در سطر تنها مقادیر مرتبط با Bikes را نمایش دهیم چه باید کرد؟
پاسخ: پس از اشاره به بعد و پس از آن به Attribute باید به Bikes اشاره کنیم که در اینجا Bikes، MemberName است:
Select [Measures].[Sales Amount] on Columns,
[Dim Product].[Product category Key].[Bikes] on Rows
From SALES
همینطور میتوان از MemberKey نیز استفاده کرد. MemberKey همان کلید Bikes در جدول DimProductCategory است:
Select [Measures].[Sales Amount] on Columns,
[Dim Product].[Product category Key].&[1] on Rows
From SALES
سئوال: اگر بخواهیم در سطر تنها به مقادیر مرتبط با Bikes و Clothing اشاره شود چه باید کرد؟
پاسخ: زمانی که می خواستیم دو measure اشاره کنیم چه می کردیم؟! اینجا هم همانطور است. به علت آنکه دو ویژگی با ویرگول از هم جدا شده اند لازم است برای اعلام مجموعه بودن آنها از {} استفاده نماییم.
Select [Measures].[Sales Amount] on Columns,
{[Dim Product].[Product category Key].[Bikes], [Dim Product].[Product category Key].[Clothing]} on Rows
From SALES
|
Sales Amount |
Bikes |
28318144.6506953 |
Clothing |
339772.60999997 |
سئوال: اگر بخواهیم مبلغ فروش (در ستون) از سال 2005 تا 2008 (در سطر) را استخراج کنیم چکار باید کرد؟
پاسخ: کافی است تا با استفاده از علامت : در سطر، طیف اطلاعاتی را مشخص کنیم. همانند سئوال بالا لازم است تا برای اعلام مجموعه بودن از {} استفاده نماییم.
select [Measures].[Sales Amount] on columns,
{[Order Date].[Calendar Year].&[2005]:[Order Date].[Calendar Year].&[2007]} on rows
from [Sales]
سئوال: خروجی گزاره زیر چه چیست؟
select nonempty([Dim Product].[Product Category Key].members - [Dim Product].[Product Category Key].[All]) on columns,
nonempty(
(
[Order Date].[Calendar Year].members - [Order Date].[Calendar Year].[All])
*
([Dim Sales Territory].[Sales Territory Group].members - [Dim Sales Territory].[Sales Territory Group].[All])
) on rows
from [Sales]
پاسخ:
در ستون، گروه های کالاهای دارای مقدار (غیر null) بجز سرجمع (All) را میاورد.
در سطر، ترکیبی (*) از دو ستون سال و منطقه فروش نمایش داده میشود.
|
|
Accessories |
Bikes |
Clothing |
2005 |
Europe |
(null) |
709947.201600001 |
(null) |
2005 |
North America |
(null) |
1247379.2572 |
(null) |
2005 |
Pacific |
(null) |
1309047.1978 |
(null) |
2006 |
Europe |
(null) |
1627759.7146 |
(null) |
2006 |
North America |
(null) |
2748298.92830003 |
(null) |
2006 |
Pacific |
(null) |
2154284.88349999 |
(null) |
2007 |
Europe |
84458.1600000009 |
3262529.31720011 |
35991.7900000004 |
2007 |
North America |
151870.080000003 |
3148783.8174001 |
73642.9200000002 |
2007 |
Pacific |
57381.4700000003 |