RickyJen 发表于 2024-5-28 10:25:07

数据整理引起“数据膨胀”

本帖最后由 RickyJen 于 2024-5-28 10:27 编辑

需求描述:

想要在Wyn中使用两个下拉列表筛选数据,两个筛选列表具有层级关系,如下图:

此时,有两张表,一张是数据表(A),一张是筛选表(B),对两表进行左连接,此时将“分类码”字段绑定到第一个下拉框,将“码值”绑定到第二个下拉框,可以实现上面的效果。但是,此时由于“数据汇总颗粒度”不同,A表的颗粒度是“任务_ID”,B表的颗粒度是“任务_ID”下的“分类码”,导致连接后的表的“预算数量”和“实际数量”出现了数据膨胀,如下图:


尝试解决方案:
两表由于汇总颗粒度不同导致“数据膨胀”,B表颗粒度更细,所以尝试将B表整理,将其颗粒度转化为“任务_ID”,形成表C,再将表A和表C进行左连接,如图所示:
此时再把B表的分类码和码值绑定至两个下拉框,然后利用仪表板参数关联筛选器的方式,使用“在”的模糊筛选最终结果。此时可以实现筛选,但又存在另一个问题:假如结果中有两个记录的分类码字段分别含有“施工目标”和“目标”,如果下拉框1选择了“目标”后,就会将这两条数据都筛选出来,本来只是想筛选出一条数据


lucas.Yan 发表于 2024-5-28 10:25:08

本帖最后由 lucas.Yan 于 2024-5-30 15:13 编辑

RickyJen 发表于 2024-5-30 08:39
SQL层面的数据联合JOIN,与咱们的数据模型的表连接关系,还是不一样的对吧?
是一样的关系,咱们的表连接其实最终也是利用sql中的JOIN去链接查询。

lucas.Yan 发表于 2024-5-28 14:01:23


您有尝试过使用两个下拉筛选框来实现吗?
两个下拉框分别绑定分类码和码值字段,然后通过两个筛选器来得到您想要的单独一条数据。

RickyJen 发表于 2024-5-29 10:58:09

本帖最后由 RickyJen 于 2024-5-29 11:42 编辑

lucas.Yan 发表于 2024-5-28 14:01
您有尝试过使用两个下拉筛选框来实现吗?
两个下拉框分别绑定分类码和码值字段,然后通过两个筛选器来得 ...
这样做的话,有一种情况,可能会出现数据汇总不正确的现象,我直接做一个DEMO来看一下:
附件DEMO:

1、如果选择项目ID=1101,分类码选择“岛”,码值选择“常规岛”,预算数据=100,实际数量=80,此时符合业务需求

2、如果只选择项目ID=1101,不选择分类码和码值,预算数据=300,实际数量=240,此时不符合业务需求

3、全部都选择之后,结果如下:


lucas.Yan 发表于 2024-5-29 11:28:09

RickyJen 发表于 2024-5-29 10:58
如果任务ID=2101的任务,在中间那张表中有3个记录,那在右边的筛选结果就会有多条记录,此时汇总“预算数 ...

针对这个需求,我简单做了一个demo放在附件中了。
使用透视表的行列对数据进行拆分,使得预算数量统计正确。

RickyJen 发表于 2024-5-29 11:44:36

lucas.Yan 发表于 2024-5-29 11:28
针对这个需求,我简单做了一个demo放在附件中了。
使用透视表的行列对数据进行拆分,使得预算数量统计正 ...

好的,我下载看一下,您也看一下我上个回复中提到的那种场景

lucas.Yan 发表于 2024-5-29 17:06:23

本帖最后由 lucas.Yan 于 2024-5-29 17:10 编辑

RickyJen 发表于 2024-5-29 10:58
这样做的话,有一种情况,可能会出现数据汇总不正确的现象,我直接做一个DEMO来看一下:
附件DEMO:


如果您的需求是在两个表的数据联合之前就统计出预算数量这样的聚合数据,那么就只使用B表中的数据进行聚合计算就好了。两个表的数据联合之后,对于B表的数据来说确实会有重复造成最后聚合数据增。

富文本中选择预算数量


RickyJen 发表于 2024-5-30 08:39:39

lucas.Yan 发表于 2024-5-29 17:06
如果您的需求是在两个表的数据联合之前就统计出预算数量这样的聚合数据,那么就只使用B表中的数据进行聚 ...

SQL层面的数据联合JOIN,与咱们的数据模型的表连接关系,还是不一样的对吧?
页: [1]
查看完整版本: 数据整理引起“数据膨胀”