第 11 课:创建分区

在本课中,您将创建分区,以便将 Internet Sales 表划分为可独立于其他分区进行处理(刷新)的更小逻辑部分。 默认情况下,您包括在模型中的每个表都具有一个包含表的所有列和行的分区。 对于 Internet Sales 表,我们希望按年份划分数据;一个分区对应于表中的每个五年。 然后,每个分区可独立进行处理。 若要了解更多信息,请参阅分区(SSAS 表格)

学完本课的估计时间:15 分钟

先决条件

本主题是表格建模教程的一部分,该教程应按顺序学习。 在执行本课中的任务之前,您应已完成上一课:第 10 课:创建层次结构

创建分区

在 Internet Sales 表中创建分区

  1. 在模型设计器中,依次单击 Internet Sales 表、“表”菜单和“分区”

    将打开**“分区管理器”**对话框。

  2. 在**“分区管理器”对话框的“分区”**中,单击 Internet Sales 分区。

  3. 在**“分区名称”**中,将名称更改为 Internet Sales 2005。

    提示提示

    在继续执行下一步之前,您将注意到“表预览”窗口中的列名显示模型表中包含的、但其列名来自源中的这些列(已勾选)。 这是因为“表预览”窗口显示源表(而非模型表)中的列。

  4. 选择位于预览窗口右侧上方的**“查询编辑器”**按钮。

    因为您希望分区只包含特定期间内的那些行,所以您必须包含 WHERE 子句。 您只能通过使用 SQL 语句创建 WHERE 子句。

  5. 在**“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 日历年。

  6. 单击**“验证”**。

    请注意,此时将显示一条警告,指出某些列在源中不存在。 这是因为,在第 3 课:重命名列中,您已将模型的 Internet Sales 表中的这些列重命名为与源中这些相同列不同。

在 Internet Sales 表中为 2006 年份创建分区

  1. 在**“分区管理器”对话框的“分区”中,单击您刚创建的 Internet Sales 2005 分区,然后单击“复制”**。

  2. 在**“分区名称”**中,键入 Internet Sales 2006。

  3. 在 SQL 语句中,要使分区只包含 2006 年份的这些行,请将 WHERE 子句替换为:

    WHERE (([OrderDate] >= N'2006-01-01 00:00:00') AND ([OrderDate] < N'2007-01-01 00:00:00'))
    

在 Internet Sales 表中为 2007 年份创建分区

  1. 在**“分区管理器”对话框中,单击“复制”**。

  2. 在**“分区名称”**中,键入 Internet Sales 2007。

  3. 在**“切换到”中,选择“查询编辑器”**。

  4. 在 SQL 语句中,要使分区只包含 2007 年份的这些行,请将 WHERE 子句替换为:

    WHERE (([OrderDate] >= N'2007-01-01 00:00:00') AND ([OrderDate] < N'2008-01-01 00:00:00'))
    

在 Internet Sales 表中为 2008 年份创建分区

  1. 在**“分区管理器”对话框中,单击“新建”**。

  2. 在**“分区名称”**中,键入 Internet Sales 2008。

  3. 在**“切换到”中,选择“查询编辑器”**。

  4. 在 SQL 语句中,要使分区只包含 2008 年份的这些行,请将 WHERE 子句替换为:

    WHERE (([OrderDate] >= N'2008-01-01 00:00:00') AND ([OrderDate] < N'2009-01-01 00:00:00'))
    

在 Internet Sales 表中为 2009 年份创建分区

  1. 在**“分区管理器”对话框中,单击“新建”**。

  2. 在**“分区名称”**中,键入 Internet Sales 2009。

  3. 在**“切换到”中,选择“查询编辑器”**。

  4. 在 SQL 语句中,要使分区只包含 2009 年份的这些行,请将 WHERE 子句替换为:

    WHERE (([OrderDate] >= N'2009-01-01 00:00:00') AND ([OrderDate] < N'2010-01-01 00:00:00'))
    

处理分区

在**“分区管理器”对话框中,您将注意到,对于您刚创建的每个新分区,分区名称旁边有一个星号 (***)。 这指示尚未处理(刷新)分区。 当您创建新分区时,您应运行“处理分区”或“处理表”操作以刷新这些分区中的数据。

处理 Internet Sales 分区

  1. 单击**“确定”关闭“分区管理器”**对话框。

  2. 在模型设计器中,单击 Internet Sales 表,然后单击**“模型”菜单,指向“处理”(刷新),接着单击“处理分区”**。

  3. 在**“处理分区”对话框中,验证“模式”设置为“处理默认值”**。

  4. 在**“处理”列中针对您创建的五个分区中的每一个选中复选框,然后单击“确定”**。

    如果系统提示您输入模拟凭据,则输入您在第 2 课的第 6 步中指定的 Windows 用户名和密码。

    然后将出现**“数据处理”**对话框,并显示每个分区的处理详细信息。 您将注意到对于每个分区转移了不同的行数。 这是因为,每个分区值包含您在 SQL 语句的 WHERE 子句中指定的年份的那些行。 对于 2010 年份没有数据。

后续步骤

要继续学习本教程,请转到下一课:第 12 课:创建角色