第 11 课:创建分区

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

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

先决条件

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

创建分区

在“Internet Sales”表中创建分区

  1. 在模型设计器中,单击 “Internet Sales ”表,然后单击“ ”菜单,然后单击“ 分区”。

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

  2. “分区管理器 ”对话框中的 “分区”中,单击“ Internet 销售 ”分区。

  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 为 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'))  
    

进程分区

“分区管理器 ”对话框中,请注意刚创建的每个新分区的分区名称旁边的星号(*)。 这表示该分区尚未处理(未刷新)。 创建新分区时,应运行进程分区或进程表作来刷新这些分区中的数据。

处理互联网销售分区

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

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

  3. 在“ 进程分区 ”对话框中,验证 模式 是否设置为 “进程默认值”。

  4. 选中所创建五个分区中每个分区的 “进程 ”列中的复选框,然后单击“ 确定”。

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

    然后,将显示“ 数据进程 ”对话框,并显示每个分区的进程详细信息。 请注意,每个分区传输的行数是不同的。 这是因为每个分区仅包括 SQL 语句中 WHERE 子句中指定的该年的行。 2010 年没有数据。

后续步骤

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