教程:使用仓库中的存储过程转换数据

适用于:✅SQL 分析终结点和 Microsoft Fabric 中的仓库

本教程介绍如何在仓库中创建存储过程以转换表中的数据。

注意

本教程构成了 端到端方案的一部分。 若要完成本教程,必须先完成以下教程:

  1. 创建工作区
  2. 创建仓库
  3. 将数据引入数据仓库

创建存储过程

在此任务中,了解如何创建存储过程以转换仓库表中的数据。

  1. 请确保在 第一个教程中创建的工作区 处于打开状态。

  2. 在“主页”功能区上,选择“新建 SQL 查询”。

    主页功能区的屏幕截图,其中突出显示了“新建 SQL 查询”选项。

  3. 在查询编辑器中粘贴以下代码。 代码删除存储过程(如果存在),然后创建名为 populate_aggregate_sale_by_city的存储过程。 存储过程逻辑创建一个名为 aggregate_sale_by_date_city 的表,并使用联接 fact_saledimension_city 表的分组查询将数据插入其中。

     --Drop the stored procedure if it already exists.
     DROP PROCEDURE IF EXISTS [dbo].[populate_aggregate_sale_by_city];
     GO
    
     --Create the populate_aggregate_sale_by_city stored procedure.
     CREATE PROCEDURE [dbo].[populate_aggregate_sale_by_city]
     AS
     BEGIN
         --Drop the aggregate table if it already exists.
         DROP TABLE IF EXISTS [dbo].[aggregate_sale_by_date_city];
         --Create the aggregate table.
         CREATE TABLE [dbo].[aggregate_sale_by_date_city]
         (
            [Date] [DATETIME2](6),
            [City] [VARCHAR](8000),
            [StateProvince] [VARCHAR](8000),
            [SalesTerritory] [VARCHAR](8000),
            [SumOfTotalExcludingTax] [DECIMAL](38,2),
            [SumOfTaxAmount] [DECIMAL](38,6),
            [SumOfTotalIncludingTax] [DECIMAL](38,6),
            [SumOfProfit] [DECIMAL](38,2)
         );
    
         --Load aggregated data into the table.
         INSERT INTO [dbo].[aggregate_sale_by_date_city]
         SELECT
            FS.[InvoiceDateKey] AS [Date], 
            DC.[City], 
            DC.[StateProvince], 
            DC.[SalesTerritory], 
            SUM(FS.[TotalExcludingTax]) AS [SumOfTotalExcludingTax], 
            SUM(FS.[TaxAmount]) AS [SumOfTaxAmount], 
            SUM(FS.[TotalIncludingTax]) AS [SumOfTotalIncludingTax], 
            SUM(FS.[Profit]) AS [SumOfProfit]
         FROM [dbo].[fact_sale] AS FS
         INNER JOIN [dbo].[dimension_city] AS DC
            ON FS.[CityKey] = DC.[CityKey]
         GROUP BY
            FS.[InvoiceDateKey],
            DC.[City], 
            DC.[StateProvince], 
            DC.[SalesTerritory]
         ORDER BY 
            FS.[InvoiceDateKey], 
            DC.[StateProvince], 
            DC.[City];
     END;
    
  4. 若要执行查询,请在查询设计器功能区上选择“运行”。

  5. 执行完成后,将查询重命名为 Create Aggregate Procedure

  6. 资源管理器 窗格中,从位于 dbo 架构下的 存储过程 文件夹中,检查是否存在 aggregate_sale_by_date_city 存储过程。

    资源管理器窗格的屏幕截图,其中突出显示了新创建的存储过程。

运行存储过程

在此任务中,了解如何执行存储过程以转换仓库表中的数据。

  1. 创建新查询。

  2. 在查询编辑器中粘贴以下代码。 该代码执行 populate_aggregate_sale_by_city 存储过程。

     --Execute the stored procedure to create and load aggregated data.
     EXEC [dbo].[populate_aggregate_sale_by_city];
    
  3. 运行查询。

  4. 执行完成后,将查询重命名为 Run Aggregate Procedure

  5. 若要预览聚合数据,请在“资源管理器” 窗格中,选择 aggregate_sale_by_date_city 表。

    注意

    如果表格未出现,请选择“表”文件夹对于的省略号 (…),然后选择“刷新”。

    资源管理器窗格的屏幕截图,其中突出显示了新创建的表。

下一步