如何使用SQL任务计算房间电量消耗的实践案例

简介: 文本介绍一例物联网平台数据服务SQL洞察用于智能家居的实践案例

1. 需求描述

在智能家居行业里产生了各种各样场景的数字解决方案,有解决方案商使用物联网平台的能力搭建各种数据分析应用,比如房间电量消耗统计,在公寓中部署了智能电表,每隔15min上传一次累计电量,需要根据设备上传值计算用电量。结合下表理解。

设备标示

上报属性值

上报时间

用电量

房间1电表

56.2

00:00

-

房间2电表

100.2

00:00

-

房间1电表

56.3

00:15

56.3-56.2 = 0.1度电

房间2电表

101

00:15

101-100.2 = 0.8度电

房间1电表

60

08:00

60-56.3 = 3.7度电

房间2电表

120

08:00

120-101 = 19度电


2. 实现方案

2.1 创建场景

创建电表模拟产品,电表产品只有一个只读属性Fwh,表示累计电量。参考图1。

创建两个电表设备:room1 和 room2。参考图2。

使用物联网在线调试功能定时上报属性, 为调试方便,可以将间隔设置为10s上报一次属性值。参考图3。

在数据开发页面刷新平台设备数据表,用于创建电表的分析模型。

image.png

图1 创建电表模拟产品

image.png

图2 创建模拟设备

image.png

图3 定时上报电量


2.2 计算公式

使用数据服务是具有计算能力的平台,可以在SQL工作台创建SQL脚本任务来完成计算,将计算结果用于业务系统。

设计计算公式如下:

image.png

可以使用窗口函数取出设备最后上传的2次属性值,计算差值即可。

-- 对原始数据加工,需要将j-1条数据拼接到j条数据上
create view ods_append_row as 
select 
  `$device_name`, 
    `$event_time`, 
    `$iot_id`,
    `Fwh`,
    -- over 窗口
    row_number() over(PARTITION BY `$iot_id` ORDER BY `$event_time` DESC ) as row_no,
    nth_value(`Fwh`, 1) over (PARTITION BY `$iot_id` ORDER BY `$event_time` DESC ) as latest_value,
    nth_value(`Fwh`, 2) over (PARTITION BY `$iot_id` ORDER BY `$event_time` DESC ) as previous_value
from your_table_name;
-- 对最近两次结果进行取差值
select 
    `$device_name`,
    `$event_time`,
    latest_value - previous_value as delta_Fwh
from ods_append_row where row_no <= 2 and previous_value is not null;

调试结果参考下图4。

image.png

图4 调试结果

3. 结果使用

数据API

在云云对接场景用于应用集成,则可以配置API及SDK调用获取结果数据。

数据导出
如何结果数据需要线下备份或者使用xls进一步分析,可以使用“导出”功能。

image.png

可以按照时间范围进行数据导出,目前导出格式只支持csv

image.png

详细操作步骤可以参考《IoT设备数据的存储、解析和价值挖掘实践》,这里不赘述。

相关产品文档
如您想要了解更细节的产品功能使用指南,可以访问物联网平台的官网产品文档。
分析洞察官网文档:https://help.aliyun.com/document_detail/325547.html

产品操作实践文档:https://developer.aliyun.com/article/1166086

相关文章
|
12天前
|
SQL 存储 API
Flink实践:通过Flink SQL进行SFTP文件的读写操作
虽然 Apache Flink 与 SFTP 之间的直接交互存在一定的限制,但通过一些创造性的方法和技术,我们仍然可以有效地实现对 SFTP 文件的读写操作。这既展现了 Flink 在处理复杂数据场景中的强大能力,也体现了软件工程中常见的问题解决思路——即通过现有工具和一定的间接方法来克服技术障碍。通过这种方式,Flink SQL 成为了处理各种数据源,包括 SFTP 文件,在内的强大工具。
49 15
|
30天前
|
SQL 存储 Unix
Flink SQL 在快手实践问题之设置 Window Offset 以调整窗口划分如何解决
Flink SQL 在快手实践问题之设置 Window Offset 以调整窗口划分如何解决
34 2
|
1天前
|
SQL 数据库
数据库数据恢复—SQL Server数据库报错“错误823”的数据恢复案例
SQL Server附加数据库出现错误823,附加数据库失败。数据库没有备份,无法通过备份恢复数据库。 SQL Server数据库出现823错误的可能原因有:数据库物理页面损坏、数据库物理页面校验值损坏导致无法识别该页面、断电或者文件系统问题导致页面丢失。
26 12
数据库数据恢复—SQL Server数据库报错“错误823”的数据恢复案例
|
30天前
|
SQL 流计算
Flink SQL 在快手实践问题之通过 SQL 改写实现状态复用如何解决
Flink SQL 在快手实践问题之通过 SQL 改写实现状态复用如何解决
34 2
|
30天前
|
SQL 流计算
Flink SQL 在快手实践问题之CUMULATE窗口的划分逻辑如何解决
Flink SQL 在快手实践问题之CUMULATE窗口的划分逻辑如何解决
34 2
|
30天前
|
SQL 流计算
Flink SQL 在快手实践问题之由于meta信息变化导致的state向前兼容问题如何解决
Flink SQL 在快手实践问题之由于meta信息变化导致的state向前兼容问题如何解决
38 1
|
30天前
|
SQL 安全 流计算
Flink SQL 在快手实践问题之Group Window Aggregate 中的数据倾斜问题如何解决
Flink SQL 在快手实践问题之Group Window Aggregate 中的数据倾斜问题如何解决
48 1
|
30天前
|
SQL 流计算
Flink SQL 在快手实践问题之使用Dynamic Cumulate Window绘制直播间累计UV曲线如何解决
Flink SQL 在快手实践问题之使用Dynamic Cumulate Window绘制直播间累计UV曲线如何解决
36 1
|
30天前
|
SQL 流计算
Flink SQL 在快手实践问题之Window TVF改进窗口聚合功能如何解决
Flink SQL 在快手实践问题之Window TVF改进窗口聚合功能如何解决
15 1
|
30天前
|
SQL 存储 OLAP
OneSQL OLAP实践问题之Flink SQL Gateway的功能如何解决
OneSQL OLAP实践问题之Flink SQL Gateway的功能如何解决
27 1