Поделиться через


Руководство. Преобразование данных с помощью хранимой процедуры в хранилище

Область применения:✅ конечная точка аналитики SQL и хранилище в Microsoft Fabric

В этом руководстве описано, как создать хранимую процедуру в хранилище для преобразования данных в таблицу.

Заметка

Это руководство является частью комплексного сценария. Чтобы завершить это руководство, необходимо сначала выполнить следующие руководства:

  1. создание рабочей области
  2. Создать хранилище
  3. загрузка данных в хранилище

Создание хранимой процедуры

В этой задаче вы узнаете, как создать хранимую процедуру для преобразования данных в таблицу хранилища.

  1. Убедитесь, что рабочая область, которую вы создали в первом учебном пособии, открыта.

  2. На ленте Home выберите Новый SQL-запрос.

    снимок экрана ленты

  3. В редакторе запросов вставьте следующий код. Код удаляет хранимую процедуру (если она существует), а затем создает хранимую процедуру с именем populate_aggregate_sale_by_city. Логика хранимой процедуры создает таблицу с именем aggregate_sale_by_date_city и вставляет в нее данные с помощью группового запроса, который объединяет таблицы fact_sale и dimension_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. В области обозревателя в папке хранимых процедур схемы убедитесь, что хранимая процедура существует .

    снимок экрана панели обозревателя, в котором выделена только что созданная хранимая процедура.

Запуск хранимой процедуры

В этой задаче вы узнаете, как выполнить хранимую процедуру для преобразования данных в таблицу хранилища.

  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. Чтобы просмотреть агрегированные данные, в области обозревателя выберите таблицу .

    Заметка

    Если таблица не отображается, выберите многоточие (...) для папки таблиц , а затем выберите Обновить.

    снимок экрана области обозревателя, в котором выделена только что созданная таблица.

Следующий шаг