你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
重要
Azure 流分析的 .Net Standard 用户定义函数将于 2024 年 9 月 30 日停用。 在该日期之后,将无法使用该功能。 请过渡到适用于 Azure 流分析的 JavaScript 用户定义函数 。
使用 Visual Studio 中创建的 C# 用户定义的函数(UDF),可以使用自己的函数扩展 Azure 流分析查询语言。 可以重复使用现有代码(包括 DLL),并通过 C# 使用数学或复杂逻辑。 可通过三种方法实现 UDF:
- 流分析项目中的 CodeBehind 文件
- 本地 C# 项目中的 UDF
- 存储帐户中现有包中的 UDF。
本教程使用 CodeBehind 方法实现基本 C# 函数。 流分析作业的 UDF 功能目前为预览版,不应在生产工作负荷中使用。
本教程中,您将学习如何:
- 使用 CodeBehind 创建 C# 用户定义函数。
- 在本地测试流分析作业。
- 将作业发布到 Azure。
先决条件
在开始之前,请确保已完成以下先决条件:
- 如果没有 Azure 订阅,可以创建一个免费帐户。
- 安装 适用于 Visual Studio 和 Azure 开发 或 数据存储和处理 工作负荷的流分析工具。
- 如果要生成 IoT Edge 作业,请查看现有的 流分析 Edge 开发指南 。
在 Azure 存储帐户中创建容器
创建的容器用于存储已编译的 C# 包。 如果创建 Edge 作业,此存储帐户还用于将包部署到 IoT Edge 设备。 为每个流分析作业使用专用容器。 不支持为多个流分析 Edge 作业重用同一容器。 如果已有包含现有容器的存储帐户,可以使用它们。 如果没有,则需要 创建新的容器。
在 Visual Studio 中创建流分析项目
启动 Visual Studio。
选择“文件”>“新建”>“项目”。
在左侧的模板列表中,选择 “流分析”,然后选择 “Azure 流分析边缘应用程序 ”或 “Azure 流分析应用程序”。
输入项目名称、位置和解决方案名称,然后选择“确定”。
配置程序集包路径
打开 Visual Studio 并导航到 解决方案资源管理器。
双击作业配置文件。
JobConfig.json展开用户定义代码配置部分,并使用以下建议的值填写配置:
设置 建议的值 全局存储设置资源 从当前帐户中选择数据源 全局存储设置订阅服务 < 订阅 > 全局存储设置存储帐户 < 您的存储帐户 > 自定义代码存储设置资源 从当前帐户中选择数据源 自定义代码存储设置存储帐户 < 你的存储帐户 > 自定义代码存储配置容器 < 您的存储容器 >
使用 CodeBehind 编写 C# UDF
CodeBehind 文件是与单个 ASA 查询脚本关联的 C# 文件。 提交后,Visual Studio 工具会自动压缩 CodeBehind 文件并将其上传到 Azure 存储帐户。 所有类都必须定义为 公共 类,并且所有对象都必须定义为 静态公共类。
在 解决方案资源管理器中,展开 Script.asql 以查找 Script.asaql.cs CodeBehind 文件。
将代码替换为以下示例:
using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; namespace ASAEdgeUDFDemo { public class Class1 { // Public static function public static Int64 SquareFunction(Int64 a) { return a * a; } } }
实现用户自定义函数 (UDF)
在 解决方案资源管理器中,打开 Script.asaql 文件。
将现有查询替换为以下查询:
SELECT machine.temperature, udf.ASAEdgeUDFDemo_Class1_SquareFunction(try_cast(machine.temperature as bigint)) INTO Output FROM Input
本地测试
下载 温度模拟器示例数据文件。
在 解决方案资源管理器中,展开 “输入”,右键单击 Input.json,然后选择“ 添加本地输入”。
为下载和 保存的示例数据指定本地输入文件路径。
在脚本编辑器中单击“ 在本地运行 ”。 本地运行成功保存输出结果后,按任意键查看表格式的结果。
还可以选择 “打开结果文件夹 ”,查看 JSON 和 CSV 格式的原始文件。
调试 UDF
可以采用与调试标准 C# 代码相同的方式在本地调试 C# UDF。
在 C# 函数中添加断点。
按 F5 开始调试。 程序按预期在断点处停止。
将任务发布到 Azure
在本地测试查询后,请在脚本编辑器中选择 “提交到 Azure ”,将作业发布到 Azure。
部署到 IoT Edge 设备
如果选择生成流分析 Edge 作业,现在可以将其部署为 IoT Edge 模块。 按照 IoT Edge 快速入门创建 IoT 中心、注册 IoT Edge 设备,并在设备上安装和启动 IoT Edge 运行时。 然后,按照 部署作业 教程将流分析作业部署为 IoT Edge 模块。
后续步骤
在本教程中,你使用 CodeBehind 创建了一个简单的 C# 用户定义函数,将作业发布到 Azure,并将作业部署到 Azure 或 IoT Edge 设备。
若要详细了解为流分析作业使用 C# 用户定义函数的不同方法,请继续阅读本文: