ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 811|回复: 9

[求助] 数据建模方法求助,这种数据结果如何组建表间关系

[复制链接]

TA的精华主题

TA的得分主题

发表于 2019-7-18 03:02 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
自己搞了一些数据导出到txt文件,格式都是一样第一列日期时间,第二列股票代码,第三列值。
然后现在有5个txt数据我作为外部数据源连接到excel里:
1.涨停板数表:
2019/06/24
600001
1
2019/06/25
600001
-1
2019/07/10
600001
1
2019/07/11
600001
2
2019/07/12
600001
3
2019/07/15
600001
4
2019/07/02
600002
-1
2019/07/05
600002
1
2019/07/08
600002
2
2019/07/09
600002
3
2019/07/10
600002
-1
2019/07/12
600002
1
2019/07/15
600002
-1
2019/07/08
600003
-1
2019/07/15
600003
1
2019/07/16
600003
2
2019/07/15
600003
1
2019/07/16
600003
2

第三列这里面-1代表涨停后炸板,1代表当天该股第一次涨停,2代表联系第二次涨停以此类推3、4、5。。。
然后这个表里只会显示每天有出现-1、1、2这种涨停或炸板状态的股票,意味着这个表里会每天都对应不同的多个股票,每天每个股票对应各自一种状态。对于股票来说,他的日期列的日期是不固定的但不重复的,比如当天涨停了才在该表出现,出现的话他的日期列是唯一的。意味着这个表里日期列是重复的,股票列也是重复的,但日期+股票组合在一起是不重复的唯一的 。被我说的有点绕,你们应该能看懂吧。。

2.成交额表,第三列为当天出现在1表的股 当天该股成交多少万元:
2019/06/24
600001
100
2019/06/25
600001
200
2019/07/10
600001
300
2019/07/11
600001
100
2019/07/12
600001
200
2019/07/15
600001
210
2019/07/02
600002
220
2019/07/05
600002
230
2019/07/08
600002
240
2019/07/09
600002
250
2019/07/10
600002
260
2019/07/12
600002
270
2019/07/15
600002
280
2019/07/08
600003
290
2019/07/15
600003
300
2019/07/16
600003
310
2019/07/15
600003
320
2019/07/16
600003
330

3.涨幅表:第三列代表第三列为当天出现在1表的股 该股第二天涨幅,但是该股如果第二天停牌的不会显示在该表里
2019/06/24
600001
-1
2019/06/25
600001
2
2019/07/10
600001
3.5
2019/07/11
600001
4
2019/07/12
600001
6.25
2019/07/15
600001
7.9
2019/07/02
600002
9.55
2019/07/05
600002
0.2
2019/07/08
600002
3.1
2019/07/09
600002
-2.4
2019/07/10
600002
-2.3
2019/07/12
600002
-3.6
2019/07/15
600002
1.6
2019/07/08
600003
-6.2
2019/07/15
600003
2.6
2019/07/16
600003
-8.8
2019/07/15
600003
2


4.大盘成交额表:每天都会有数据,没有数据的是休市日所有股票没交易
2019/07/08
999999
1000
2019/07/09
999999
1002
2019/07/10
999999
1004
2019/07/11
999999
1006
2019/07/12
999999
1008
2019/07/15
999999
1010
5.股票名称表:记录股票代码对应的股票名称
600001
股票A
600002
股票B
600003
股票C


实际处理不止这5种表,只是想表达个大概意思,另外股票个数有三四千只,数据有几百天,每只股票单独列个表感觉不现实
我现在的目的是做个图表,可以显示:
1.图表比如柱状图显示每天板数最高的股及其股票名称,用到板数表和股票名称表(1、5表)
2.切片器显示对应选定日期(或日期范围内统计)每个单独板数(或多个选定板数)总计数及对应总成交额和平均涨幅。
比如折线图上显示最近5天所有1板每天总数量及总成交额、均涨幅
3.每天不同板数之间的比较,比如-1炸板和>=1板的股票计数比较及均涨幅比较
4.每天整个市场的统计,当天大盘成交额、涨停(>=1板)数量统计、炸板(-1)数量统计、以及对应涨幅统计之类,做成每天一行数据的总览表

大概这4点吧,还有很多其他需要实现的,如果这3点能解决的话应该可以参照搞出来
我为了向达成上述目标,最近开始学powerBI pivot query这些 不过还是一知半解不知道我这个怎么处理,因为教程里多数是一对多 多对一的关系模型
我这个案例里应该算多对多,多对多的话excel里还没支持,BI里没闹明白。。
另外我这个1表板数表应该算事实表吧?应该围绕他来建立关系
还有我是想着可以把1、2、3表合并在一起(但是2、3表可能有不存在对应1表的值会被放空),这个用query不知道怎么做(用vba的话倒是会,但是考虑到刷新数据是根据这几个txt文件来处理的,所以尽量不用vba另外处理),这样合并后处理数据是不是更好一些
希望各位大大能指点下大概怎么操作。字数上限

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-7-18 03:20 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
要求有点多贪心了点。。只希望有些指导性的建议,附上txt附件

Data.zip

1.47 MB, 下载次数: 2

txt数据源

TA的精华主题

TA的得分主题

发表于 2019-7-18 11:52 | 显示全部楼层
其实,我也不懂股市。
尝试理解下lz 的意思弄出来了,文件放在data文件夹同路径就能打开查看。
里面就pq的几个查询处理有点作用,其他的意思意思下吧...


微信图片_20190718113739.png
微信图片_20190718113906.png
微信图片_20190718113918.png
微信图片_20190718113948.png

TA的精华主题

TA的得分主题

发表于 2019-7-18 11:53 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
附件加载数据后,超过论坛限制大小了,下载后先刷新下再用

股票建模.zip

379.05 KB, 下载次数: 4

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-7-18 18:27 | 显示全部楼层
c-coming 发表于 2019-7-18 11:53
附件加载数据后,超过论坛限制大小了,下载后先刷新下再用

感谢解答,附件让我又学到不少知识点
1. = LEFT(CELL("filename"),FIND("[",CELL("filename"))-2) 获取当前路径作为表格 让query高级编辑器引用excel同目录文件夹刷新数据源 免去额外修改
2. 刷新出现提示“将引用其他查询或步骤,因此可能不会直接访问数据源。请重新生成此数据组合。”,在query里:点击文件-文件和设置-查询选项,把隐私设置为始终忽略即可。
3.Table.NestedJoin(table1 as table, key1 as any, table2 as any, key2 as any, newColumnName as text, optional joinKind as nullable number, optional keyEqualityComparers as nullable list) as table
合并表原来需要选择列。。我说我怎么都合并不了,合并列的时候点击两个列的顺序也有要求

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-7-18 18:29 | 显示全部楼层
c-coming 发表于 2019-7-18 11:53
附件加载数据后,超过论坛限制大小了,下载后先刷新下再用

我现在做到关系这一步结束
但是制作图表的时候总是达不到我想要的效果
比如第一个表最高板,我照着设定总是做不出一天只对应一只股票,而是每天每只股票的各自板数都会显示,这是哪里的问题。。新手多指教哈

TA的精华主题

TA的得分主题

发表于 2019-7-19 09:32 | 显示全部楼层
hsln 发表于 2019-7-18 18:29
我现在做到关系这一步结束
但是制作图表的时候总是达不到我想要的效果
比如第一个表最高板,我照着设定 ...

这个是数据透视表的功能,行那显示日期和股票名称,然后在股票名称那右键》筛选》前10项,根据需要只显示第一名的。

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-7-20 00:25 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
c-coming 发表于 2019-7-19 09:32
这个是数据透视表的功能,行那显示日期和股票名称,然后在股票名称那右键》筛选》前10项,根据需要只显示 ...

看到了。。真心感谢!
excel功能很多很琐碎的,百度如果关键词没多试一些多翻翻很容易就漏了自己需要的答案
只能一步步来
这点感觉比学vba难。。vba这种至少有手册教程什么的,excel这种小知识点太多了。。

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-7-20 00:35 | 显示全部楼层
c-coming 发表于 2019-7-19 09:32
这个是数据透视表的功能,行那显示日期和股票名称,然后在股票名称那右键》筛选》前10项,根据需要只显示 ...

另外想请教下我目前自己建模用的query 通过高级编辑器把几个和板数相关的表成交额、涨幅、板数名称合并在一起,其他表只剩下大盘成交额(用来提供日期,没有自己新建日期表),还有股票名称表。这样应该效果也是一样的吧。
但是实际用起来感觉还是有点卡,很耗内存,有时候容易内存溢出停止运算了。所以想问下你的这种分表的方式更有效率还是我这种合并在一起更省资源。有没有其他的地方需要注意可以节省资源的?

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-7-20 00:38 | 显示全部楼层
c-coming 发表于 2019-7-19 09:32
这个是数据透视表的功能,行那显示日期和股票名称,然后在股票名称那右键》筛选》前10项,根据需要只显示 ...

还有个问题,不知道excel有没有相关的功能,我之前板数表不是分的-1、1、2、3、4。。。这样吗,这属于一种分组方式,还有另外两种,一种是-1、1、(2、3、4、5。。。),3组;另一种是-1、(1、2、3、4。。。)2组,我做筛选的时候如果要选择后面括号多种组合的话需要点选多次,有没有一种类似对切片器组合功能的设置,目前我用的方法是在板数名称表里另外加了两列分别分组,这样有点浪费资源,不知道有没更好的方法,谢谢~
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-3-28 23:40 , Processed in 0.052210 second(s), 11 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表