65.9K
CodeProject 正在变化。 阅读更多。
Home

Azure Synapse Analytics 面向 SQL Server 大师 - 第一部分: 概述

emptyStarIconemptyStarIconemptyStarIconemptyStarIconemptyStarIcon

0/5 (0投票)

2021 年 7 月 13 日

CPOL

6分钟阅读

viewsIcon

4642

在本文中,我们概述了问题:我们虚构的 CEO 希望预测出租车的用车需求,以确保出租车在客户需要的时间和地点都能随时可用。

我们都经历过这样的情况。

我们被推入一个对公司至关重要的项目。该项目将以前所未有的方式考验我们的 SQL 和分析技能。尽管 CEO 用一句话概括了问题,但我们知道解决方案比他们描述的问题要复杂得多。

CEO 说空置的出租车会给公司带来成本。将空车从一个地方移动到另一个地方也是昂贵的。他们希望通过提前了解部署哪些车辆来降低成本。汽车应该在正确的时间出现在正确的地点。

但正如往常一样,有一个限制:没有预算,而且 CEO 希望明天早上就能看到结果。

这一系列三篇文章将探讨如何使用 Azure Synapse Analytics 及其全面的 T-SQL 支持来解决这一挑战。

问题概述

由于我们的周转时间很短,我们将使用我们最擅长的方式来解决这个问题:SQL Server。虽然构建一个使用时间序列分析的应用程序需要数周时间,但我们可以将数据放入 Azure Spark 池,并使用 Microsoft Azure 的自动化机器学习 (ML)。

我们的解决方案需要两个预测:一个关于哪次行程会发生,以及该行程的呼叫数量的预测。

从一开始我们就知道,我们可以使用逻辑模型来解决这个问题。为了解决这个问题,我们将使用

  • 出租车呼叫:这是需求。
  • 出租车可用性:这是供应。
  • 行程(两个地点之间):这是产品或 SKU。
  • 行程长度:这是成本。行程越长,成本越高。
  • 区域:这是我们物流模型中的库存点。

您也可以将此模型用于其他情况。例如,将短语“从区域 1 到区域 50 的出租车呼叫”替换为“在丹佛分店的钳子呼叫”。

该问题包含两个主要部分。首先,我们必须预测需求和目标目的地将在哪里。我们还必须以最具成本效益的方式部署过剩的车辆供应,即在某个区域的供应出现“缺口”时。

数据中可能存在典型的季节性、月度、季度和年度模式。模式也可能存在于每周、每日和每小时。对于此模型,我们将需求汇总到每小时的存储桶中。我们假设在某个小时存储桶中结束行程的任何车辆在该小时内都是可用的车辆供应,这不一定真实,但对于我们的目的来说是一个足够好的近似。

我们的目标

有了需求预测和 T-SQL 技能,我们将使用此出租车物流模型来生成供应模型。结合这两个模型,我们就可以创建一个部署计划。

我们将根据预测期和区域创建预测。基于此预测,我们将使未来的供应可用。我们将知道哪些地点供应不足,哪些地点供应过剩。然后,只需部署最近的出租车即可将供应与需求平衡。

在预测期结束时,我们可以为接下来的几个时期创建一个建议的部署计划。

我们将使用哪些工具?

我们使用多个 Azure 资源来解决这个问题

  • Azure Synapse Analytics
  • Azure Machine Learning Studio
  • Azure SQL 数据库(无服务器)
  • Azure SQL 数据库(专用)
  • Azure Spark 池

假设我们有一个本地 SQL 数据库,其中包含行程数据。我们希望使用 Microsoft Azure Synapse 来分析我们的数据,因此我们需要将数据上传到我们的 Azure Blob 存储。

在本文中,我们不会详细介绍基础知识,但如果您需要有关设置 Azure Synapse Analytics 的更多信息,请查看本文末尾的资源或注册 Azure Synapse Analytics 实战培训系列。请注意,通过创建链接服务,您可以访问 Azure Synapse 工作区之外的其他 Azure 服务。

要遵循本文系列,您需要有一个 Azure 帐户。您可以 创建免费的 Azure 帐户,您将获得 200 美元的积分,用于在 30 天内探索 Azure 所提供的一切。

对于此解决方案,我们只需要行程数据。原始行程数据包含开始时间、结束时间、开始位置、结束位置和行程距离。我们可以从这些数据中推导出模型的所有输入。我们不关心物理位置——只关心行程数据中存储的位置 ID。我们将通过平均行程距离和持续时间来对行程进行分类,并按开始和结束区域进行分组。区域编号组合在一起创建了一个唯一的行程索引。

我们可以通过 Azure Data Studio 高效地将数据放入我们的 Azure Synapse 工作区。此应用程序随 SQL Server Management Studio (SSMS) 18 版本之后一起提供。

我们可以使用 Azure Data Studio 连接到我们的本地 SQL Server。我们可以使用 SQL 脚本和 Jupyter Notebook 查询我们的数据。在本例中,我们使用 Jupyter 中的 Python Notebook 从 SQL 中提取了数据,并将其保存为 Parquet 格式(一种压缩的数据库文件格式)——我们将在本系列的后续内容中解释此过程。然后,我们可以将此数据上传到 Azure Blob 存储中的 Azure Spark 容器目录。

在 Azure Synapse Analytics 中,我们可以从外部无服务器 SQL 表查询上传的数据,并将其作为 Spark 表查询。无论您的舒适区是 SQL、Python、Scala 还是 C#,您都处于使用 Azure Synapse Analytics 的绝佳位置。

后续步骤

项目代码、SQL 脚本和 Notebook 都可以在 GitHub 上通过下面的链接找到。该列表还包括我们在此文章中引用的详细信息和知识的资源链接。

在接下来的两篇文章中,我们将详细深入研究这个项目。在我们的教程中,简单的 SQL 脚本会将我们原始的出租车数据转换为可用的需求数据。然后,Azure Machine Learning 将创建需求预测。在此之前,所有数据都保留在 Azure Blob 存储容器中。然后,我们将需求预测保存到专用 SQL 实例,然后生成部署报告,以帮助我们的 CEO 确保出租车在正确的时间出现在正确的地点。

继续阅读本系列的第二篇文章,了解如何将数据导入 Azure Synapse Analytics 并构建机器学习模型。

要了解有关充分利用组织数据的更多信息,您还可以注册 Microsoft 的 Azure Synapse Analytics 实战培训系列

资源

© . All rights reserved.