支持的数据类型

注意

2025 年 3 月之后,将不再支持时序见解 (TSI) 服务。 请考虑尽快将现有 TSI 环境迁移到备用解决方案。 有关弃用和迁移的详细信息,请访问我们的文档

下表列出了 Azure 时序见解第 2 代支持的数据类型

数据类型 说明 示例 时序表达式语法 Parquet 中的属性列名称
bool 具有两种状态之一的数据类型:truefalse "isQuestionable" : true $event.isQuestionable.Bool$event['isQuestionable'].Bool isQuestionable_bool
datetime 表示某个时刻,通常以日期和当天的时间表示。 以 ISO 8601 格式表示。 日期/时间属性始终以 UTC 格式存储。 如果格式正确,将应用时区偏移,然后以 UTC 格式存储值。 有关环境时间戳属性和日期/时间偏移的详细信息,请参阅部分 "eventProcessedLocalTime": "2020-03-20T09:03:32.8301668Z" 如果“eventProcessedLocalTime”是事件源时间戳:$event.$ts。 如果它是另一个 JSON 属性:$event.eventProcessedLocalTime.DateTime$event['eventProcessedLocalTime'].DateTime eventProcessedLocalTime_datetime
double 一个双精度 64 位数字 "value": 31.0482941 $event.value.Double$event['value'].Double value_double
long 已签名的 64 位整数 "value" : 31 $event.value.Long$event['value'].Long value_long
string 文本值,必须包含有效的 UTF-8。 Null 字符串和空字符串的处理方式相同。 "site": "DIM_MLGGG" $event.site.String$event['site'].String site_string
dynamic 一个复杂的(非基元)类型,由数组或属性包(字典)组成。 目前只会将基元的字符串化 JSON 数组或不包含 TS ID 或时间戳属性的对象数组存储为动态数组。 请阅读此文章,了解对象如何平展,以及数组如何展开。 存储为此类型的有效负载属性只能通过以下方式进行访问:在时序见解资源管理器中选择 Explore Events 来查看原始事件,或者使用用于客户端分析的 GetEvents 查询 API。 "values": "[197, 194, 189, 188]" 尚不支持在时序表达式中引用动态类型 values_dynamic

注意

支持 64 位整数值,但是由于 JavaScript 的限制,Azure 时序见解资源管理器可以安全地表示的最大值是 9,007,199,254,740,991 (2^53-1)。 如果在以上数据模型中使用数字,可以通过创建时序模型变量转换值来减小大小。

注意

字符串类型不可以为 null:

  • 时序查询中表示的时序表达式 (TSX) 将空字符串 ('') 的值与 NULL 进行比较,其行为方式相同:$event.siteid.String = NULL 等效于 $event.siteid.String = ''
  • 即使原始事件包含空字符串,API 也可能返回 NULL 值。
  • 不要依赖于 String 列中的 NULL 值来进行比较或求值,请将它们视为空字符串 。

发送混合数据类型

Azure 时序见解第 2 代环境为强类型环境。 如果设备或标记为某个设备属性发送不同类型的数据,则值会存储在两个不同的列中,而你在 API 调用中定义时序模型变量表达式时应使用 coalesce() 函数

Azure 时序见解资源管理器提供了一种方法来自动联合同一设备属性的不同列。 在下面的示例中,传感器会发送一个 PresentValue 属性,该属性可以是 Long 或 Double。 若要查询 PresentValue 属性的所有已存储值(不管数据类型如何),请选择 PresentValue (Double | Long),系统会替你联合这些列。

Explorer auto coalesce

对象和数组

你可以在事件有效负载中发送复杂类型,例如对象和数组。 嵌套对象将被平展,数组将存储为 dynamic 或进行平展以生成多个事件,具体取决于你的环境配置和 JSON 形状。 若要了解详细信息,请阅读 JSON 平展和转义规则

后续步骤