2023-07
21

外部数据查询

By xrspook @ 9:37:46 归类于: 烂日记

近几天都沉醉于做Excel的数据合并,实际上就只是两个表,一个是交易情况另外一个是出入库明细。出入库明细是一个大表,交易情况里面除了交易本身以外还有货款明细以及损溢明细,所以原始表格合计有4个。相对于我之前纠结过的那些东西来说,这几个表有一个数据是必定唯一的,也就是交易情况里面的合同号。损溢明细里一个合同号可能出现多次,货款明细里一个合同号可能会出现多次,出入库明细里一个合同号绝大多数情况会出现多次。所以这些表里,交易情况的合同号是1,其它是多。以前在Excel里面用Power Pivot建立表的关系的时候,我是直接把某一个列拉到另外一个表的列建立关联,但这一次我发现交易情况和损溢明细无论我怎么拉,PP都默认,一是损溢明细,多是交易情况。直到昨天我才知道原来建立表关系的时候是可以不用手拉的。理论上我已经把PP的界面看过一遍又一遍,不仅仅是软件本身,关于它的书我也看过一些,但是好像在昨天之前我就从来没有发现原来有那么个界面。1对多到底谁是一,最重要的一点是哪个表先选定,后选定的表在Excel的Power Pivot里默认是多,但如果二者关系不成立,会建立不了关系。我不知道Excel的PP为什么会这么设定,理论上应该还有1对1,多对多之类的关系,显然在Power BI里面就有,但Excel就是这么神经。用Excel PP默认给的那个1对多的关系,在用透视表的时候,无论如何都得不出我想要的结果,但实际上我想要的那个结果我想了半天也都是合理的。结果手动建立正确的1对多关系后,透视表的数据就正常了。之前,我在Excel的PP上耗了好长时间研究其它东西,之所以有些坎无论如何迈不过,无论如何觉得有毛病我猜是不是也跟这个1对多的关系自动默认给我生成错了。

在玩PP之前,其实我已经折腾了一天的Power Query,之所以从PQ转投PP,是因为我发现虽然我的原数据很简单。最大的那个表才几千行,载入以后进行初次筛选,剩下700多行,另外的那些表只有几行和几十行。但即便这样,它们关联了以后,做全体刷新的时候依然会出现卡顿,依然会偶尔告诉我数据不是我期待的那个格式,所以刷新失败,但实际上当我重新再去刷新失败的那个表,又会成功。在不修改参数的情况下刷新同一个查询,有时都能刷出来,有时一些刷不出来,有时刷的时间要长一点,有时刷的时间挺短,到底这是为什么?各种缓存的参数我都试过了,各种PQ本身设置相关的参数我也试过了,但是PQ自己就是这么不稳定。快的时候可能5秒就出来了,但是慢的时候可能30秒都出不来。折腾了我一天后,当我用PP做出跟PQ完全一样的功能的时候,发现PP的稳定性好很多,几乎不会出现数据刷新失败,大多数情况下,PP刷新需要10秒钟,但是它俩最大的区别在于PQ这个查询文件只有50KB,但是PP的查询文件是800KB,之所以这样,是因为实际上PP把整个原数据都抓过来了。考虑到这些查询文件我肯定会在不同的机器上运行,所以虽然PP可以直接连接某个外部源文件,但我还是选择先在PQ里做一个动态接口,然后再转到PP的模型上,同时在一开始的时候让PQ把3000多条数据出筛成700多条。

10秒钟和不知道到底要多少时间,以及50KB和800KB这两个答案我都不太满意。所以接下来估计我会尝试一下python方案。

2021-04
26

16个仓

By xrspook @ 8:40:39 归类于: 烂日记

昨天破了个记录,单位一共有16个仓发生作业,之前的记录是14个仓。一下子就把这个极限提升了两个仓,有点牛逼。对某些单位来说,他们甚至没有16个仓这么多,而我们一天就要搞16个仓,虽然有些仓可能量不大,只有一两台车。车船作业全部都在加起来才138。之所以所以有这么多,其中很大一部分都是集装箱卸货。如果我们做的不是集装箱卸货,而是集装箱装货的话,估计作业的量会少很多,但是作业的时间会更长。

现在我不奢望晚上11点前能做到全部都结束,我只希望在我需要查看系统数据的时候,我不需要翻四五个表才能找全我要的东西,因为我要把握的是现在正在作业的量以及即将作业的量,那些全部都是变动的数据,当我查完四五个表,数据肯定已经不再一样了,当我查到最后一个表的时候,第一个表的数据已经发生变化。于是当我急着要知道结果的时候,实际上我根本无法知道结果。

我一直都觉得浪潮做出来的系统很垃圾,但一定程度上为什么会这么垃圾呢?为什么他们给我们这个方案我们就要接受呢,理论上是有一个界面可以反映东西,但是那个界面居然把所有数据都汇总在一起,而且是以图标的方式显示,这到底是给谁看的呢?纯粹给领导看的吗?反正不是给我看,因为某些细节、我想要的东西根本看不出来。大概领导不会看那个界面,谁会看那个界面呢?大概只有那些完全不懂行的客人。我只想知道那个流程是什么,但是看到那个图标,我还得进行联想,然后才能得出那是一个什么流程,这是在给小学生猜谜语吗?我不知道这种思路是我们提出的,还是浪潮的人蹦出来的想法,反正我觉得非常反人类。昨天我就给我们这里的程序员下了个定制查询的需求,有了那些数据,我就可以通过一个表得出我想要的所有,不仅仅是我想要的,任何人想要、多大的颗粒度,都可以做到。还记得大概一两年前他们找我写数据中心的技术需求,基本上我是用数据透视表的思维去想象的,但跟现在比起来,那时我的透视表示为或许还差那么一点点。我非常肯定的是,那时候那帮人根本不知道我在说什么。数据透视表是什么呢?我给你所有要素,你可以根据你的需要的维度得到不同的结果,但是浪潮那帮人只会在一个大屏里面做既定的模式。一个是活动的,一个是写死的,这是根本的区别,还有一个是写死的东西没有任何颗粒度可言,颗粒度完全被固定下来,我怎么可能挖掘得到我想要的东西呢?又或者他们觉得如果我想在数据里找出某些东西,我就不应该是在那个板面里找,而是应该通过其他途径,但数据无法导出,我可以用什么途径去找我想要的东西呢?图形表达出来的东西不是我想要的,我想要的数据没办法查询得到,这样的系统还要来干嘛?

每次当我不得不在好几个表里面兜兜转转查询的时候我都会无数次诅咒浪潮。

2020-09
19

我喜欢Excel

By xrspook @ 20:53:41 归类于: 烂日记

Excel的一般公式,我比较熟练,一些高级公式的叠加,我需要找教程套用,但起码我知道那是可以做到的。一般的数据透视表,是我一直以来用得相对来说最顺溜的东西,至于高级的数据透视表,也就是超级数据透视表我几乎不了解它的高级用法。在数据的筛选查询方面,之前我用的是公式,而近期,我知道了有Power Query这种神器。在这之前,我已经知道可以SQL语言查询。去年我开始系统学习了Excel VBA。这让我大大提升了某些工作的效率。当然这是非常有针对性的。对我来说,要开发一个VBA脚本需要好些时间,并不是一写就能用的那种类型,期间要经过不少修改。所以其实总的来说,对Excel的了解我还是比较全面的。

也正是因为有这样的经历,所以当我遇到某些综合性的问题的时候,当别人把目光主要集中在某个他们很熟悉的版块的时候,我会凭借我的直觉找问题,而不局限于他们觉得出问题的那个地方。比如在把SQL查询跟VBA结合的时候,别人会把精力放在SQL查询有没有写错上面。SQL有没有写错,其实我根本没看,对我来说那些东西太长了,看不懂,而且那个人写的VBA脚本缩进很有问题,看得我很郁闷,所以我就更加没有心情在那里琢磨。那既然能计算出一个正确答案,说明那个查询语句应该没什么问题。也正是因为写脚本的人的那堆东西格式比较混乱,所以我有理由怀疑那是拼凑起来的脚本,因为居然在脚本的开头连变量的定义都没有。为什么VBA里没有进行规范的变量定义,后面也居然可以照样使用呢?这让我有点惊讶,毕竟这是个VBA,不是python。C语言里,如果不先进性变量定义,后面根本用不了。在我记忆之中,VBA的变量在使用之前是需要先定义的。最终我发现是那个人的脚本之所以出错,是因为某些语句的套用搞错了,为什么他会把那个东西放在里?我觉得大概是因为他没有明白他一开始做的那个with是什么意思。但如果你问我为什么他把那堆东西套在里面会出错,而且是某些地方出错,不是全部出错,我回答不出来。理论上这种错误能在恰当的调试中体现出来,但实际上,VBA的调试句子我还用得不算很熟练。或者你会说,这是因为我的VBA学习还不够系统化,但我觉得我已经用了学习VBA最靠谱的那本书了。可以肯定的是,一些很基础的调试方式我还没掌握,如果我学会了那些东西,我可以大大提升我的调试效率,把错误定位得更精准。VBA脚本这种东西,我觉得最根本的是必须得理解。如果纯粹是各种套用,基础功能的确可以快速实现,但是当遇到的问题比较综合的时候,就会出现一些他们完全料想不到的状况。那种状况有可能与脚本本身的内容无关,与脚本的结构有关。

相对来说,Excel里我用得最弱的是高级公式的套用。如何用一个非常复杂的公式解决一些高端的问题是我一直以来都不大上心,或者说记得不够好的部分。非常复杂的公式,尤其是数组公式,虽然能解决一些神一般的问题,但问题是,其实那些公式需要耗费大量资源,所以在处理大数据的时候,非常有可能出状况。我是一个实用主义者,能做到某个功能,但是做起来的效率不高不好,我为什么要选择那种只是看上去很炫酷的方式呢?情况就像用VBA解决同一问题的时候,如果只是在工作表层面处理和先用内存数组处理再在工作表层面表达,效率千差万别。

Excel对我来说,除了要最终结果,过程也得追求高效和方便。

2019-06
14

单机blog梦

By xrspook @ 8:46:14 归类于: 烂日记

昨天blog终于恢复了。在域名那里重新绑定服务器以后,一切终于恢复正常。从6月3号起发现上不了,到6月13号终于恢复整整10天时间,我落下了非常多的东西。虽然中间的那些东西我都有记录,所以只要耐心一点,我都可以补上,但显然一次性补17篇东西也是非常痛苦的一件事。经历过这一次以后,我有了自己在电脑上也保留一份存档的念头。是否有什么软件可以充当简单的数据库,实现blog的效果呢?对我来说,我并不需要界面漂亮,最重要的是记录下文字本身,需要的时候能足够快到达。需要记录的关键信息无非是文章标题、文章正文、记录的时间,文章的分类,以及关键词。

我可以通过标题、时间、正文或者关键词进行搜索,而文章的分类列表允许我把所有那个目录上的文章以某种排序方式展示出来。理论上说,WordPress的数据库结构大概也就这个样子。对我自己个人来说,界面不重要,所以等于无需进行前台版面的设计。要用什么东西实现这个功能呢?在正文里,我需要进行一些格式的设置,通常来说纯文本就足够了,但是某些词句如果能用到加粗和加入超连接会更好。这个东西也必须得默认可以插入图片和视频,图片是内部引用,视频其实就是一个超链接,但是可以在正文展示播放。

我不知道我的这个构想是不是实际上就是一个WordPress的后台结构。这其中没有非常严密的逻辑关系,用不到计算。Office的Wordd能实现格式的功能,而且我觉得格式个功能过于丰富了。Office有他们的数据库软件Access可以实现任何我想到想不到的数据存储及查询,但问题是即便我把数据存储进去,我查询正文出来的东西可能只是代码本身,而不能把某些代码转化为可见的格式。

在我WordPres的后台管理界面,有数据导出功能,但到现在为止,在这个我用了9年多的系统里,我还没试过做数据导出。这让人有点心惊肉跳,因为从2004年高考结束以后,加上在BlogBus的数据,我已经有15年的东西了。我已经不记得从BlogBus搬出来的时候我带着多少数据走人,也不知道在过去投奔WordPress的这几年我又积累了多少。可以预知的是即便全部都是脚本和文字,也一定内容相当丰富。如果导出的只是文字,而且又经过压缩,我估计数据的大小应该不会超过100MB。我不知道,如果我用导出功能会有什么后果。因为理论上,数据库的某个存储单元是有大小限制的,比如我的blog,附件大小最多2MB,所以如果那个导出的数据是一个超过50MB的东西,导出的时候会有什么后果呢?

前几年当Dropbox还能在中国不爬梯子使用的时候,我的网友每天都会把数据库备份,然后自动同步到我的Dropbox账号,但不知道从什么时候开始,已经不这么干了。我的房东是一个IT人士,所以他肯定知道数据备份的重要性,即便他不把那个同步到我的Dropbox,肯定他自己也会同步到某个地方。我不担心在他的管理下,我的东西会有什么问题,而且即便某天真的出状况了,其实每天blog的正文我都是有保存的,缺失的只是每天我发布上去时才写的分类、关键词以及网友的评论。

我总觉得应该有软件又或者有几个软件的联合体能实现我想要的功能。如果真的没有,或许以后某天我会自己整一个。

2019-03
23

不只是中文

By xrspook @ 19:34:46 归类于: 烂日记

还记得大学的某个专业课的老师跟我们说,认真读书,然后找份好工作是为了以后当我们想吃什么的时候,我们可以随心所欲买,而不会有各种约束。当时我学的那门课叫做感官评价。那是很重要的一门食品专业方面的课程,虽然只是选修课,但是我却从中学到了很多。

这门课不需要进行闭卷考试,但是却要交一份集合了几种感官评价方式的资料收集。这其中就包括了翻译,因为我们收集的资料必须是外语的,然后我们需要把核心部分翻译为中文,不需要全文翻译,只需把核心的部分翻译出来就可以了。那门课之前我们的确已经学过了各大数据库的文献检索,但那是我们第一次真的主动自己找那些我们需要的评价方法。这就需要我们要准确把握关键词。那也是我一次也是主动阅读英语论文,他们的版式和思路让我着迷。这种训练在后续完成毕业论文的时候帮了我大忙。这是一项非常重要的技能。

一直以来我都觉得搜索能力非常重要,虽然我一开始上网的时候已经掌握了这个,这也是我接触的最多的。如果不是Google被墙,大概现在我的生活会很不一样。在学校的时候查阅外语文献我们还有校园网,虽然里面的资源可能会有点旧。离开了大学以后要在找那些东西实在太难了,但实际上不只是专业学者需要知道那些东西,普通人也应该可以查阅得到,只不过是下载的时候可能要额外付费而已。但实际情况是不在校园网,外人甚至连进入那个文件检索的平台,于是离开学校后我们就只能回到一开始那样靠普通搜索引擎里查找我需要的东西。我一直觉得专业的东西跟生活是不脱节的。当然,专业尤其是高精尖的生东西肯定必须源于生活高于生活,但那些东西不是在钻牛角尖,不只是为了写论文去做研究,而是因为我们能看出那真的很有意义。说不准马上能帮助人类什么忙,但是在恰当的时候那一定会起到恰当的作用。起码在我做研究的时候,我是这么觉得的,如果连我自己都觉得那没有意义那只是在浪费时间,那只是在应付式的完成任务,我无论如何都不能打起精神去干那种事。我或许会直接跟老师拍板说我不干这个,的确我也干过这种事。质疑老师布置下来的任务的学生绝对是个神经病。遇到这种学生的时候,老师除了生气还有能力祭出大招让学生心服口服的,那更也是非常厉害的存在。我觉得做大学毕业论文的时候,我和我的导师就是这样。现在回想起来觉得这非常不可思议。正是因为曾经做过这种非常规的事,这样的经历足以让我铭记一辈子。

后来我明白到不一定非得在高精尖层面上突破才算厉害,把一些普通的事做到极致其实也很了不起,对我来说这很重要。比如我看过一部翻译得很一般的好电影,我下定决心把那重新翻译,而且我还真做到了,那成为了我的处女作。作为当事人我不能评价我的翻译一定比我之前看过的那个好多少,实际情况是的确已经好了一些,但具体有多少我不知道,最重要的是我曾经为了那个竭尽全力,我很自信,我不后悔。对别人来说这是微不足道事,但这对我来说,做这种事让我感到很幸福满足。认真地竭尽所能的感觉非常好。

我的世界不只是在中文领域。

© 2004 - 2026 我的天 | Theme by xrspook | Power by WordPress