你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

快速入门:构建用于点击流分析的端到端流式应用程序

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

本指南中概述的方法使用 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
    
  4. $subscriptionId 替换为您的 Azure 订阅 ID,并运行以下命令来部署 Azure 资源。 此过程可能需要几分钟才能完成。

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

    资源类型 Name Description
    Azure 函数 点击流 生成点击流数据
    事件中心 点击流 引入点击流数据以供使用
    流分析作业 ClickStream-Filter 定义用于从点击流输入中提取 GET 请求的查询
    Blob 存储 点击流 ASA 作业的输出目标
    应用服务计划 点击流 Azure 函数的必备项
  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 Storage > 容器 > 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

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

后续步骤

若要了解 Azure 流分析,请继续阅读以下文章: