Руководство по Перенос собранных данных из Центров событий Azure в Хранилище данных SQL с помощью служб "Сетка событий" и "Функции Azure"Tutorial: Migrate captured Event Hubs data to a SQL Data Warehouse using Event Grid and Azure Functions

Функция Сбор в концентраторах событий Azure — это самый простой способ автоматически доставить данные потоковой передачи из концентраторов событий в хранилище BLOB-объектов Azure или Azure Data Lake Store.Event Hubs Capture is the easiest way to automatically deliver streamed data in Event Hubs to an Azure Blob storage or Azure Data Lake store. Вы можете последовательно обрабатывать и доставлять данные в любые другие назначения хранения по своему усмотрению, например в хранилище данных SQL или Cosmos DB.You can subsequently process and deliver the data to any other storage destinations of your choice, such as SQL Data Warehouse or Cosmos DB. В этом руководстве показано, как записать данные из концентратора событий в хранилище данных SQL с помощью функции Azure, активируемой службой Сетка событий.In this tutorial, you learn how you to capture data from your event hub into a SQL data warehouse by using an Azure function triggered by an event grid.

Visual Studio

  • Сначала необходимо создать концентратор событий с включенной функцией Сбор и задать хранилище BLOB-объектов Azure как место назначения.First, you create an event hub with the Capture feature enabled and set an Azure blob storage as the destination. Данные, созданные WindTurbineGenerator, потоком передаются в концентратор событий и автоматически записываются в службу хранилища Azure как файлы AVRO.Data generated by WindTurbineGenerator is streamed into the event hub and is automatically captured into Azure Storage as Avro files.
  • Далее нужно создать подписку "Сетка событий Azure" с пространством имен концентраторов событий в качестве источника и конечной точкой функции Azure в качестве целевого назначения.Next, you create an Azure Event Grid subscription with the Event Hubs namespace as its source and the Azure Function endpoint as its destination.
  • Каждый раз, когда новый файл AVRO доставляется в большой двоичный объект в службе хранилища Azure с помощью функции "Сбор" концентраторов событий, служба "Сетка событий" уведомляет функцию Azure, предоставляя универсальный код ресурса (URI) большого двоичного объекта.Whenever a new Avro file is delivered to the Azure Storage blob by the Event Hubs Capture feature, Event Grid notifies the Azure Function with the blob URI. Функция затем переносит данные из большого двоичного объекта в хранилище данных SQL.The Function then migrates data from the blob to a SQL data warehouse.

Вот какие действия выполняются в этом руководстве:In this tutorial, you do the following actions:

  • Развертывание инфраструктурыDeploy the infrastructure
  • Публикация кода в приложение-функцию.Publish code to a Functions App
  • Создание подписки "Сетка событий" из приложения-функции.Create an Event Grid subscription from the Functions app
  • Потоковая передача примера данных в концентратор событий.Stream sample data into Event Hub.
  • Проверка собранных данных в хранилище данных SQL.Verify captured data in SQL Data Warehouse

Предварительные требованияPrerequisites

Примечание

Эта статья была изменена и теперь содержит сведения о новом модуле Az для Azure PowerShell.This article has been updated to use the new Azure PowerShell Az module. Вы по-прежнему можете использовать модуль AzureRM, исправления ошибок для которого будут продолжать выпускаться как минимум до декабря 2020 г.You can still use the AzureRM module, which will continue to receive bug fixes until at least December 2020. Дополнительные сведения о совместимости модуля Az с AzureRM см. в статье Introducing the new Azure PowerShell Az module (Знакомство с новым модулем Az для Azure PowerShell).To learn more about the new Az module and AzureRM compatibility, see Introducing the new Azure PowerShell Az module. Инструкции по установке модуля Az см. в статье об установке Azure PowerShell.For Az module installation instructions, see Install Azure PowerShell.

  • Visual Studio 2019.Visual studio 2019. Вместе с программой нужно установить следующие рабочие нагрузки: разработка классических приложений .NET, разработка Azure, разработка ASP.NET и веб-разработка, разработка Node.js и Python.While installing, ensure that you install the following workloads: .NET desktop development, Azure development, ASP.NET and web development, Node.js development, Python development
  • Скачайте пример Git.Download the Git sample. Пример решения состоит из следующих компонентов:The sample solution contains the following components:
    • WindTurbineDataGenerator — простой издатель, который отправляет образцы данных ветровой турбины в концентратор событий с поддержкой функции "Сбор".WindTurbineDataGenerator – A simple publisher that sends sample wind turbine data to a Capture-enabled event hub
    • FunctionDWDumper — функция Azure, которая получает уведомление Сетки событий, когда файл AVRO записывается в большой двоичный объект в службе хранилища Azure.FunctionDWDumper – An Azure Function that receives an Event Grid notification when an Avro file is captured to the Azure Storage blob. Она получает путь универсального кода ресурса (URI) большого двоичного объекта, считывает его содержимое и помещает эти данные в хранилище данных SQL.It receives the blob’s URI path, reads its contents, and pushes this data to a SQL Data Warehouse.

Развертывание инфраструктурыDeploy the infrastructure

Разверните необходимую для этого руководства инфраструктуру с помощью Azure PowerShell или Azure CLI, используя этот шаблон Azure Resource Manager.Use Azure PowerShell or Azure CLI to deploy the infrastructure needed for this tutorial by using this Azure Resource Manager template. Этот шаблон создает следующие ресурсы:This template creates the following resources:

  • концентратор событий с включенной функцией "Сбор";Event Hub with the Capture feature enabled
  • учетную запись хранения для собранных данных о событии;Storage account for the captured event data
  • план службы приложений Azure для размещения приложения-функции;Azure app service plan for hosting the Functions app
  • приложение-функцию для обработки записанных файлов событий;Function app for processing captured event files
  • SQL Server для размещения хранилища данных;SQL Server for hosting the Data Warehouse
  • Хранилище данных SQL для хранения перенесенных данных.SQL Data Warehouse for storing the migrated data

В следующих разделах представлены команды Azure CLI и Azure PowerShell для развертывания инфраструктуры, необходимой для этого руководства.The following sections provide Azure CLI and Azure PowerShell commands for deploying the infrastructure required for the tutorial. Перед запуском команд обновите имена следующих объектов:Update names of the following objects before running the commands:

  • Группа ресурсов AzureAzure resource group
  • регион для группы ресурсов;Region for the resource group
  • пространство имен Центров событий;Event Hubs namespace
  • концентратор событий;Event hub
  • Azure SQL Server;Azure SQL server
  • пользователь SQL (и пароль);SQL user (and password)
  • База данных SQL AzureAzure SQL database
  • Хранилище AzureAzure Storage
  • приложение-функция Azure.Azure Functions App

Чтобы создать все артефакты в Azure, этим сценариям понадобится некоторое время.These scripts take some time to create all the Azure artifacts. Дождитесь завершения сценария, прежде чем продолжать.Wait until the script completes before proceeding further. Если по какой-либо причине развертывание завершается сбоем, удалите группу ресурсов, исправьте проблему и повторите команду.If the deployment fails for some reason, delete the resource group, fix the reported issue, and rerun the command.

Инфраструктура CLI AzureAzure CLI

Чтобы развернуть этот шаблон с помощью Azure CLI, выполните следующие команды.To deploy the template using Azure CLI, use the following commands:

az group create -l westus -n rgDataMigrationSample

az group deployment create \
  --resource-group rgDataMigrationSample \
  --template-uri https://raw.githubusercontent.com/Azure/azure-docs-json-samples/master/event-grid/EventHubsDataMigration.json \
  --parameters eventHubNamespaceName=<event-hub-namespace> eventHubName=hubdatamigration sqlServerName=<sql-server-name> sqlServerUserName=<user-name> sqlServerPassword=<password> sqlServerDatabaseName=<database-name> storageName=<unique-storage-name> functionAppName=<app-name>

Azure PowerShellAzure PowerShell

Чтобы развернуть этот шаблон с помощью PowerShell, выполните следующие команды.To deploy the template using PowerShell, use the following commands:

New-AzResourceGroup -Name rgDataMigration -Location westcentralus

New-AzResourceGroupDeployment -ResourceGroupName rgDataMigration -TemplateUri https://raw.githubusercontent.com/Azure/azure-docs-json-samples/master/event-grid/EventHubsDataMigration.json -eventHubNamespaceName <event-hub-namespace> -eventHubName hubdatamigration -sqlServerName <sql-server-name> -sqlServerUserName <user-name> -sqlServerDatabaseName <database-name> -storageName <unique-storage-name> -functionAppName <app-name>

Создание таблицы в хранилище данных SQLCreate a table in SQL Data Warehouse

Создайте таблицу в хранилище данных SQL, запустив сценарий CreateDataWarehouseTable.sql с помощью Visual Studio, SQL Server Management Studio или редактора запроса на портале.Create a table in your SQL data warehouse by running the CreateDataWarehouseTable.sql script using Visual Studio, SQL Server Management Studio, or the Query Editor in the portal.

CREATE TABLE [dbo].[Fact_WindTurbineMetrics] (
    [DeviceId] nvarchar(50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, 
    [MeasureTime] datetime NULL, 
    [GeneratedPower] float NULL, 
    [WindSpeed] float NULL, 
    [TurbineSpeed] float NULL
)
WITH (CLUSTERED COLUMNSTORE INDEX, DISTRIBUTION = ROUND_ROBIN);

Публикация кода в приложение-функциюPublish code to the Functions App

  1. Откройте решение EventHubsCaptureEventGridDemo.sln в Visual Studio 2019.Open the solution EventHubsCaptureEventGridDemo.sln in Visual Studio 2019.

  2. В обозревателе решений щелкните правой кнопкой мыши FunctionEGDWDumper и выберите Публиковать.In Solution Explorer, right-click FunctionEGDWDumper, and select Publish.

    Публикация приложения-функции

  3. Выберите Приложение функции Azure и Выбрать существующее.Select Azure Function App and Select Existing. Нажмите кнопку Опубликовать.Select Publish.

    Целевое приложение-функция

  4. Выберите приложение-функцию, развернутое с помощью шаблона.Select the function app that you deployed through the template. Нажмите кнопку ОК.Select OK.

    Выбор приложения-функции

  5. После настройки профиля в Visual Studio выберите Публиковать.When Visual Studio has configured the profile, select Publish.

    Выбор публикации

После публикации функции вы можете подписаться на событие записи из концентраторов событий.After publishing the function, you are ready to subscribe to the capture event from Event Hubs!

Создание подписки "Сетка событий" из приложения-функцииCreate an Event Grid subscription from the Functions app

  1. Перейдите на портал Azure.Go to the Azure portal. Выберите группу ресурсов и приложение-функцию.Select your resource group and function app.

    Просмотр приложения-функции

  2. Выберите функцию.Select the function.

    Выбор функции

  3. Выберите Добавление подписки для службы "Сетка событий" .Select Add Event Grid subscription.

    Добавить подписку

  4. Присвойте имя подписке для службы "Сетка событий".Give the event grid subscription a name. Используйте тип события Пространства имен Центров событий.Use Event Hubs Namespaces as the event type. Укажите значения для экземпляра пространства имен в службе "Центры событий".Provide values to select your instance of the Event Hubs namespace. Оставьте для конечной точки подписчика указанное значение.Leave the subscriber endpoint as the provided value. Нажмите кнопку Создать.Select Create.

    Создание подписки

Создание примера данныхGenerate sample data

Вы завершили настройку концентратора событий, хранилища данных SQL, приложения-функции Azure и подписки "Сетка событий".You have now set up your Event Hub, SQL data warehouse, Azure Function App, and Event Grid subscription. Вы можете запустить WindTurbineDataGenerator.exe для генерации потоков данных в концентратор событий после обновления строки подключения и имени своего концентратора событий в исходном коде.You can run WindTurbineDataGenerator.exe to generate data streams to the Event Hub after updating connection string and name of your event hub in the source code.

  1. На портале выберите пространство имен концентратора событий.In the portal, select your event hub namespace. Выберите Строки подключения.Select Connection Strings.

    Выбор элемента "Строки подключения"

  2. Выберите RootManageSharedAccessKey.Select RootManageSharedAccessKey

    Выбор ключа

  3. Скопируйте значение в поле Connection string — Primary Key (Строка подключения — первичный ключ).Copy Connection string - primary Key

    Копирование ключа

  4. Вернитесь к проекту Visual Studio.Go back to your Visual Studio project. В проекте WindTurbineDataGenerator откройте файл program.cs.In the WindTurbineDataGenerator project, open program.cs.

  5. Обновите значения EventHubConnectionString и EventHubName своей строкой подключения и именем концентратора событий.Update values for EventHubConnectionString and EventHubName with connection string and name of your event hub.

    private const string EventHubConnectionString = "Endpoint=sb://demomigrationnamespace.servicebus.windows.net/...";
    private const string EventHubName = "hubdatamigration";
    
  6. Создайте решение, а затем запустите приложение WindTurbineGenerator.exe.Build the solution, then run the WindTurbineGenerator.exe application.

Проверка собранных данных в хранилище данныхVerify captured data in data warehouse

Через пару минут запросите таблицу в хранилище данных SQL.After a couple of minutes, query the table in your SQL data warehouse. Обратите внимание, что данные, созданные WindTurbineDataGenerator, были переданы потоком в концентратор событий, записаны в контейнер службы хранилища Azure, а затем перенесены в таблицу хранилища данных SQL с помощью приложения-функции Azure.You observe that the data generated by WindTurbineDataGenerator has been streamed to your Event Hub, captured into an Azure Storage container, and then migrated into the SQL Data Warehouse table by Azure Function.

Дополнительная информацияNext steps

Вы можете использовать мощные инструменты визуализации данных в хранилище данных, чтобы получить аналитические сведения.You can use powerful data visualization tools with your data warehouse to achieve actionable insights.

В этой статье описано, как использовать Power BI с хранилищем данных SQL.This article shows how to use Power BI with SQL Data Warehouse