作者:三烽
简介
物联网数据分析,又称Link Analytics,是阿里云为物联网开发者提供的设备智能分析服务,全链路覆盖了设备数据生成、管理(存储)、清洗、分析及可视化等环节。有效降低数据分析门槛,助力物联网开发工作。
数据开发提供云上交互式查询服务,无需数据预处理过程,直接使用标准的SQL语句对设备进行数据分析。
可以对以下三个数据来源中的设备数据进行分析。
- 物联网平台的系统数据
- 基于产品能力定义的设备数据
- 用户授权的业务数据
使用场景
无需实时处理数据的场景均可使用。但是如果对实时性有要求,请使用数据分析服务的实时数据分析功能,因为数据从设备上报到物联网平台,再完成SQL数据分析,有大约5分钟左右的延迟。
- 设备监控
- 报表统计
- 设备行为分析
架构图
API服务
前提:已创建好物联网平台上的产品及设备
一、添加新的API
二、编写SQL语句
本文中的示例为统计产品表中去重设备数
三、测试与发布
JAVA调用示例
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>数据开发API-Demo</groupId>
<artifactId>数据开发API-Demo</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<!-- https://mvnrepository.com/artifact/com.aliyun/aliyun-java-sdk-iot -->
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-iot</artifactId>
<version>6.10.0</version>
</dependency>
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-core</artifactId>
<version>4.3.5</version>
</dependency>
</dependencies>
</project>
Demo.java
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.http.MethodType;
import com.aliyuncs.iot.model.v20180120.InvokeDataAPIServiceRequest;
import com.aliyuncs.iot.model.v20180120.InvokeDataAPIServiceResponse;
import com.aliyuncs.profile.DefaultProfile;
import com.aliyuncs.profile.IClientProfile;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
public class Demo {
public static void main(String args[]) throws ClientException {
String accessKey = "*****";
String accessSecret = "*****";
DefaultProfile.addEndpoint("cn-shanghai", "cn-shanghai", "Iot", "iot.cn-shanghai.aliyuncs.com");
IClientProfile profile = DefaultProfile.getProfile("cn-shanghai", accessKey, accessSecret);
DefaultAcsClient client = new DefaultAcsClient(profile); //初始化SDK客户端
//在控制台的属性参数设置里截取API Path的一部分
String apiSrn = "acs:iot:*:{uid}:serveapi/devicecount";
//如果有请求参数,则需要设置
InvokeDataAPIServiceRequest.Param param = new InvokeDataAPIServiceRequest.Param();
// 请求参数名称
//param.setParamName("$device_name");
// 在线状态
//param.setParamValue("***");
InvokeDataAPIServiceRequest request = new InvokeDataAPIServiceRequest();
request.setApiSrn(apiSrn);
//request.setParams(Arrays.asList(param));
// 当param为空时用请求方式用GET,如果不为空是用POST
request.setSysMethod(MethodType.GET);
try {
InvokeDataAPIServiceResponse response = client.getAcsResponse(request);
System.out.println(response.getSuccess());
System.out.println(response.getErrorMessage());
// 服务API指定的SQL查询结果
List<Map<Object, Object>> result = response.getData().getResultList();
System.out.println(result);
} catch (ClientException ce) {
ce.printStackTrace();
}
}
}