快速入门:生成适用于点击流分析的 e2e 流式处理应用程序

分析点击流数据是企业优化网站流量和深入了解用户行为的有效方法。 本快速入门概述了如何生成用于分析网站点击流数据的流式处理应用程序。

本指南中概述的方法使用 PowerShell 脚本通过自动生成的示例数据流部署 Azure 资源。 自动生成的数据支持探索各种流分析方案,并帮助你轻松部署 Azure 资源。

下面是处理和分析点击流的典型方案:

  • 筛选点击流请求
  • 将点击流与文件联接

先决条件

筛选点击流请求

在此示例中,你将了解如何从网站点击流中提取 GETPOST 请求并将输出结果存储到 Azure Blob 存储。 以下是此示例的体系结构:对一个输入进行点击流操作

网站点击流示例:

{
    "EventTime": "2022-09-09 08:58:59 UTC",
    "UserID": 465,
    "IP": "145.140.61.170",
    "Request": {
    "Method": "GET",
    "URI": "/index.html",
    "Protocol": "HTTP/1.1"
    },
    "Response": {
    "Code": 200,
    "Bytes": 42682
    },
    "Browser": "Chrome"
}

我们将使用 GitHub 存储库 中提供的脚本来部署所需的资源:

  1. 从“开始”菜单打开 PowerShell,将此 GitHub 存储库克隆到工作目录。

    git clone https://github.com/Azure/azure-stream-analytics.git
    
  2. 转到 BuildApplications 文件夹。

    cd .\azure-stream-analytics\BuildApplications\
    
  3. 登录 Azure 并在弹出式浏览器中输入你的 Azure 凭据。

    Connect-AzAccount -Environment AzureChinaCloud
    
  4. $subscriptionId 替换为你的 Azure 订阅 ID 并运行以下命令来部署 Azure 资源。 此过程可能需要几分钟才能完成。

    .\CreateJob.ps1 -job ClickStream-Filter -eventsPerMinute 11 -subscriptionid $subscriptionId
    
    • eventsPerMinute 是生成数据的输入速率。 在这种情况下,输入源每分钟生成 11 个事件。
    • 可以在“Azure 门户”>“订阅”中查找订阅 ID。
  5. 部署完成后,它会自动打开浏览器,Azure 门户中会显示名为 ClickStream-Filter-rg-* 的资源组。 资源组包含以下五个资源:

    资源类型 名称 说明
    Azure 函数 clickstream* 生成点击流数据
    事件中心 clickstream* 引入点击流数据以供使用
    流分析作业 ClickStream-Filter 定义一个查询以从点击流输入中提取 GET 请求
    Blob 存储 clickstream* ASA 作业的输出目标
    应用服务计划 clickstream* Azure Function 的必要条件
  6. 祝贺你! 你已经部署了一个流式处理应用程序来从网站点击流中提取请求。

  7. ASA 作业 ClickStream-Filter 使用以下查询从点击流中提取 HTTP 请求。 在查询编辑器中选择“测试查询”以预览输出结果。

    SELECT System.Timestamp Systime, UserId, Request.Method, Response.Code, Browser
    INTO BlobOutput
    FROM ClickStream TIMESTAMP BY Timestamp
    WHERE Request.Method = 'GET' or Request.Method = 'POST'
    

    测试查询

  8. 查询注释中有示例代码,可将其用于具有一个流输入的其他流分析方案。

    • 计算每小时的点击次数

      select System.Timestamp as Systime, count( * )
      FROM clickstream
      TIMESTAMP BY EventTime
      GROUP BY TumblingWindow(hour, 1)
      
    • 选择非重复用户

      SELECT *
      FROM clickstream
      TIMESTAMP BY Time
      WHERE ISFIRST(hour, 1) OVER(PARTITION BY userId) = 1
      
  9. 所有输出结果都作为 JSON 文件存储在博客存储中。 可通过以下方式进行查找:“Blob 存储”>“容器”>“job-output”>>Blob 存储

Clickstream-RefJoin

如果要使用存储中的用户文件查找点击流的用户名,可以将点击流与参考输入联接,如以下体系结构:对两个输入进行点击流操作

假设已完成上一示例的步骤,请运行以下命令来创建一个新的资源组:

  1. $subscriptionId 替换为你的 Azure 订阅 ID 并运行以下命令来部署 Azure 资源。 此过程可能需要几分钟才能完成。

    .\CreateJob.ps1 -job ClickStream-RefJoin -eventsPerMinute 11 -subscriptionid $subscriptionId
    
  2. 部署完成后,它会自动打开浏览器,Azure 门户中会显示名为 ClickStream-RefJoin-rg-* 的资源组。 资源组包含五个资源。

  3. ASA 作业 ClickStream-RefJoin 使用以下查询将点击流与参考 sql 输入联接。

    CREATE TABLE UserInfo(
      UserId bigint,
      UserName nvarchar(max),
      Gender nvarchar(max)
    );
    SELECT System.Timestamp Systime, ClickStream.UserId, ClickStream.Response.Code, UserInfo.UserName, UserInfo.Gender
    INTO BlobOutput
    FROM ClickStream TIMESTAMP BY EventTime
    LEFT JOIN UserInfo ON ClickStream.UserId = UserInfo.UserId
    
  4. 祝贺你! 你已经部署了一个流式处理应用程序来将用户文件与网站点击流联接。

清理资源

如果已试用此项目且不再需要该资源组,请在 PowerShell 中运行此命令以删除该资源组。

Remove-AzResourceGroup -Name $resourceGroup

如果计划在将来使用此项目,可以跳过删除它的操作,暂时停止该作业。