找回密码
 立即注册

QQ登录

只需一步,快速开始

spencer

注册会员

9

主题

24

帖子

85

积分

注册会员

积分
85
spencer
注册会员   /  发表于:2020-3-7 23:30  /   查看:11007  /  回复:15
1金币
在华融案例中,郭工提到,最简单的做法就是把整个sheet的数据存成JSON,一整块都保存进数据库里。下次需要时也是整块提取出来再渲染到sheet里。
可是,如果需要对保存的数据,比如链接wyn enterprise进行进一步报表分析,或者仪表板设计。那么在SpreadJS保存时势必要进行数据拆分保存。
但是如果每个表都单独开发基于这个表的数据保存逻辑,势必就太麻烦了,失去了SpreadJS的一大亮点。
华融的郭工似乎介绍了一种解决方案,他提到分三个层面进行数据库保存,一个层面是保存维度,第二个层面是保存指标名,第三个维度是保存指标值。
这样就能实现不用聚焦某个表进行开发,而是所有表都是按这个格式进行数据保存。但是需要用数据的时候又能解析进行分析。
但是还不是太理解,他的这个思路,
是怎么能高效的去对整块JSON数据进行解析后存数据库,同时后续需要对数据进一步分析处理时,又是怎么解析出来的?
能否请版主详细帮展开解释一下?谢谢!

最佳答案

查看完整内容

Spreadjs页面中绑定的数据可以保存为一个JSON,这样方便直接提取然后渲染,不用在展示的时候再组装数据源。 为了对不同的表样产生的不同格式的JSON内容进行统一的使用,比如生成报表,通过统一的接口取数等;对绑定到JSON键值对进行抽象,抽象成(指标,维度,指标值)固定的三项。然后在入库JSON的同时保存这种格式的数据(也可以考虑在其他需要解析的时候解析); 举例说明如下: 表格1 姓名 嘻嘻嘻 年龄 12 性别 男 ...

15 个回复

倒序浏览
最佳答案
最佳答案
adongguo讲师达人认证
金牌服务用户   /  发表于:2020-3-7 23:30:16
来自 2#
Spreadjs页面中绑定的数据可以保存为一个JSON,这样方便直接提取然后渲染,不用在展示的时候再组装数据源。

为了对不同的表样产生的不同格式的JSON内容进行统一的使用,比如生成报表,通过统一的接口取数等;对绑定到JSON键值对进行抽象,抽象成(指标,维度,指标值)固定的三项。然后在入库JSON的同时保存这种格式的数据(也可以考虑在其他需要解析的时候解析);

举例说明如下:
表格1
姓名        嘻嘻嘻
年龄        12
性别        男

这个表格,每个单元格背后都有一个绑定值,形成的JSON格式如下:
{
    "indicator_name":"姓名",
    "name":"嘻嘻嘻",
    "indicator_age":"年龄",
    "age":"12",
    "indicator_sex":"性别",
    "sex":"男"
}
其中indicator开头的是表示指标的标识,非indicator开头的,可以是随意的值,只需要能够定位到正确的指标值就行。

这个JSON如何解析存储呢:如下表:
表格2
指标        维度        指标值
name        {}            嘻嘻嘻
age            {}            12
sex            {}            男
               

其中的维度由于不同的统计表格可能会不同,需要根据表单的特性动态设置;
维度有一个要求,需要能够唯一标识出一条数据;比如,我们统计的表格1存储到数据库中的表格2的数据,能够通过维度中的字段唯一准确的提取出来;

维度可以使用JSON动态保存,也可以使用冗余的多个空白数据库列来保存,不同搜集表的数据结构不用,保存能够存储。

每个录入报表可以保存两份数据,一份JSON一份解析后的抽象(指标,维度,指标值)数据;

具体怎么能保证json中的指标对应正确,以及保证维度中的信息包含唯一项,就比较灵活了,可以考虑任意实现的方式都可以。

评分

参与人数 1金币 +2000 收起 理由
Clark.Pan + 2000 非常给力,感谢郭经理的回复

查看全部评分

回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2020-3-9 17:07:28
3#
您好,上述是华融的郭经理的回复,您可以当做借鉴。
回复 使用道具 举报
spencer
注册会员   /  发表于:2020-3-10 12:24:07
4#
本帖最后由 spencer 于 2020-3-10 12:29 编辑

非常感谢郭经理的详细和耐心的解答,我反复看了10遍:)
但是里面关于维度这一块的内容,还想进一步请教。
郭经理提到:
这个JSON如何解析存储呢:如下表:
表格2
指标        维度        指标值
name        {}            嘻嘻嘻
age            {}            12
sex            {}            男
               

其中的维度由于不同的统计表格可能会不同,需要根据表单的特性动态设置;
维度有一个要求,需要能够唯一标识出一条数据;比如,我们统计的表格1存储到数据库中的表格2的数据,能够通过维度中的字段唯一准确的提取出来;

维度可以使用JSON动态保存,也可以使用冗余的多个空白数据库列来保存,不同搜集表的数据结构不用,保存能够存储。

这部分还是疑惑,郭经理贴出的例子中,维度里面的内容为空的,所以我不太确定我理解维度代表的含义是否准确。

我现在理解的逻辑是这样的(如果不正确还劳烦指正):
1、在创建模板的时候,每个需要填写的单元格及单元格旁边的提示(如姓名 年龄)都需要拖拽相应的模板标签,来做数据绑定。
那么这里引发一个小问题,是所有表格的所有需要填写的单元格,都要在系统里事先建立拖拽的模板标签吗?而且这个模板标签的内容还由系统引擎来动态输出?
2、用户输入完成后,把数据绑定中的内容形成抽象JSON,指标 维度 指标值(不带模板内容)
3、这时候就可以把JSON内容进行解析,同样按照 指标 维度 指标值 保存到数据库中。
4、因为所有的表都是以这样一个方式来抽象化的保存数据,因此,维度就作为能代表当下数据唯一特征的一个索引。以郭经理贴的例子为例,维度就可以是name_班级名单表_学生档案类_userid_timestamp
5、这样,在提取数据进行分析的时候,如果对某个userid填报的班级名单表数据进行提取,就可以通过这个“维度"来进行定位。
但是确实整个逻辑还有点懵,不知道是否准确,或者还有什么我没考虑到的地方,还请郭经理再不吝赐教!谢谢!
另外还有一个小问题,就是为什么需要设置indicator_开头的变量来显示标识呢?直接在模板上打字的话,会引发什么问题?
好像在培训中,您说是为了让系统知道这个指标被多少个表引用过?
非常感谢!
回复 使用道具 举报
adongguo讲师达人认证
金牌服务用户   /  发表于:2020-3-10 18:54:48
5#
spencer 发表于 2020-3-10 12:24
非常感谢郭经理的详细和耐心的解答,我反复看了10遍:)
但是里面关于维度这一块的内容,还想进一步请教。 ...

你好,可能是我解释的不是很详细导致你反复看了很多遍;首先明确的是,我们的目的是将不同的模板内容在设计上统一,在存储上也统一;完成这两个统一。也就是说,我们设计模板的方式是一致的,然后保存数据解析数据,进而对数据的应用也是一致的,不需要定制化代码。

1.关于模板标签,不是所有的绑定的单元格都需要提前录入,我们系统为了对指标进行统一管理,并且追踪指标所使用的模板,所以对指标进行了提前录入。比如,姓名,年龄,性别,这是三个指标。需要提前录入。
2.至于为了获取某次填报的数据,比如姓名 嘻嘻嘻。这个嘻嘻嘻背后的单元格绑定的内容可以随意定义,但是为了使绑定指标和绑定值(嘻嘻嘻)的标记可以区分,所以统一在指标的绑定前增加了indicator标记。便于后续根据一定的规则来区分绑定内容,然后拼装三段式(指标,维度,指标值)的内容。

我们在前端向后端传递数据的时候,因为用到了动态加载的一个JS文件,所以可以根据需要传递两种数据,一种是数据源JSON,一种是处理过后的包含三段式的数据,表示解析后的数据。如果确定模板内容不必要被解析,则只传递JSON数据即可,不必解析。也就是说,我们的解析过程是依赖前端动态JS文件来控制的,不是后端处理的。

关于第二个小问题,如您所说,就是为了统计各个模板对指标的使用情况才提前录入指标,然后进行绑定的,如果不是为了这一步的话,可以考虑任意方式绑定单元格。

这个思路和数据结构也都是灵活的,目的都是通过抽象的方式让格式和流程统一,可能解释的不是很清楚,也有可能会有更好的方法,可以灵活参考。
回复 使用道具 举报
Fiooona
论坛元老   /  发表于:2020-3-10 21:27:47
6#
组件化表格编辑器(预览版)试用进行中,点击了解详情!
请点击评分,对我的服务做出评价!5分为非常满意!
回复 使用道具 举报
spencer
注册会员   /  发表于:2020-3-10 23:14:02
7#
十分感谢郭经理!
不好意思,可能我还要补充请教两个问题
1、这个动态加载的js文件,是每个模板都是一样的吗?还是根据每个模板拖拽进来的模板标签单独编写处理的js文件?
因为如果不是单独针对某个模板编写处理该模板的JS文件的话,似乎js文件无法获知此模板里有哪些变量需要进行JSON的三段式处理,不知道我这样理解对不对?


2、能不能请您再讲解一下维度?因为我看到好像您忘记回答我对维度的提问了,所以可能还请您帮解答一下,或者说我提问中对维度的理解是否正确呢?谢谢!
回复 使用道具 举报
adongguo讲师达人认证
金牌服务用户   /  发表于:2020-3-11 18:19:20
8#
您好  针对每个模板对应的一个js文件,用来出来定制化的操作;维度的理解是正确的。
回复 使用道具 举报
adongguo讲师达人认证
金牌服务用户   /  发表于:2020-3-11 18:19:23
9#
您好  针对每个模板对应的一个js文件,用来出来定制化的操作;维度的理解是正确的。
回复 使用道具 举报
Fiooona
论坛元老   /  发表于:2020-3-12 11:24:30
10#
谢谢回复
组件化表格编辑器(预览版)试用进行中,点击了解详情!
请点击评分,对我的服务做出评价!5分为非常满意!
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部