请选择 进入手机版 | 继续访问电脑版
 找回密码
 立即注册

QQ登录

只需一步,快速开始

鲍威尔

初级会员

44

主题

130

帖子

358

积分

初级会员

积分
358
最新发帖

[已处理] 折线图

鲍威尔
初级会员   /  发表于:2022-6-27 09:00  /   查看:2116  /  回复:6
1金币
怎么创建这个折线图,横坐标显示时间,纵坐标显示已经采样的人数,图形显示的是那个村,整个折线图展示的内容就是,那个村在那一天采样了多少人,还有就是只展示最近五天的数据,尽量截屏操作步骤,接触活字格不久
附件: 您需要 登录 才可以下载或查看,没有帐号?立即注册

最佳答案

查看完整内容

简单的看了下你原先的帖子,老实说,很多图表的展示,均需要在背后做很多数据处理的工作,需要开发者有一定的业务理解和掌握些许数据库相关的知识点。另外,要善于总结图表的业务场景,很多图表其实是具有通用性的。 从这个问题来看,咱们所关注的场景可以概括为:实现按照多维度统计特定条件下的数量。 在当前的场景下,维度就是天数,村委会,条件是已完成采样核酸,最终得到的数据呢,是采样的统计数。 活字格在制作图表 ...

6 个回复

倒序浏览
最佳答案
最佳答案
游斯如尘悬赏达人认证
初级会员   /  发表于:2022-6-27 09:00:11
来自 6#
简单的看了下你原先的帖子,老实说,很多图表的展示,均需要在背后做很多数据处理的工作,需要开发者有一定的业务理解和掌握些许数据库相关的知识点。另外,要善于总结图表的业务场景,很多图表其实是具有通用性的。

从这个问题来看,咱们所关注的场景可以概括为:实现按照多维度统计特定条件下的数量。 在当前的场景下,维度就是天数,村委会,条件是已完成采样核酸,最终得到的数据呢,是采样的统计数。

活字格在制作图表有两种方法,第一种是使用内置的图表功能(数据源可以为表格、单元格、数据透视表),第二种是内嵌第三方的图表库。方便学习交流,咱们今天只说第一种方式哈。

在正常的关系型数据表中,直接的展示形式是无法得到咱们想要的效果。所以我们需要在现有的数据表下,按照需要的维度,分别进行统计,得到满足咱们需求的新表来渲染图形。在此直接简述一下处理的流程,类似的问题可以按照相同的方法来解决。

  • 统计现有数据在天的维度上各个村子的已采样数量,得到表1。
(1)使用 sql 对原有表检索最近5天已完成的所有数据
  1. SELECT
  2.                         *
  3.                 FROM
  4.                         test.`表1` AS b
  5.                 WHERE
  6.                         date_sub( curdate(), INTERVAL 5 DAY) <= date( b.采样时间 )
  7.                         AND date( b.采样时间 ) <= curdate()
  8.                         AND b.采样情况 = '已完成采样'
复制代码
(2)在上表的结果中,使用sql按照日期,村委会进行统计,最终得到表1
  1. SELECT
  2.                 count(*) AS `统计`,
  3.                 a.村委会 AS `村委会`,
  4.                 date_format( a.采样时间, '%Y-%m-%d' ) AS `日期`
  5.         FROM
  6.                 (
  7.                 SELECT
  8.                         *
  9.                 FROM
  10.                         test.`表1` AS b
  11.                 WHERE
  12.                         date_sub( curdate(), INTERVAL 5 DAY) <= date( b.采样时间 )
  13.                         AND date( b.采样时间 ) <= curdate()
  14.                         AND b.采样情况 = '已完成采样'
  15.                 ) AS a
  16.         GROUP BY
  17.                 `日期`,
  18.                 a.村委会
复制代码

表1

2. 表1可以看到,只存在原表已有的数据,而最近五天(24-28号)中有些天原表是无数据的,也就导致表1中的时间是不连续的。这时就需要我们手动的为表补充缺少的时间点,得到表2。

    完整的表2 sql可以查看demo的服务端命令中的sql命令。此处只展示了动态创建临时表的sql。

  1. SELECT
  2.                 @num := @num + 1 AS id,
  3.                 date_format(adddate( date_sub(curdate(), INTERVAL 5 DAY), INTERVAL @num DAY ), '%Y-%m-%d' ) AS `日期`
  4.         FROM
  5.                 test.`表1` tmp_table,
  6.                 ( SELECT @num := 0 ) t
  7.         WHERE
  8.                 adddate(date_sub(curdate(), INTERVAL 5 DAY), INTERVAL @num DAY ) <= CURDATE()
  9.                 AND @num < 5
复制代码
   


表2

      手动补偿数据其实是有两种方案的
    (1)第一种就是数据库层面,通过创建辅助表的方式,通过表连接的方式进行数据绑定映射。其中,也包含了两种方案,上方的sql是动态生成,好处是随用随时创建,不需要后面修改,但是效率很差,尤其是在数据量很大的情况下,每次查询都会创建一次。另外一种方案,可以采用定时任务去创建未来半年的时间绑定表,好处就是查询效率很好,适用的场景更多,但是需要定期去创建新数据,删除老数据。
    (2)第二种是在业务侧进行手动插入,在活字格的服务器端命令中,手动循环数据,去判断时间是否存在(无需顾虑重复,因为group by已经保证时间点唯一了),不存在则插入。
       本答案采用了第一种方案。第二种题主可以自己实现。

3. 表2的数据已经可以满足我们对于图表的诉求(天数,村委会都有了),接下来只需要将表2的数据,转化为满足图标渲染的数据透视表 表3 (行列调整)即可。

表3

    数据透视表的数据绑定和设置可以参考demo


4.  将表3作为数据源,插入图表,得到最终的图表。



     对于数据绑定,本demo只做了时间的绑定(所以最终的数据村委会的数量与库中不匹配),村委会的绑定题主可以自己完成,方法类似(手动补偿数据)。


补充说明:

(1)附件是对应的demo,可以下载学习;
(2)方便演示,demo中使用了外联表(mysql),在sql的语法上不具备通用性,但是处理逻辑与内联库完全相同;
(3)很多实际场景,单个数据表结构无法直接完成,需要灵活的使用视图和辅助表来达到自己想要的效果。
(4)由于要使用活字格sql命令功能,所以题主需要对sql,服务端命令,json数据导入表格的知识点进行掌握。


(4)此方法只适用于个人学习或者是低数据量下的使用,大型企业级开发的话,建议使用专用的报表工具或者内嵌图表的方式来完成类似的需求,这样效率和效果都会更好。




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

评分

参与人数 2金币 +5 满意度 +5 收起 理由
Joe.xu + 5 很给力!
小兵一号 + 5

查看全部评分

回复 使用道具 举报
Joe.xu讲师达人认证 悬赏达人认证 活字格认证
超级版主   /  发表于:2022-6-27 10:19:25
2#
看你发了很多重复的帖子,我们在活字格帖子中统一跟进哈折线图
https://gcdn.grapecity.com.cn/fo ... 3&fromuid=60953
(出处: 葡萄城产品技术社区)


回复 使用道具 举报
鲍威尔
初级会员   /  发表于:2022-6-27 10:51:33
3#
Joe.xu 发表于 2022-6-27 10:19
看你发了很多重复的帖子,我们在活字格帖子中统一跟进哈折线图
https://gcdn.grapecity.com.cn/forum.php? ...

他们解决的都不是我想要的呢,比如这个图的问题,他解决的是多少号采样的人数,我说的是多少号,那个村采样的人数,还有那个五天的,也是没有效果的
回复 使用道具 举报
鲍威尔
初级会员   /  发表于:2022-6-27 10:59:25
4#
鲍威尔 发表于 2022-6-27 10:51
他们解决的都不是我想要的呢,比如这个图的问题,他解决的是多少号采样的人数,我说的是多少号,那个村采 ...

前天更进的,现在都没有回
回复 使用道具 举报
Joe.xu讲师达人认证 悬赏达人认证 活字格认证
超级版主   /  发表于:2022-6-27 14:48:41
5#
大哥,有时候需要看起来简单,其实背后要考虑的事情比较多,就您已经描述清楚地问题来说,我就有很多疑问,
说要展示近五天的数据,而数据库表存的是每个村的,
所以不知道是按照系统时间的近五条,还是哪个村的近五天呢,
如果是系统的近五天,可能村里都没有数据,如果是按照村的近五天,
是按照哪个村呢,除了这些还有其他的问题需要确认,所以需要您填一下1v1支持通道,
或者看看还有没有其他的大佬懂这个需求的,和您探讨下
回复 使用道具 举报
Joe.xu讲师达人认证 悬赏达人认证 活字格认证
超级版主   /  发表于:2022-6-28 12:27:38
7#
感谢大佬们的支持!
如果您的问题还未解决,欢迎跟帖补充;
如果您有新的问题,也欢迎创建新的求助帖呦。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部