来自 Azure 流分析的服务总线主题输出

服务总线队列提供从发送方到接收方的一对一通信方法。 服务总线主题提供一对多形式的通信。

下表列出了用于创建服务总线主题输出的属性名称及其说明。

属性名称 说明
输出别名 该名称是在查询中使用的易记名称,用于将查询输出定向到此服务总线主题。
服务总线命名空间 包含一组消息实体的容器。 创建新的事件中心后,还创建了 Service Bus 命名空间。
主题名称 主题是消息传递实体,类似于事件中心和队列。 设计用于从设备和服务收集事件流。 在创建主题时,还会为其提供特定的名称。 发送到主题的消息在创建订阅后才会提供给用户,因此请确保主题下存在一个或多个订阅
主题策略名称 创建服务总线主题时,还可以在主题的“配置”选项卡上创建共享的访问策略。每个共享访问策略具有名称、所设权限以及访问密钥。
主题策略密钥 用于对服务总线命名空间的访问权限进行身份验证的共享访问密钥。
事件序列化格式 输出数据的序列化格式。 支持 JSON、CSV 和 Avro。
编码 如果使用 CSV 或 JSON 格式,则必须指定一种编码格式。 目前只支持 UTF-8 这种编码格式。
分隔符 仅适用于 CSV 序列化。 流分析支持大量的常见分隔符以对 CSV 格式的数据进行序列化。 支持的值为逗号、分号、空格、制表符和竖线。
属性列 可选。 需要作为传出消息(而不是有效负载)的用户属性附加的以逗号分隔的列。 输出的自定义元数据属性部分详细介绍了此功能。
系统属性列 可选。 需要附加到传出消息而不是附加到有效负载的系统属性和相应列名的键值对。

分区数基于服务总线 SKU 和大小。 分区键是每个分区的唯一整数值。

分区

分区是自动选择的。 分区数基于服务总线 SKU 和大小。 分区键是每个分区的唯一整数值。 输出写入器的数量与输出主题中的分区数相同。

输出批大小

标准层的每条消息的最大消息大小为 256 KB,高级层则为 1 MB。 有关详细信息,请参阅服务总线限制。 若要进行优化,请对每条消息使用单个事件。

输出的自定义元数据属性

可将查询列作为用户属性附加到传出的消息。 这些列不会进入有效负载。 这些属性以字典形式在输出消息中提供。 键是列名,值是属性字典中的列值。 支持除“记录”和“数组”以外的其他所有流分析数据类型。

在以下示例中,字段 DeviceIdDeviceStatus 将添加到元数据中。

  1. 使用以下查询:

    select *, DeviceId, DeviceStatus from iotHubInput
    
  2. DeviceId,DeviceStatus 配置为输出中的属性列。

    Property columns

下图显示了在事件中心使用 Service Bus Explorer 检查的预期输出消息属性。

Event custom properties

系统属性

可以将查询列作为系统属性附加到传出的服务总线队列或主题消息。 这些列不会进入有效负载,而是用查询列值填充相应的 ServiceBusMessage 系统属性。 支持这些系统属性 - MessageId, ContentType, Label, PartitionKey, ReplyTo, SessionId, CorrelationId, To, ForcePersistence, TimeToLive, ScheduledEnqueueTimeUtc

这些列的字符串值将分析成相应的系统属性值类型,任何分析失败将被视为数据错误。 此字段以 JSON 对象格式提供。 有关此格式的详细信息如下:

  • 用大括号 {} 括住。
  • 以键值对的形式编写。
  • 键和值必须是字符串。
  • 键是系统属性名称,值是查询列名。
  • 键和值以冒号分隔。
  • 每个键/值对用逗号分隔。

下面展示了如何使用此属性 –

  • 查询:select *, column1, column2 INTO queueOutput FROM iotHubInput
  • 系统属性列:{ "MessageId": "column1", "PartitionKey": "column2"}

这会在服务总线队列消息的 MessageId 中设置 column1 的值,并在 PartitionKey 中设置 column2 的值。

后续步骤