第 11 课:创建分区
在本课中,您将创建分区,以便将 Internet Sales 表划分为可独立于其他分区进行处理(刷新)的更小逻辑部分。 默认情况下,模型中包含的每个表都有一个分区,其中包含表的所有列和行。 对于 Internet Sales 表,我们想要将数据除以年份;每个表的五年各有一个分区。 然后,每个分区可独立进行处理。 若要了解详细信息,请参阅 SSAS 表格) (分区 。
学完本课的估计时间: 15 分钟
先决条件
本主题是表格建模教程的一部分,应当按顺序完成。 在执行本课程中的任务之前,应该已完成上一课: 第 10 课:创建层次结构。
创建分区
在 Internet Sales 表中创建分区
在模型设计器中,依次单击“Internet Sales”表、“表”菜单和“分区”。
“分区管理器”对话框将打开。
在 “分区管理器 ”对话框的“ 分区”中,单击“ Internet 销售 ”分区。
在 “分区名称”中,将名称更改为
Internet Sales 2005
。提示
在继续执行下一步之前,您将注意到“表预览”窗口中的列名显示模型表中包含的、但其列名来自源中的这些列(已勾选)。 这是因为“表预览”窗口显示源表(而非模型表)中的列。
选择位于预览窗口右侧上方的“查询编辑器”按钮。
因为您希望分区只包含特定期间内的那些行,所以您必须包含 WHERE 子句。 您只能通过使用 SQL 语句创建 WHERE 子句。
在“SQL 语句”字段中,通过粘贴以下语句替换现有语句:
SELECT [dbo].[FactInternetSales].[ProductKey], [dbo].[FactInternetSales].[CustomerKey], [dbo].[FactInternetSales].[PromotionKey], [dbo].[FactInternetSales].[CurrencyKey], [dbo].[FactInternetSales].[SalesTerritoryKey], [dbo].[FactInternetSales].[SalesOrderNumber], [dbo].[FactInternetSales].[SalesOrderLineNumber], [dbo].[FactInternetSales].[RevisionNumber], [dbo].[FactInternetSales].[OrderQuantity], [dbo].[FactInternetSales].[UnitPrice], [dbo].[FactInternetSales].[ExtendedAmount], [dbo].[FactInternetSales].[UnitPriceDiscountPct], [dbo].[FactInternetSales].[DiscountAmount], [dbo].[FactInternetSales].[ProductStandardCost], [dbo].[FactInternetSales].[TotalProductCost], [dbo].[FactInternetSales].[SalesAmount], [dbo].[FactInternetSales].[TaxAmt], [dbo].[FactInternetSales].[Freight], [dbo].[FactInternetSales].[CarrierTrackingNumber], [dbo].[FactInternetSales].[CustomerPONumber], [dbo].[FactInternetSales].[OrderDate], [dbo].[FactInternetSales].[DueDate], [dbo].[FactInternetSales].[ShipDate] FROM [dbo].[FactInternetSales] WHERE (([OrderDate] >= N'2005-01-01 00:00:00') AND ([OrderDate] < N'2006-01-01 00:00:00'))
本语句指定分区应包含以下行中的所有数据:对于这些行,OrderDate 对应于在 WHERE 子句中指定的 2005 日历年。
单击 “验证” 。
请注意,此时将显示一条警告,指出某些列在源中不存在。 这是因为,在 “第 3 课:重命名列”中,你已将模型中 Internet Sales 表中的列重命名为不同于源中的相同列。
在 Internet Sales 表中创建 2006 年的分区
在“ 分区管理器 ”对话框的“ 分区”中,单击
Internet Sales 2005
刚创建的分区,然后单击 “复制”。在 “分区名称”中,键入
Internet Sales 2006
。在 SQL 语句中,为了使分区仅包含 2006 年的这些行,请将 WHERE 子句替换为以下内容:
WHERE (([OrderDate] >= N'2006-01-01 00:00:00') AND ([OrderDate] < N'2007-01-01 00:00:00'))
在 Internet Sales 表中创建 2007 年的分区
在“分区管理器”对话框中,单击“复制”。
在 “分区名称”中,键入
Internet Sales 2007
。在“切换到”中,选择“查询编辑器”。
在 SQL 语句中,为了使分区仅包含 2007 年的这些行,请将 WHERE 子句替换为以下内容:
WHERE (([OrderDate] >= N'2007-01-01 00:00:00') AND ([OrderDate] < N'2008-01-01 00:00:00'))
在 Internet Sales 表中创建 2008 年的分区
在“分区管理器”对话框中,单击“新建”。
在 “分区名称”中,键入
Internet Sales 2008
。在“切换到”中,选择“查询编辑器”。
在 SQL 语句中,为了使分区仅包含 2008 年的这些行,请将 WHERE 子句替换为以下内容:
WHERE (([OrderDate] >= N'2008-01-01 00:00:00') AND ([OrderDate] < N'2009-01-01 00:00:00'))
在 Internet Sales 表中为 2009 年份创建分区
在“分区管理器”对话框中,单击“新建”。
在 “分区名称”中,键入
Internet Sales 2009
。在“切换到”中,选择“查询编辑器”。
在 SQL 语句中,要使分区只包含 2009 年份的这些行,请将 WHERE 子句替换为:
WHERE (([OrderDate] >= N'2009-01-01 00:00:00') AND ([OrderDate] < N'2010-01-01 00:00:00'))
处理分区
在“分区管理器”对话框中,请注意,对于刚才创建的每个新分区,分区名称旁边会有一个星号 (*)。 这指示尚未处理(刷新)分区。 当您创建新分区时,您应运行“处理分区”或“处理表”操作以刷新这些分区中的数据。
处理 Internet Sales 分区
单击“确定”关闭“分区管理器”对话框。
在模型设计器中,单击“Internet Sales”表,然后单击“模型”菜单,指向“处理”(刷新),然后单击“处理分区”。
在“处理分区”对话框中,确认“模式”已设置为“处理默认值”。
选中创建的五个分区中每个分区的“处理”列中的复选框,并单击“确定”。
如果系统提示您输入模拟凭据,则输入您在第 2 课的第 6 步中指定的 Windows 用户名和密码。
然后,将显示“ 数据处理 ”对话框,并显示每个分区的进程详细信息。 请注意,为每个分区传输的行数不同。 这是因为,每个分区值包含您在 SQL 语句的 WHERE 子句中指定的年份的那些行。 对于 2010 年份没有数据。
后续步骤
若要继续学习本教程,请转到下一课: 第 12 课:创建角色。