云服务器内容精选

  • 场景说明 物联网平台为用户提供了丰富的报表功能,能够将数据直观地呈现出来,当您想将报表中的数据集成到自己的运维系统时,可以使用AOM的订阅功能将IoTDA推送的指标数据推送至DMS Kafka,您可以消费DMS Kafka中的指标数据展示在您自己的运维系统中。本示例为使用AOM订阅功能将指标数据推送至DMS Kafka,并以在线设备数指标为例展示。IoTDA支持的指标数据可参考IoTDA指标详情。
  • 前提条件 已注册华为官方账号。未注册可参考注册华为账户注册华为账户完成注册。 已完成实名制认证。未完成可在华为云上单击实名认证完成认证,否则会影响后续云服务的开通。 已开通设备接入服务。未开通则访问设备接入服务,单击“免费试用”或单击“价格计算器”购买并开通该服务。 已开通AOM服务。访问AOM服务,单击“AOM2.0控制台”,单击“免费开通服务并授权”开通该服务。 已开通DMS Kafka服务。未开通则访问DMS Kafka服务,单击“立即购买”后开通该服务。
  • 相关推荐 相关文档 相关产品 设备数据上报 使用HTTP/HTTPS订阅推送 使用AMQP订阅推送 查看运行日志 消息通知服务SMN 数据接入服务DIS 分布式消息服务Kafka 对象存储服务OBS 应用与数据集成平台ROMA Connect 云日志服务(LTS) 函数工作流FunctionGraph 分布式消息服务(RocketMQ) 云数据库 GeminiDB Influx MapReduce服务(MRS Kafka) 云数据库MySQL 区块链服务 BCS
  • 概述 数据转发功能用于提供IoTDA与其他云服务的连接通道,从而实现将设备数据平滑流转至消息中间件、存储、数据分析、业务应用。各转发方式在各规格的支持情况,详见产品规格说明中 基础版、标准版与企业版实例功能差异。当前物联网平台支持如下转发方式: 表1 数据转发概述 分类 转发目标 说明 操作指导 数据分析 数据接入服务 DIS 将数据流转到华为云DIS云服务。目前DIS支持数据转存储至对象存储服务 OBS、MapReduce服务 MRS、数据湖探索 DLI、数据仓库服务 DWS、表格存储服务 CloudTable。具体DIS支持的转存储任务已实际购买的实例为准。 应用场景:数据接入服务主要解决云服务外的数据实时传输到云服务内的问题。 规格参考:通道规格理论1个分区1M/秒接入,2M/秒读取。 数据转发至DIS 分布式消息服务Kafka版 将数据流转到华为云DMS Kafka云服务,适用于构建实时数据管道、流式数据处理、第三方解耦、流量削峰去谷等场景,具有大规模、高可靠、高并发访问、可扩展且完全托管的特点。 应用场景:在日志收集、流式数据传输、在线/离线系统分析、实时监控等领域有广泛的应用。 规格参考:Kafka实例规格。 数据转发至Kafka存储 应用与数据集成平台ROMAConnect 将数据流转到华为云ROMA Connect, 可以实现无缝联接应用、消息、数据、API、设备,帮助企业快速、简单的打通并管理遗留系统与云原生应用,ROMA Connect是一个全栈式的应用与数据集成平台,源自华为数字化转型集成实践,聚焦应用和数据连接,适配多种企业常见的使用场景。 规格参考:ROMA实例规格。 - 分布式消息服务RocketMQ版 将数据流转到华为云RocketMQ云服务,兼容开源RocketMQ客户端。提供顺序、延迟、定时、重投、死信、事务消息等功能。提供消息追踪、消息溯源、链路诊断、死信导出、监控告警等能力,帮助您全方面的了解服务状况,保证业务正常运行。 应用场景:适用于电商、金融等多样的业务场景。 规格参考:RocketMQ实例规格。 数据转发至RokcetMQ 云日志服务 LTS 将数据流转到华为云LTS云服务,实现一站式日志采集、秒级搜索、海量存储、结构化处理、转储和可视化图表等功能。 应用场景:适用于应用运维、网络日志可视化分析、等保合规和运营分析等应用场景。 规格参考:日志流规格。 查看运行日志 函数工作流 FunctionGraph 将数据流转到华为云FunctionGraph云服务,客户只需要在FunctionGraph中编写业务函数代码并设置运行的条件,无需配置和管理服务器等基础设施,函数以弹性、免运维、高可靠的方式运行。此外,按函数实际执行资源计费,不执行不产生费用。 数据转发转发至FunctionGraph函数工作流 MapReduce服务 MRS 将数据转发到华为云MRS Kafka云服务,它的Kafka集群是一个分布式的、分区的、多副本的消息发布-订阅系统,它提供了类似于JMS的特性,Mysql性能规格但在设计上完全不同,它具有消息持久化、高吞吐、分布式、多客户端支持、实时等特性,适用于离线和在线的消息消费,如常规的消息收集、网站活性跟踪、聚合统计系统运营数据(监控数据)、日志收集等大量数据的互联网服务的数据收集场景。 - 区块链服务 BCS 将数据转发到华为云BCS云服务,作为面向企业及开发者提供的区块链技术服务平台,可以帮助客户快速部署、管理、维护区块链网络,降低客户使用区块链的门槛,让客户可以更专注于自身业务的开发与创新,实现业务快速上链。 规格参考:BCS产品规格。 数据转发至BCS可信上链 数据存储 云数据库 GeminiDB Influx 将数据流转到华为云GeminiDB Influx,兼容InfluxDB生态的云原生时序数据库。提供高性能读写、高压缩率、冷热分层存储以及弹性扩容、监控告警等服务能力,可以实现大并发的时序数据读写,压缩存储和类SQL查询等功能,支持多维聚合计算和数据可视化分析能力。 应用场景:广泛应用于资源监控、业务监控分析、物联网设备实时监控、工业生产监控、生产质量评估和故障回溯等。提供了高吞吐量和并发性,可以通过快速的响应时间来支持大量的连接,非常适合要求苛刻的物联网应用。 规格参考:InfluxDB规格。 数据转发至GeminiDB Influx 云数据库 RDS for MySQL 将数据流转到华为云RDS MySQL,相比自建数据库,RDS价格便宜、 即开即用,便捷运维,支持弹性伸缩并具备实例管理、实例监控、备份恢复、日志管理、参数管理等功能,支持单机和主备部署。 应用场景:网站业务、移动应用、游戏业务、电商业务、金融业务以及企业应用等。 规格参考:Mysql性能规格。 数据转发至MySQL 对象存储服务 OBS 将数据流转至华为云OBS云服务,OBS为客户提供海量、安全、高可靠、低成本的数据存储能力,使用时无需考虑容量限制,并且提供多种存储类型供选择,满足客户各类业务场景诉求,OBS也支持对接实时计算CS云服务,实时分析数据流,分析结果对接到其他云服务或者第三方应用进行数据可视化等。 应用场景:适用于海量大数据存储分析的场景。 规格参考:OBS存储规格。 数据转发至OBS长期存储 文档数据库服务DDS功能 将数据流转至华为云文档数据库服务DDS,DDS完全兼容MongoDB协议,具备安全审计,多账号管理,时间点备份恢复能力,支持集群和副本集部署架构。10倍备份恢复能力,分钟级横向扩容,轻松承载海量数据的高并发写入。 应用场景:游戏业务,物联网业务,电商、考勤系统等有典型高并发场景,对数据库性能要求较高。 规格参考:DDS性能规格 数据转发至MongoDB存储 通过公网进行数据转发流量限制不超过1M/s,超过后消息会直接丢弃。如果要使用更大的流量进行数据转发,推荐使用企业版,企业版支持私网进行数据转发,无此限制。
  • 购买RocketMQ 登录华为云,访问分布式消息服务RocketMQ版, 进入分布式消息服务管理控制台。 单击右上角“购买RocketMQ实例”, 按照需求选择RocketMQ规格,单击“立即购买”。 图1 购买RocketMQ 单击进入购买的RocketMQ实例,开启ACL访问控制后,单击“用户管理”添加用户,可参考创建用户。 图2 添加用户 单击左侧导航栏“topic管理”,单击“创建topic”创建RocketMQ的topic。
  • 响应示例 状态码: 200 OK { "count" : 1, "forwarding_configs" : [ { "forwarding_type" : "kafka", "kafka_config" : { "kafka_config_id" : "1234567890", "kafka_topics" : [ "v2x-v1-tracks", "v2x-v1-bsm", "v2x-v1-rsi", "v2x-v1-rsm", "v2x-v1-spat", "v2x-v1-edge-flow" ], "brokers" : [ "127.0.0.1:10000" ], "username" : "1234567890", "topic_prefix" : "abc", "status" : "ONLINE", "created_time" : "2015-12-12T12:12:12Z", "last_modified_time" : "2015-12-13T12:12:12Z" }, "mrs_kafka_config" : { "kafka_config_id" : null, "kafka_topics" : [ "v2x-v1-tracks", "v2x-v1-bsm", "v2x-v1-rsi", "v2x-v1-rsm", "v2x-v1-spat", "v2x-v1-edge-flow" ], "brokers" : [ "127.0.0.1:10000" ], "username" : null, "status" : null, "authentication" : false, "created_time" : "2015-12-12T12:12:12Z", "last_modified_time" : "2015-12-12T12:12:12Z" } } ] }
  • 响应参数 状态码: 200 表4 响应Body参数 参数 参数类型 描述 count Integer 参数说明:满足查询条件的记录总数。 最小值:0 最大值:10000 forwarding_configs Array of ForwardingConfig objects 参数说明:转发配置的列表。 数组长度:0 - 50 表5 ForwardingConfig 参数 参数类型 描述 forwarding_type String 参数说明:转发配置的类型。 取值范围:当前仅支持“kafka、mrskafka”。 kafka_config KafkaConfigResponseDTO object 参数说明:Kafka配置信息。 mrs_kafka_config MrsKafkaConfigResponseDTO object 参数说明:mrsKafka配置信息。 表6 KafkaConfigResponseDTO 参数 参数类型 描述 kafka_config_id String 参数说明:每一套Kafka配置的唯一ID。 取值范围:只允许字母、数字、下划线(_)、连接符(-)的组合。 最小长度:1 最大长度:255 kafka_topics Array of strings 参数说明:kafka的主题列表。 取值范围: v2x-v1-tracks:edge上报的车辆轨迹数据 v2x-v1-bsm:车载T-BOX,RSU上报的BSM消息数据 v2x-v1-rsi:RSU,edge上报的RSI消息数据 v2x-v1-rsm: RSU,edge上报的RSM消息数据 v2x-v1-spat:RSU上报的SPAT消息数据 v2x-v1-edge-flow:edge上报的车流量统计信息数据 数组长度:0 - 7 brokers Array of strings 参数说明:Kafka broker列表。 最小长度:1 最大长度:255 数组长度:1 - 255 username String 参数说明:kafka用户名。 取值范围:只允许字母、数字、下划线(_)、连接符(-)的组合。 最小长度:1 最大长度:255 topic_prefix String 参数说明:Topic前缀。 取值范围:长度不超过255,只允许字母、数字、下划线(_)、连接符(-)的组合。 status String 参数说明:一套kafka的连接状态。 取值范围: OFFLINE:离线 ONLINE:在线 枚举值: OFFLINE ONLINE created_time String 参数说明:创建时间。 格式为yyyy-MM-dd'T'HH:mm:ss'Z' 例如:2015-12-12T12:12:12Z last_modified_time String 参数说明:修改时间。 格式为yyyy-MM-dd'T'HH:mm:ss'Z' 例如:2015-12-12T12:12:12Z 表7 MrsKafkaConfigResponseDTO 参数 参数类型 描述 kafka_config_id String 参数说明:每一套Kafka配置的唯一ID。 取值范围:只允许字母、数字、下划线(_)、连接符(-)的组合。 最小长度:1 最大长度:255 kafka_topics Array of strings 参数说明:kafka的主题列表。 取值范围: v2x-v1-tracks:edge上报的车辆轨迹数据 v2x-v1-bsm:车载T-BOX,RSU上报的BSM消息数据 v2x-v1-rsi:RSU,edge上报的RSI消息数据 v2x-v1-rsm: RSU,edge上报的RSM消息数据 v2x-v1-spat:RSU上报的SPAT消息数据 v2x-v1-edge-flow:edge上报的车流量统计信息数据 数组长度:0 - 7 brokers Array of strings 参数说明:Kafka broker列表。 最小长度:1 最大长度:255 数组长度:1 - 255 username String 参数说明:mrskafka用户名,若开启安全认证该参数必填。 取值范围:只允许字母、数字、下划线(_)、连接符(-)的组合。 最小长度:0 最大长度:255 status String 参数说明:一套kafka的连接状态。 取值范围: OFFLINE:离线 ONLINE:在线 枚举值: OFFLINE ONLINE authentication Boolean 参数说明:是否开启kerberos安全认证的开关。若开启安全认证则需要先上传kerberos安全认证的凭证。 缺省值:false created_time String 参数说明:创建时间。 格式为yyyy-MM-dd'T'HH:mm:ss'Z' 例如:2015-12-12T12:12:12Z last_modified_time String 参数说明:修改时间。 格式为yyyy-MM-dd'T'HH:mm:ss'Z' 例如:2015-12-12T12:12:12Z
  • Message示例 { "header" : { "instance_id" : "f24b3b95-4a2a-4f6f-a80c-855156b50af7", "event" : "ADDED" }, "body" : { "source" : { "source_type" : "detection", "source_id" : "EDGE0123456789", "esn" : "2102312ETX10K7000037" }, "time" : "2020-09-01T01:37:01.123Z", "cross_id" : "cross0123456789", "track_list" : [ { "track_id" : 50, "ptc_type" : "motor", "ptc_id" : 3, "source" : "rsu", "global_track_id" : 3, "vehicle_class" : 10, "vehicle_color" : "black", "vehicle_model" : "朗逸", "vehicle_brand" : "红旗", "vehicle_style" : "2018,2019,2020", "gat_vehicle_class" : "K33", "plat_no" : "浙A12345", "heading" : 158.23, "speed" : 10.2, "car_direction" : 1, "fuel_type" : 5, "camera_list" : [ { "id" : 0, "ip" : "127.0.0.1" } ], "size" : { "width" : 200, "length" : 400, "height" : 200 }, "location_list" : [ { "lon" : 123.123, "lat" : 11.123, "speed" : 10.2, "accel_set" : { "long_accel" : 3, "lat_accel" : 4, "vert_accel" : 0, "yaw_rate" : 0 }, "heading" : 158.23, "angle" : 0, "car_direction" : 1, "time_stamp" : 1626243657123 } ] } ] } }
  • Message参数 表1 请求Body参数 参数 是否必选 参数类型 描述 header 是 OpenV2XTracksHeader object 参数说明:轨迹数据信息的附加描述。 body 是 OpenV2XTracksBody object 参数说明:轨迹数据信息。 表2 OpenV2XTracksHeader 参数 是否必选 参数类型 描述 instance_id 是 String 参数说明:实例ID。dris物理实例的唯一标识。 event 是 String 参数说明:操作描述。" 取值范围: MODIFIED:修改 ADDED:新增 DELETED:删除 枚举值: MODIFIED ADDED DELETED 表3 OpenV2XTracksBody 参数 是否必选 参数类型 描述 source 否 TracksSource object 参数说明:消息来源。 time 否 String 参数说明:数据上报的时间。 格式:yyyy-MM-dd'T'HH:mm:ss.SSS'Z'。 例如 2021-01-08T02:03:41.907Z。 cross_id 否 String 参数说明:路口id,对应到一组雷视拟合设备,检测一个特定的路口或者路段。 最小长度:0 最大长度:64 track_list 否 Array of TrackList objects 参数说明:轨迹列表。 数组长度:0 - 100 表4 TracksSource 参数 是否必选 参数类型 描述 source_type 否 String 参数说明:信息来源的具体类型描述。 枚举值: rsu obu detection sne source_id 否 String 参数说明:信息来源的唯一标识码ID。 最小长度:1 最大长度:255 esn 否 String 参数说明:设备编码。 取值范围:长度不超过64,只允许字母、数字、以及_等字符的组合。 表5 TrackList 参数 是否必选 参数类型 描述 track_id 否 Long 参数说明:轨迹id。 最小值:0 最大值:9223372036854775807 ptc_type 否 String 参数说明:路侧单元检测到的交通参与者类型。 取值范围: unknown:未知类型 motor:机动车 non-motor:非机动车 pedestrian:行人 rsu:RSU设备 ptc_id 否 Integer 参数说明:检测单元设置的临时ID。 最小值:0 最大值:65535 source 否 String 参数说明:定义交通参与者数据的来源。 取值范围: unknown:未知数据源类型 rsu:RSU自身信息 v2x:参与者自身的v2x广播消息 video:视频传感器 microwaveRadar:微波雷达传感器 loop:地磁线圈传感器 lidar:激光雷达传感器 integrated:一类或以上感知数据的融合结果 global_track_id 否 Long 参数说明:ITS800通过GlobalTrackID字段标识了车辆唯一ID。 最小值:0 最大值:9223372036854775807 vehicle_class 否 Integer 参数说明:车辆类型。参考车辆基本类型。 最小值:0 最大值:1000 gat_vehicle_class 否 String 参数说明:机动车车辆类型。参考机动车车辆类型。 vehicle_color 否 String 参数说明:车辆颜色。 取值范围: black:黑色 white:白色 gray:灰色 red:红色 blue:蓝色 yellow:黄色 orange:橙色 brown:棕色 green:绿色 purple:紫色 cyan:青色 pink:粉红色 transparent:透明色 other:其他 vehicle_model 否 String 参数说明:车辆型号。 最小长度:0 最大长度:63 vehicle_brand 否 String 参数说明:车辆品牌。 最小长度:0 最大长度:31 vehicle_style 否 String 参数说明:车辆年款,通过年份来表示,多个年份通过逗号分隔。 最小长度:0 最大长度:63 plat_no 否 String 参数说明:车牌。 最小长度:0 最大长度:63 heading 否 Number 参数说明:车的航向角,正北为0度,顺时针增加。单位° 最小值:0 最大值:360 speed 否 Number 参数说明:速度,单位km/h。 最小值:0 最大值:1000 car_direction 否 Integer 参数说明:车辆方向。 取值范围: -1:未知方向 0:车头 1:车尾 最小值:-1 最大值:1 fuel_type 否 Integer 参数说明:定义车辆的燃料动力类型,10-15暂未定义。 取值范围: 0:未知 1:汽油 2:乙醇 3:柴油 4:电动 5:混合燃料类型 6:氢气 7:液化天然气 8:压缩天然气 9:丙烷 最小值:0 最大值:15 size 否 SizeDTO object 参数说明:车辆尺寸。 camera_list 否 Array of TrackCameraInfo objects 拍摄到事件的摄像头信息。 数组长度:0 - 10 location_list 否 Array of LocationList objects 参数说明:位置列表。 数组长度:0 - 100 表6 SizeDTO 参数 是否必选 参数类型 描述 width 否 Integer 参数说明:车辆宽度,单位厘米。 最小值:0 最大值:300 length 否 Integer 参数说明:车辆长度,单位厘米。 最小值:0 最大值:3000 height 否 Integer 参数说明:车辆高度,单位厘米。 最小值:0 最大值:500 表7 TrackCameraInfo 参数 是否必选 参数类型 描述 id 否 Integer 参数说明:SNE的摄像头id,编号从0开始。 最小值:0 最大值:128 ip 否 String 参数说明:摄像头ip。 最小长度:0 最大长度:15 表8 LocationList 参数 是否必选 参数类型 描述 lon 否 Number 参数说明:经度。东经为正,西经为负,单位°,精度小数点后7位。 最小值:-180 最大值:180 lat 否 Number 参数说明:纬度。北纬为正,南纬为负,单位°,精度小数点后7位。 最小值:-90 最大值:90 speed 否 Number 参数说明:速度,单位km/h。 最小值:0 最大值:1000 accel_set 否 AccelerationSet4Way object 参数说明:定义车辆四轴加速度。 heading 否 Number 参数说明:车的航向角,正北为0度,顺时针增加。单位° 最小值:0 最大值:360 angle 否 Integer 参数说明:定义车辆转向轮角度。向右为正,向左为负。单位为1.5°,值为127时代表无效值。 最小值:-126 最大值:127 car_direction 否 Integer 参数说明:车辆方向。 取值范围: -1:未知方向 0:车头 1:车尾 最小值:-1 最大值:1 lane_no 否 Integer 参数说明:车辆所处车道。如果感知设备支持覆盖双向行驶方向时,桩号递增行驶方向,车道号从左到右从1依次递增;桩号递减行驶方向,车道号从左到右从-1依次递减。如果感知设备只支持覆盖单向车道,可以不区分桩号递增或者递减行驶方向,车道号可以按照车辆行驶方向从左到右,从1开始递增。 最小值:-32 最大值:32 time_stamp 否 Long 参数说明:采集车辆数据的毫秒时间戳。 表9 AccelerationSet4Way 参数 是否必选 参数类型 描述 long_accel 是 Integer 参数说明:车辆纵向加速度。单位为0.01米每平方秒。值为2001时代表无效数值。 最小值:-2000 最大值:2001 lat_accel 是 Integer 参数说明:车辆横向加速度。单位为0.01米每平方秒。值为2001时代表无效数值。 最小值:-2000 最大值:2001 vert_accel 是 Integer 参数说明:定义Z轴方向的加速度大小,Z轴方向竖直向下,沿着Z轴方向为正。 分辨率为0.02G,G为重力加速度值9.80665m/s2。 最小值:-127 最大值:127 yaw_rate 是 Integer 参数说明:车辆横摆角速度。指汽车绕垂直轴的偏转,该偏转的大小代表汽车的稳定程度。如果偏转角速度达 到一个阈值,说明汽车发生测滑或者甩尾等危险工况。 顺时针旋转为正,逆时针为负。 数据分辨率为0.01°/s。 最小值:-127 最大值:127
  • 创建MySQL 登录华为云官方网站,访问云数据库 MySQL,购买实例。设备接入服务企业版实例支持通过内网连接MySQL,标准版实例仅支持通过公网连接MySQL。 在购买的MySQL实例中,根据流转数据格式设计数据库表,可以通过数据过滤语句编辑流转数据。本示例使用设备属性上报通知的默认格式,将流转数据中的resource、event、notify_data、event_time分别转存至数据库表中的resource、event、content、event_time字段。 图1 创建数据库表样例
  • 流控策略维度 表1 流控策略类型 流控策略类型 描述 实例级别流控 使用此策略类型时,流控的范围为当前实例中所有数据转发的流量,超出流控的数据会被丢弃。 转发通道流控 使用此策略类型时,流控的范围为当前实例中所有转发至指定目标的流量。 转发规则流控 使用此策略类型时,流控的范围为当前实例中所有触发指定转发规则的流量,超出流控的数据会被丢弃。 转发动作流控 使用此策略类型时,流控的范围为当前实例中所有转发至指定动作的流量。 流控策略创建成功后,不支持修改流控策略类型。 超出实例和转发规则级别流控的数据会被丢弃,请慎重考虑后再使用。 同时创建多个不同类型的流控策略,以最先达到流控阈值的策略为准。例如配置了转发规则A的流控大小为50tps,转发规则A下转发动作B的流控大小为100tps,触发转发规则A的流转数据流量为80tps,则触发了转发规则A的流控。
  • 操作步骤 访问设备接入服务,单击“管理控制台 ”进入设备接入控制台。 单击“规则” ,选择“数据转发” ,选择 “策略配置” ,进入流控策略配置界面。 图1 策略配置界面 在弹出的界面中填写相关信息后,单击“确定”即可完成流控策略创建。 图2 创建流控策略 表2 参数说明 参数名称 描述 策略名称 长度为4-256,只允许中文、字母、数字以及_?'#().,&%@!-等字符的组合。 描述 关于该策略的描述,长度为4-256,只允许中文、字母、数字以及_?'#().,&%@!-等字符的组合。 流控大小 取值范围为1-1000。 流控策略类型 包括实例级别流控、转发通道流控、转发规则流控、转发动作流控四种流控策略类型。 转发目标 当流控策略类型为转发通道流控时生效,对应当前实例支持的转发通道类型。 绑定规则 当流控策略类型为转发规则流控时生效,对应IoT物联网平台上的数据转发规则。 绑定动作 当流控策略类型为转发动作流控时生效,对应IoT物联网平台上的数据转发动作。
  • Message示例 { "header" : { "instance_id" : "f24b3b95-4a2a-4f6f-a80c-855156b50af7", "event" : "ADDED" }, "body" : { "source" : { "source_type" : "detection", "source_id" : "705183159624675328_2102312ETX10K7000037" }, "time" : "2020-09-01T01:37:01Z", "period" : 300, "direction" : 180, "flow" : 75, "average_speed" : 72.5, "cross_id" : "cross0123456789", "esn" : "2102312ETX10K7000037", "traffic_direction" : "0,", "road_kind" : "1,", "has_congestion" : "false,", "vehicle_class_flow" : [ { "vehicle_class" : 10, "flow" : 50, "average_speed" : 73.6 }, { "vehicle_class" : 20, "flow" : 25, "average_speed" : 71.4 } ], "occupancy" : [ { "lane_id" : 0, "space_occupancy" : 0.6, "time_occupancy" : 0.5 }, { "lane_id" : 1, "space_occupancy" : 0.6, "time_occupancy" : 0.5 } ], "lane_flow" : [ { "lane_id" : 10, "flow" : 50, "average_speed" : 73.6 }, { "lane_id" : 20, "flow" : 25, "average_speed" : 71.4 } ] } }
  • SELECT子句 SELECT子句由SELECT后跟多个SELECT子表达式组成,子表达式可以为*,JSON变量,字符串常量或整数常量。JSON变量后跟一个AS关键字和AS变量,长度不超过32个字符。如果使用常量或函数,则必须使用AS指定名称。 JSON变量 JSON变量支持大小写字母,数字,下划线和中划线,为了和减号的意思区分,当使用中划线的时候,请将JSON变量使用双引号进行引用,如:"msg-type"。 Json变量抽取嵌套结构体的数据 { "a":"b", "c": { "d" : "e" } } c.d 即可抽取出字符串e,可以多层嵌套。 AS变量 AS变量由大小写字母组成,大小写敏感。目前支持[a-zA-Z_-]*的模式,如果使用中划线,需要使用双引号进行引用。 常数整数 正如标准的SQL一样,SELECT支持常数整数,常数后必须跟AS子句,如 常数整数的大小范围:-2147483648~2147483647 SELECT 5 AS number 常数字符串 正如标准的SQL一样,SELECT支持常数字符串,目前支持[a-zA-Z_-]*的模式,需要使用单引号进行引用,常数后必须跟AS子句,如 字符串长度范围不能超过50 SELECT 'constant_info' AS str
  • 函数列表 规则引擎提供多种函数,您可以在编写SQL时使用这些函数,实现多样化数据处理。 表2 函数列表 函数名称 携带参数 用途 返回值类型 限制 GET_TAG String tagKey 获取指定tag_key对应的tag_value。 GET_TAG('testTagName') 字符串 - CONTAINS_TAG String tagKey 判断是否包含指定tag_key。 CONTAINS_TAG('testTagName') 布尔值 - GET_SERVICE String serviceId,boolean fuzzy 获取service,若fuzzy为false或者不填,则获取指定service_id的service,若fuzzy为true,则通过模糊匹配查询service,如果您在一个消息体里有多个service_id相同的service,结果目前不保证。 GET_SERVICE('Battery',true) Json结构体格式 只能在属性上报时使用 GET_SERVICES String serviceId,boolean fuzzy 获取services,若fuzzy为false或者不填,获取指定service_id的services,若fuzzy为true,则通过模糊匹配查询services。查询结果将汇合为一个数组。 GET_SERVICES('Battery',true) JSON数组格式 只能在属性上报时使用 CONTAINS_SERVICES String serviceId,boolean fuzzy 若fuzzy为false或者不填,则判断是否存在指定service_id。若fuzzy为true,则使用模糊匹配的方式判断属性中的service_id是否包含指定参数。 CONTAINS_SERVICES('Battery',true) 布尔值 只能在属性上报时使用 GET_SERVICE_PROPERTIES String serviceId 获取指定service_id的service中的properties字段。 GET_SERVICE_PROPERTIES('Battery') Json结构体格式 只能在属性上报时使用 GET_SERVICE_PROPERTY String serviceId, String propertyKey 获取指定service_id的service中的properties中指定属性的值。 示例: GET_SERVICE_PROPERTY('Battery','batteryLevel') 字符串 限制只能在属性上报时使用 STARTS_WITH String input, String prefix 判断input的值是否以prefix开头。 STARTS_WITH('abcd','abc') STARTS_WITH(notify_data.header.device_id,'abc') STARTS_WITH(notify_data.header.device_id,notify_data.header.product_id) 布尔值 - ENDS_WITH String input, String suffix 判断input的值是否以suffix结尾。 ENDS_WITH('abcd','bcd') ENDS_WITH(notify_data.header.device_id,'abc') ENDS_WITH(notify_data.header.device_id,notify_data.header.node_id) 布尔值 - CONCAT String input1, String input2 用于连接字符串,返回连接后的字符串。 CONCAT('ab','cd') CONCAT(notify_data.header.device_id,'abc') CONCAT(notify_data.header.product_id,notify_data.header.node_id) 字符串 - REPLACE String input, String target, String replacement 对字符串某部分值进行替换。即用replacement替换input中的target。 REPLACE(notify_data.header.node_id,'nodeId','IMEI') - - SUBSTRING String input, int beginIndex, int endIndex(required=false) 获取字符串的子串,即返回input从beginIndex(包含)到endIndex(不包含)的子字符串。 说明:endIndex非必填。 SUBSTRING(notify_data.header.device_id,3) SUBSTRING(notify_data.header.device_id,3,12) - - LOWER String input 将input中的值全部转换成小写 LOWER(notify_data.header.app_id) - - UPPER String input 将input中的值全部转换成大写 UPPER(notify_data.header.app_id) - -