注意:本文只在sql层面做介绍,接口没有!目标4在语雀知识库.此文没有!

注意:本文只在sql层面做介绍,接口没有!目标4在语雀知识库.此文没有!

注意:本文只在sql层面做介绍,接口没有!目标4在语雀知识库.此文没有!

注意:本文只在sql层面做介绍,接口没有!目标4在语雀知识库.此文没有!

github ThingsBoard的问题反馈中提到类似需求

准备

创建五个设备ABCDE,三个资产ABC,关联关系如下:关联类型都是Contains,关联方向都是从。


通过几个目标来一步步实现

  1. 查询资产A/B/C下面的所有设备,包括资产下的资产中的设备,且设备不能重复统计。
  2. 查询资产A/B/C下面的所有设备总数
  3. 查询资产A/B/C下面的所有设备离线总数和在线总数
  4. 查询租户/客户下的设备离线总数和在线总数(不关联资产,同于首页展示,谁登陆展示谁的所有设备)

说明:
目标2.3:可用于仪表板显示某些资产的设备总数,在线数,离线数。
也可以结合添加首页设置-展示仪表功能和添加首页设置-指定客户首页仪表功能为租户和客户定制首页仪表板。
目标4:用于首页展示当前登录用户的所有设备在线数,离线数。
本文描述的在线离线是基于设备服务端属性的active字段,设备disconnect不会立刻触发。可参考active服务端属性分析。
文章在sql层面进行分析,没有发布接口相关文字。
relation相关介绍参考ThingsBoard中的关系Relation

目标1

查询资产A/B/C下面的所有设备,但设备不能重复。例如资产A包含的设备应该是五个,资产B五个设备,资产C三个设备。
设备及资产的id如下


先查询资产C id=ff8a1860-b2e4-11eb-8988-8dc0a81563ee

WITH RECURSIVE views AS (SELECT from_type, from_id, to_type, to_idFROM relationWHERE from_id = 'ff8a1860-b2e4-11eb-8988-8dc0a81563ee'UNIONSELECT r.from_type, r.from_id, r.to_type, r.to_idFROM relation rINNER JOIN views v ON v.to_id = r.from_id
)
SELECT distinct to_id FROM views v where v.to_type = 'DEVICE';

结果

查询资产B id=f584c9a0-b2e4-11eb-8988-8dc0a81563ee
结果

查询资产A id=ef2418e0-b2e4-11eb-8988-8dc0a81563ee
结果

都符合预期。现在是查询资产下的所有设备,那么如何统计资产下面设备的总数,离线数,在线数呢?

目标2

统计资产A/B/C下面的所有设备总数,要求和前面一样。

WITH RECURSIVE views AS (SELECT from_type, from_id, to_type, to_idFROM relationWHERE from_id = 'ef2418e0-b2e4-11eb-8988-8dc0a81563ee'UNIONSELECT r.from_type, r.from_id, r.to_type, r.to_idFROM relation rINNER JOIN views v ON v.to_id = r.from_id
)
select count(devices.to_id) from (SELECT distinct to_id FROM views v where v.to_type = 'DEVICE') devices;

测试结果就不贴出来了

目标3

查询资产A/B/C下面的所有设备离线总数和在线总数
使用MQTTBox让设备A/B/D在线

那么实际结果应该是资产A在线3离线2,资产B在线3离线2,资产C在线1离线2.结合active字段来实现。
先看结果:
资产A资产B资产C
SQL如下:

WITH RECURSIVE views AS (SELECT from_type, from_id, to_type, to_idFROM relationWHERE from_id = 'ff8a1860-b2e4-11eb-8988-8dc0a81563ee'UNIONSELECT r.from_type, r.from_id, r.to_type, r.to_idFROM relation rINNER JOIN views v ON v.to_id = r.from_id
)
select count(devices.to_id) as count, (case kv.bool_v when true then 'online' else 'offline' end) as status
from attribute_kv kv
right join (SELECT distinct to_id FROM views v where v.to_type = 'DEVICE') devices
on devices.to_id = kv.entity_id and kv.attribute_key='active'
group by kv.bool_v;

目标4
查询租户/客户下的设备离线总数和在线总数
后续内容到语雀知识库查看

ThingsBoard资产设备总数/离线数/在线数统计相关推荐

  1. 离线实时一体化数仓与湖仓一体—云原生大数据平台的持续演进

    简介:阿里云智能研究员 林伟 :阿里巴巴从湖到仓的演进给我们带来了湖仓一体的思考,使得湖的灵活性.数据种类丰富与仓的可成长性和企业级管理得到有机融合,这是阿里巴巴最佳实践的宝贵资产,是大数据的新一代架 ...

  2. 关于并发数与在线数的概念

    关于并发数与在线数的概念: 3月11日的测试交流会上大家有问到并发数,后来互相做了交流,我也说了些,但还是不清晰.下面稍微详细点描述下,仅供参考. 并发是操作系统的概念,是指在一定时间内物理机器上有两 ...

  3. oracle分页查询加总数,oracle count 百万级 分页查询记要总数、总条数优化

    oracle count 百万级 分页查询记录总数.总条数优化 oracle count 百万级 查询记录总数.总条数优化 最近做一个项目时,做分页时,发现分页查询速度很慢,分页我做的是两次查询,一次 ...

  4. java netty post_API调用Netty长链接执行发送消息(在线数、用户列表)

    前言 在原项目中,对于WebSocket的长连接,聊天系统并没有开放接口出来给第三方的系统调用,只有我们系统内部的人员才知道,确切的说系统内部也没有实际的查询接口,那么我们今天就来实现这个功能. 在N ...

  5. java统计在线人数_java统计当前在线数 (转)

    java统计当前在线数 (转)[@more@] package com.hnedu.stat; /** * 计算在线人数,说明: * * 在访问页面放入: * com.hnedu.stat.Onlin ...

  6. 数一数Google的软件和服务

    数一数Google的软件和服务 Peter Lee 不知不觉中,Google走过了他的第十个年头,印象中他还很年轻似的:不知不觉中,Google的软件和服务已经遍地开花了,印象中Google总是搜索的 ...

  7. java 鸡和兔一共35只_鸡和兔一共有35只,数一数腿有94条,鸡、兔各有多少只?...

    鸡兔同笼公式: 公式1: (兔的脚数×总只数-总脚数)÷(兔的脚数-鸡的脚数)=鸡的只数 总只数-鸡的只数=兔的只数 公式2: (总脚数-鸡的脚数×总只数)÷(兔的脚数-鸡的脚数)=兔的只数 总只数- ...

  8. Catalan数——卡特兰数

    今天阿里淘宝笔试中碰到两道组合数学题,感觉非常亲切,但是笔试中失踪推导不出来 后来查了下,原来是Catalan数.悲剧啊,现在整理一下 Catalan数--卡特兰数] 一.Catalan数的定义令h( ...

  9. 【Kafka】Kafka-分区数-备份数-如何设置-怎么确定-怎么修改

    Kafka-分区数-备份数-如何设置-怎么确定-怎么修改 kafka partition 数量 更新_百度搜索kafka重新分配partition - - CSDN博客如何为Kafka集群选择合适的P ...

最新文章

  1. linux 进程 崩溃被杀 原因查找
  2. JVM中GC的停顿现象
  3. javaweb----DAO模型设计
  4. Android开发之EditText无法获取光标的问题
  5. C++ 输出调试信息 类似MFC的TRACE等宏
  6. python3 线程隔离_Python的线程隔离实现方法
  7. php mysql读取数据查询_PHP MySQL 读取数据
  8. 工作随想---关于业务流程,落实责任制
  9. js常用字符串处理方法
  10. 【Visual Studio Code 】使用Visual Studio Code + Node.js搭建TypeScript开发环境
  11. Rust: Rust Language Cheat Sheet,强烈推荐!
  12. STM32F205 PWM配置
  13. 城管系统服务器,数字城管系统建设方案详细.doc
  14. AI+Science系列(一) :飞桨加速CFD(计算流体力学)原理与实践
  15. 布朗运动、伊藤引理、BS公式
  16. win服务器系统下的软路由,如何用Windows 2000 Server充当软路由
  17. qcom 音频相关的dsp driver笔记(基于msm8996平台)
  18. PS 抠图几种典型方法
  19. 微信小程序用户信息解
  20. 台式计算机cpu允许温度,台式cpu温度多少正常呢?老司机科普一下CPU常见问题

热门文章

  1. 什么是EDI 855采购订单确认(POA)?
  2. 初识Latex及模板套用
  3. UE4大场景解决方案 ——Pak的打包与加载
  4. 传统电话网传真和网络传真的比较
  5. 轻松一下,我的成长历程,看看我历次的msn签名:)
  6. Java数据结构—图(Graph)
  7. 玉米、水稻、甘蔗等农作物图片数据集
  8. 如何回答「为什么要雇用你」【面试核心问题4】
  9. 高压直流电源系统(直流ups)有哪些特点?
  10. 期末项目——同源药膳堂