成长手记72:请不要说我“学习能力强”(升级版)

年后一直在写tableau书稿,博客和视频课程长期没有更新,五月初大面积更新。 最近和好多人聊天,大课都说我“学习能力非常强”,刚开始我还不好意思,后来觉得勉为其难,如今听上去反而难受。 为什么? 等你们说我“学习能力超强”时,不仅伤害了我,也伤害了自己。 言语中掩盖了我比更多人都努力的现实,学习能力是前进的渴望,而非自带的能力; 为自己的不努力找到了完美的借口,把不优秀视为是自身的能力欠缺。 比如最近为了写Tableau的书,开始了就不能回头,而且总想写的完美一点,更完美一点,结果就是日夜兼程,万分辛苦。 从去年12月陆陆续续开始,当时定了每天3000字的任务,起初很少能完成,“幸好”疫情封闭在家,客户也不要求去现场服务了。从腊月三十到正月每天都在写稿子。 当很多人凌晨未起时,我在写稿子; 当很多人刷微博看抖音时,我在作图、后期处理; 当很多人冒死走亲戚时,我在修订章节; 当很多人临睡前刷公众号时,我再写下一章; 当很多人夜行游戏人间时,我再作图、后期处理 当很多人睡着了做美梦时,我在修订章节…… 当很多人开始做噩梦时,我刚刚躺下…… 再过一个月吧,我的书上线开售了,会有人说,“哇,吴玉朋学习能力真强,这么短时间,都出书了。哎,你看我们……” 每想到这样的场景,我就觉得很多人来走一遭,使命大概就是享受人间幸福吧。 而我只是想留下一点点东西 我哪里学习能力强,我只是更努力罢了,而一连串的努力,总应该留一下人生的痕迹   Apr 1, 2020 更新·青岛   今天自己读到自己的日记,感觉像是看到了历史的自己。 今天是2021年1月10日,我的第一本书已经出版六个月,而且正在第四次印刷。京东正在史无前例的做半价(好在我和出版社的版权收益都不受影响),昨天还进入了互联网销售榜前60名(目前这个是24小时动态)。 而且,我的新书已经写完了一小半,本来计划三月份交稿,最近发现效率远远超过了我的想象,昨天写完了时间序列一章,再往前两天写完了排序一章,最近每天都能完成五六千字的书稿和配图。 按照这个进度,四月份新书就能发布了,书名暂定《业务可视化分析:从问题到视图》副标题叫 Tableau your data 恐怕等我新书上架,很多读者还没读完我的第一本呢。 等我在分析这个领域走到巅峰,分析不能制约我思考的流畅性,我就可以考虑进军一个具体的细分领域了,比如金融,或者零售中最重要的定价与营销。 新年快乐~ 最近在读蔡志忠老师的《我命由我不由天》非常好 Jan 10, 2021

【tableau server】分布式艰难安装体验

  夜深,紧急记录: 1、安装说明配置双节点,频繁出现下面的错误: java.lang.RuntimeException: java.net.UnknownHostException: bogon: bogon: 未知的名称或服务 从相关的log文件查询,发现时无法到达对方的host主机。按照官方给出的提示,修改host文件:需要在两个主机的host文件中登记对方的映射名称; 2、防火墙设置: 按照官方说明,配置端口。     3、还有一种错误,直接无法到达对方主机 出现这个错误,与网络有关,比如有人说“将 /etc/selinux/config 中的enforcing 模式改为disabled, 然后重启”,实际上这个不能动,我改为disabled反而无法互通。 最后关闭了防火墙。     4、还原备份,竟然必须把文件移动到默认的文件夹,神操作 好多次失败后的教训

Prep2020拥抱LOD:Fixed LOD

前沿:迎接Prep 的fixed LOD吧! ——我的Tableau书稿(非最终版本) 1、聚合的必要性和用法 如果要我选一个Prep Builder远胜于desktop的一个功能,我愿意把这个殊荣授予“数据聚合”。前面我们说,数据分析的关键是分析问题所在的数据层次,并将其聚合。这个过程在Desktop中是通过日期切片和度量聚合来完成的,不过这个聚合依然是从数据库的明细数据中聚合而来。如果我们要定期给CEO展示不同品类和总公司的销售汇总,每次都从千万甚至过亿行的数据聚合,会给数据库过多的压力。Desktop通过设置数据提取以及增量刷新,尽可能减少数据库计算的次数,提高访问性能。但如果我们要在很多个分析场景中反复使用这个对应的数据聚合呢? 此时我们就应该求助于Prep,作为敏捷ETL工具,Prep可以随时“按需聚合”,聚合的结果可以作为独立的数据源被反复引用,如果结合数据提取,那么就进一步提高数据被重复使用的效率。可见,prep可以被作为“流程化的数据仓库”来使用,prep可以创建一个反复使用的数据流程,按需创建、修改灵活、引用方便、支持提取,因此可以大幅度提高数据的利用效率、减轻数据库的计算压力。在在这个过程中,关键的功能就是聚合。 前面我们说,聚合的背后是层次。因此创建聚合务必清晰计算的数据层次,是创建每个区域、每天的销售聚合,还是创建每个门店、每个品类、每天的销售聚合?按需创建的第一步是清晰需求。假设我们要将此前剔除退货后的正常订单,在以下的层次上做度量的聚合:每个类别(category)、每个子类别(sub-category)、每个细分(segment)、每个月的销售额、利润、数量和折扣。首先在此前的流程节点上添加一个新节点“聚合”,如下图所示。 接下来就要点击新增加的“聚合”节点,设置聚合字段了。代表层次的是需求中的维度字段,而聚合的通常是度量字段,将二者分别拖拽到右侧的分组字段和聚合字段区域,维度会展开为分组,度量会按照维度的分组聚合为数字,Prep Builder即可完成聚合过程。 在聚合中有一个关键维度是日期,日期是非常特别的字段,它不仅自带层次结构,而且具备度量的连续性质。因此,日期既可以用来做聚合的层次,还可以用来创建坐标轴。在这里,我们要在“每个月”的层次上聚合多个度量,不过当我们拖入日期(order date)后,注意,默认是以“摘要”的方式显示,因此看到的五行数据完全不是总体,而只是按照年度的摘要,而order date旁边的“889”才是真正的数据唯一值的数量。 因此,我们需要把日期从明细日期(年月日时分秒),提高到更高的层次(年月),这里就需要点击“分组”,调整日期的层次。也就是依据需求中的日期层次结构分组,而非按照数据源的明细分组。这里我们要聚合到“每个月”,比如2019年1月、2019年2月,需要选择“月开始日期”,也就是把每个月内的所有日期都截断到月,后面我们讲解日期函数时,会特别说明这个选项背后的日期函数——datetrunc()函数。  之后,我们把需求中的度量字段拖入右侧的度量字段即可完成。务必通过聚合后各个字段的行数来判断数据聚合的准确性。 2、在Prep中做聚合时,特别注意几点 (1)维度才决定详细级别,因此加入度量并不会更改数据的详细级别,不会增加数据的行数,只是从此前的“4个字段,1399行”改为了“8个字段,1399行”;度量只是增加了数据的标记数量。 (2)维度也可以加入右侧的聚合字段,因为分类字段是可以被聚合的(计数、最大最小值),比如我们看每个月有多少订单,可以把订单ID加入聚合字段,比如要看每个月有多少客户购买,可以把客户加入聚合字段(计数不同是客户数,计数是购买人次)。虽然技术上,度量也能加入分组字段,但通常没有实质意义,除非是像“年龄”这样身兼维度和度量两个类型的度量。 (3)聚合还可以间接起到移除字段的作用,相当于SQL查询,既减少了查询量,又实现了查询过程中的聚合。熟悉SQL的朋友,可以参考SQL语言中的group语法;实际上,这里之所以被称之为“分组”,大概率就是取了SQL中“group”之意。 (4)很多专业数据库的数据仓库,其实就是把频繁的聚合查询,以定期运行的方式提取到本地做了缓存,专业术语大概是“物化视图”,就是把定期把结果转化为实际存在的数据表,而非虚拟的查询过程。借助于Prep Builder的流程创建和Prep Conductor的流程发布功能,Tableau可以实现数据仓库的相关功能,并且可以在查询和物化视图之间随时切换,从而兼顾数据的实时性和读取效率。 3、迎接Fixed LOD新功能 在2019年拉斯维加斯的TC大会上,Tableau剧透了2020年的一个重大更新,就是把Desktop中Fixed LOD表达式迁移到Prep中来,这是我最为期待的功能之一。就在本书即将定稿之时,这个功能如期而至。 Fixed是“指定”之意,LOD是详细级别、层次,Fixed LOD表达式本质是指定层次的聚合,即Aggregation on fixed LOD。上面的“聚合”也是指定层次的聚合,二者有什么区别呢? 简单的说,通过Prep的“聚合”一次只能完成一个层次的聚合,而借助于Fixed LOD聚合,则可以在已有详细级别之上,指定其他层次完成聚合,因此fixed LOD完整意义是指定独立的层次完成聚合,这里的独立层次,是相对于当前数据明细级别的其他层次,即Aggregation on external fixed LOD。 当大家学习完最后“LOD表达式”章节,会更加深刻地理解这个过程。 比如在商品交易为明细级别的超市数据中,我们想计算每个用户的首次购买日期。可以假想在Excel的明细中增加一个辅助列,不管这个客户购买过多少次交易,辅助列都显示它的首次购买日期。如下图所示: 在Desktop中,在视图详细级别(商品)上增加另一个完全独立的详细级别(客户)的聚合,只能通过fixed LOD表达式来实现,不过这个高级计算对于业务人员而言过于晦涩。IT或者少数高级分析师可以在数据整理时加入到数据整理的模型中来,简化其他人的操作,这就需要Prep了。 此前,Prep也能通过聚合间接实现上述的功能。原理是先计算每个客户的最小订单日期(聚合),然后再通过连接(join)把聚合结果关联到原数据后面。如下所示: 而在Prep Builder2020.1版本中“fixed LOD”的新功能,可以不经过聚合和连接两步操作,直接指定详细级别完成聚合,从而适合所有人轻松完成独立详细级别的聚合。 只需要在“指定详细级别”的字段,创建出计算字段即可。不过刚推出的版本翻译为“固定LOD”,会让很多人不知所然,如果改为Desktop中通用的Fixed LOD,有助于大家更好的理解。 在设置界面,Tableau设计非常友好,时间用坐标轴,最小值和最大值分别点击两侧即可快速拾取。注意左侧历史记录中的表达式,与后面的fixed LOD语法完全一致。注意通过字段右侧的数量来判断,和上面先聚合再连接(Join)的结果是一致的。 与Fixed LOD同时加入Prep计算的,还有高级计算之排名(rank)。这就可以把一部分复杂的数据整理过程从可视化环节前置到数据整理环节,更好的发挥专业分析师和IT部门的技术优势。 随着技术的平民化,分析师和企业就可以“用金钱换取时间”,从而获得竞争的优势。 摘自我的书稿草稿,敬请期待